Jenkins 配置参数构建

发布于 2024-02-12 07:55:22 字数 6018 浏览 30 评论 0

一. 静态参数

在流水线构建时,通常我们希望用户自定义需要构建的分支,就比如这样:

这个只需要我们在配置流水线时,添加参数配置即可:

第一步:勾选 This project is parameterized 选项。

第二步:添加 Choice Parameter 类型参数,配置 参数名称 和 参数选项。

这里参数的选项值在配置时就已经确定了,所以我们称之为“静态参数”。

这样我们在构建的 pipeline 中就可以使用这个变量进行构建了:

node{
    stage("代码检出"){
        dir("/opt/jenkins-git/${JOB_NAME}"){
            git branch: '${branch}', credentialsId: 'd1035200-6318-47e5-bd94-87ea83ea60ed', url: 'https://xxxx.com/xxxx/gift-web.git'
        }
         
    }
    stage("构建 Maven"){
        dir("/opt/jenkins-git/${JOB_NAME}"){
           script {
               sh 'mvn clean package'
           }
        }
    }
    stage("构建 Docker 镜像"){
        dir("/opt/jenkins-git/${JOB_NAME}"){
           script {
               sh 'docekr build ...'
           }
        }
    }
    stage("镜像推送"){
        dir("/opt/jenkins-git/${JOB_NAME}"){
           script {
               sh 'docker push ...'
           }
        }
    }
    stage("邮件通知"){
        
    }
}

二. 动态参数

有些情况下静态参数无法满足我们的应用场景,我们需要从第三方平台通过接口获取参数选项,例如我们需要在发布的时候指定我们需要发布的镜像版本:

镜像版本无法在配置流水线时确认了,只能通过第三方接口获取,结构类似于这样:

{
    "data": {
        "images": [
            "gift-web-20230103-ds2nd1oc",
            "gift-web-20230103-cd4ea4bf",
            "gift-web-20230102-zjsg7wga",
            "gift-web-20221223-hfu27ska"
        ]
    }
}

动态参数需要 Jenkins 安装 Extended Choice Parameter 插件:

安装好插件以后,在新增参数时,就会多出 Extended Choice Parameter 参数类型:

配置好参数名称和描述:

选择 Basic Parameter Types

点击 Choose Sources for Value 按钮,配置 groovy 脚本,从第三方接口获取选项值数据,脚本如下:

import groovy.json.JsonSlurper
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

 public static String doGet(String httpurl) {
        HttpURLConnection connection = null;
        InputStream is = null;
        BufferedReader br = null;
        String result = null;// 返回结果字符串
        try {
            // 创建远程 url 连接对象
            URL url = new URL(httpurl);
            // 通过远程 url 连接对象打开一个连接,强转成 httpURLConnection 类
            connection = (HttpURLConnection) url.openConnection();
            // 设置连接方式:get
            connection.setRequestMethod("GET");
            // 设置连接主机服务器的超时时间:15000 毫秒
            connection.setConnectTimeout(15000);
            // 设置读取远程返回的数据时间:60000 毫秒
            connection.setReadTimeout(60000);
            // 发送请求
            connection.connect();
            // 通过 connection 连接,获取输入流
            if (connection.getResponseCode() == 200) {
                is = connection.getInputStream();
                // 封装输入流 is,并指定字符集
                br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
                // 存放数据
                StringBuffer sbf = new StringBuffer();
                String temp = null;
                while ((temp = br.readLine()) != null) {
                    sbf.append(temp);
                    sbf.append("\r\n");
                }
                result = sbf.toString();
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭资源
            if (null != br) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (null != is) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            connection.disconnect();// 关闭远程连接
        }
        return result;
    }

def jsonSlurper = new JsonSlurper()
def json = doGet("https://95933b73-c0a2-4fbf-aaec-1c7a5a0ad5bc.mock.pstmn.io/images");
def object = jsonSlurper.parseText(json)
return object.data.images

在脚本里定义了 doGet 方法,用于封装 HTTP 请求,然后调用该方法从第三方接口中获取具体值并返回。

第三方接口数据:

保存流水线后,我们点击构建按钮,就会执行这个脚本拉取选项数据并渲染,但是刚配置好的脚本,会提示脚本未审核:

点击链接,进入审核页面:

点击 approve 同意即可。

此时我们再次点击构建按钮,即可看到第三方接口返回的参数选项:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

做个ˇ局外人

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

苍风燃霜

文章 0 评论 0

悸初

文章 0 评论 0

撧情箌佬

文章 0 评论 0

森罗

文章 0 评论 0

lyn1245

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文