共计 4274 个字符,预计需要花费 11 分钟才能阅读完成。
这篇文章给大家分享的是有关 Jenkins 集群下如何创建 pipeline 任务的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。
环境信息
整个集群环境一共有三台电脑,信息如下:| 主机名 | IP 地址 | 作用 | |–|–|–| | master | 192.168.133.131 | Jenkins 集群的 master 节点,提供 web 服务 | | agent1 | 192.168.133.132 | Jenkins 集群的一号工作接节点,标签是 font color= blue maven /font | | agent2 | 192.168.133.133 | Jenkins 集群的二号工作接节点,标签是 font color= blue gradle /font |
实战内容
本次实战要体验 Jenkins 集群同时执行两个任务,都是编译构建 GitHub 上的热门开源项目:
在 agent1 上编译和构建 spring-cloud-alibaba,再通过 scp 命令将构建结果传输到 master 电脑的 font color= blue /usr/local/build_result /font 目录下;
在 agent2 编译和构建 spring-framework,再通过 scp 命令将构建结果传输到 master 电脑的 font color= blue /usr/local/build_result /font 目录下;
准备工作
要做以下准备工作才能顺利执行后续的任务:
在 master 电脑上创建文件夹 font color= blue /usr/local/build_result /font
配置 maven,在 Jenkins 网页上选择 font color= blue Global Tool Configuration /font,如下图红框所示:
新增一个 maven 配置,名为 font color= blue mvn-3.6.2 /font,然后点击“保存”按钮,如下图:
agent1 和 agent2 上用 scp 命令传输文件到 master 上的时候,第一次 ssh 要在控制台输入 yes,为了避免执行任务的时候出现这个等待输入的操作,我们去手动执行一遍,后面就再也不用了,ssh 登录 agent1 之后,执行以下命令进入容器:
docker exec -it agent /bin/bash
执行命令 font color= blue ssh root@192.168.133.131 /font,这时候控制台提示输入 font color= blue yes /font 或者 font color= blue no /font,请您输入 font color= blue yes /font,再根据提示输入 master 的密码,此时登录 master 成功:
[root@agent1 16]#docker exec -it agent /bin/bash
root@82eb8cfec0a6:/# ssh root@192.168.133.131
The authenticity of host 192.168.133.131 (192.168.133.131) can t be established.
ECDSA key fingerprint is SHA256:DPE2nldWHiOhC4DB9doy7jPWNZVup6XFZ+sR2i1gqz8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 192.168.133.131 (ECDSA) to the list of known hosts.
root@192.168.133.131 s password:
Last login: Sat Nov 16 19:59:42 2019 from 192.168.133.132
此时您是在 agent1 的容器中 ssh 登录了 master,所以要连续输入两次 font color= blue exit /font 命令才能返回到 agent1 的控制台;
在 agent2 电脑上也执行相同的操作;
至此,准备完毕,可以创建任务了;
编译构建 spring-cloud-alibaba 的任务
spring-cloud-alibaba 是个 maven 工程,要用 maven 来编译构建:
在 Jenkins 网页上,点击下图红框位置,创建一个任务:
如下图,创建名为 font color= blue spring-clolud-alibaba /font 的 pipeline 任务:
下图红框位置就是输入 pipeline 脚本的地方:
在上图红框位置输入以下内容:
pipeline {
agent {
label maven
}
tools {
maven mvn-3.6.2
}
stages { stage( Checkout) {
steps { echo 从 GitHub 下载 spring-cloud-alibaba 工程的源码 (2.1.1.RELEASE 归档包)
sh wget https://github.com/alibaba/spring-cloud-alibaba/archive/v2.1.1.RELEASE.tar.gz
echo 下载结束,解压归档包
sh tar -zxf v2.1.1.RELEASE.tar.gz
}
}
stage(Build) {
steps {
echo 开始编译构建
sh cd spring-cloud-alibaba-2.1.1.RELEASE mvn clean package -U -DskipTests
}
}
stage(Save) {
steps {
echo 将构建结果传送到存储服务器
sh cd spring-cloud-alibaba-2.1.1.RELEASE/spring-cloud-alibaba-nacos-discovery/target sshpass -p 888888 scp ./*.jar root@192.168.133.131:/usr/local/build_result
echo 传送完毕
}
}
stage(Clean) {
steps {
echo 清理 Maven 工程
sh cd spring-cloud-alibaba-2.1.1.RELEASE mvn clean
echo 清理完毕
}
}
}
}
点击底部的 保存 按钮后,点击下图红框中的 立即构建 即可开始任务:
点击下图红框中的红色圆球,即可跳转到实时输出任务信息的页面:
页面实时输出构建信息:
主页面可以看到是 agent1 在执行任务,如下图红框所示,可见 pipeline 脚本中的标签已经生效了,将任务调度到标签为 font color= blue maven /font 的节点去执行: 编译构建 spring-cloud-alibaba 工程是个费时的操作,我们现在去创建另一个任务:编译构建 spring-framework
编译构建 spring-framework 的任务
spring-framework 是个 gradle 工程,不需要准备 gradle 环境,在执行编译命令时会自动下载 gradle 工具:
创建名为 font color= blue spring-framework /font 的 pipeline 任务:
pipeline 脚本如下:
pipeline {
agent {
label gradle
}
stages { stage( Checkout) {
steps { echo 从 GitHub 下载 spring-framework 工程的源码 (master 分支)
checkout([$class: GitSCM , branches: [[name: */master]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: https://github.com/spring-projects/spring-framework.git]]])
}
}
stage(Build) {
steps {
echo 开始编译构建
sh ./gradlew build
}
}
stage(传送构建结果) {
steps {
echo 将构建结果传送到存储服务器
sh cd spring-core/build/libs sshpass -p 888888 scp ./*.jar root@192.168.133.131:/usr/local/build_result cd ../../..
echo 传送完毕
}
}
stage(Clean) {
steps {
echo 清理 gradle 工程
sh ./gradlew clean
echo 清理完毕
}
}
}
}
立即执行此任务,可见任务已经被调度到 agent2 上去执行了,此时的 agent1 和 agent2 正在同时执行任务,如下图:
查看构建结果
上述两个任务在构建成功后,都会通过 scp 命令将构建结果传送到 master 的 font color= blue /usr/local/build_result /font 目录下:
[root@master build_result]# ls
agent.jar spring-cloud-alibaba-nacos-discovery-2.1.1.RELEASE.jar spring-cloud-alibaba-nacos-discovery-2.1.1.RELEASE-sources.jar spring-objenesis-repack-3.1.jar
spring-cglib-repack-3.3.0.jar spring-cloud-alibaba-nacos-discovery-2.1.1.RELEASE-javadoc.jar spring-core-5.2.2.BUILD-SNAPSHOT.jar
br 至此,Jenkins 集群下的 pipeline 实战就完成了,借助 pipeline 的标签参数可以控制任务的调度节点,实现多任务同时在多节点执行;
感谢各位的阅读!关于“Jenkins 集群下如何创建 pipeline 任务”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!