关键词:
Jenkins Job构建
jenkins安装见https://www.cnblogs.com/wengshaohang/p/12272952.html
Freestyle Job与Pipeline Job区别:
Freestyle Job需要在页面添加模块配置项与参数完成配置;每个Job仅能实现一个开发功能;无法将配置代码化,不利于Job配置迁移与版本控制;逻辑相对简单,无需额外学习成本。
Pipeline Job匹配持续集成与持续交付的概念;所有模块、参数配置都可以体现为一个pipeline脚本;可定义多个stage构建一个管道工作集;所有配置代码化,方便Job配置迁移与版本控制;需要Pipeline脚本语法基础。
实验环境:
jenkins服务器: 192.168.125.224
gitlab服务器: 192.168.125.222
修改/etc/hosts文件,2台服务器都要修改
[root@gitlab ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.125.223 test.example.com
192.168.125.222 gitlab.example.com
192.168.125.224 jenkins.example.com
构建Job准备(添加Jenkins后台git client user与email)
安装git client,curl工具依赖
[root@jenkins ~]# yum install -y git curl
关闭系统git http.sslVerify安全认证
[root@jenkins ~]# git config --system http.sslVerify false
[root@jenkins ~]# echo $? //为0代表上面的命令执行成功
0
添加Jenkins后台git client 用户与邮箱,先进入jenkins的web页面,进行以下操作
页面往下拉,在Git plugin处填写信息,点击保存
然后点击凭据,点击Jenkins
点击全局凭据
点击左边的添加凭据
添加完成如下
接下来开始构建Job
Freestyle Job构建
点击新建Item
选择构建自由风格Job
填写描述信息
添加选项参数
添加多行字符串参数
填写以下内容
添加完成后点击“保存”即可,然后回到Jenkins首页,点击刚才创建的“test-freestyle-job”黑色小三角,找到“配置”选项,开始添加git源码管理
用root用户登录gitlab,复制test仓库的地址,test仓库创建见https://www.cnblogs.com/wengshaohang/p/12269127.html
粘贴到下图的地方
页面往下拉,在增加构建步骤处选择执行shell
输入以下内容,点击保存
#!/bin/sh export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" #Print env variable echo "[INFO Print env variable" echo "Current deployment environment is $deploy_env" >> first.py echo "The build is $version" >> first.py echo "[INFO] Done..." #Chenck test properties echo "[INFO] Check test properties" if [ -s first.py ] then cat first.py echo "[INFO] Done..." else echo "first.py is empty" fi echo "[INFO] Build finish"
接下来点击Build with Parameters
点击开始构建
点击灰色按钮,可以查看执行过程和错误的日志信息,错误是红色按钮,成功是蓝色
可以看到构建成功,jenkins先去gitlab把first-freestyle-job项目克隆到/var/lib/jenkins/workspace目录下,再和shell集成临时生成.sh文件,执行shell命令
接下来开始构建Pipeline Job
Pipeline Job
Pipeline基础架构
1.所有代码包裹在pipeline层内
2.stages层用来包含该pipeline所有stage子层
3.stage层用来包含具体我们需要编写任务的steps子层
4.steps用来添加我们具体需要调用的模块语句
agent区域
- agent定义pipeline在哪里运行,可以使用any,none,或具体的Jenkins node主机名等;例如:假定我们要特指在node1上执行,可以写成:agentnode1 label ‘node1‘。
environment区域
- “变量名称=变量值”定义我们的环境变量;
- 可以定义全局环境变量,应用所有stage任务
- 可以定义stage环境变量,应用单独的stage任务
script区域(可选)
- 在steps内定义script;
- groovy脚本语言;
- 用来进行脚本逻辑运算;
常用steps区域
- echo:打印输出
- sh:调用Linux系统shell命令
- git url:调用git模块进行git相关操作
点击新建Item
选择构建自由风格Job
填写描述信息
然后点击流水线,编写pipeline脚本,复制时注意凭据ID,点击保存
#!groovy pipeline agent node label ‘master‘ environment PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin" parameters choice( choices: ‘dev prod‘, description: ‘choose deploy environment‘, name: ‘deploy_env‘ ) string (name: ‘version‘, defaultValue: ‘1.0.0‘, description: ‘build version‘) stages stage("Checkout test repo") steps sh ‘git config --global http.sslVerify false‘ dir ("$env.WORKSPACE") git branch: ‘master‘, credentialsId:"8018da86-0aa8-4ec1-a90b-ea9091668f83", url: ‘https://root@gitlab.example.com/root/test-repo.git‘ stage("Print env variable") steps dir ("$env.WORKSPACE") sh """ echo "[INFO] Print env variable" echo "Current deployment environment is $deploy_env" >> first.py echo "The build is $version" >> first.py echo "[INFO] Done..." """ stage("Check first.py") steps dir ("$env.WORKSPACE") sh """ echo "[INFO] Check first.py" if [ -s first.py ] then cat first.py echo "[INFO] Done..." else echo "first.py is empty" fi """ echo "[INFO] Build finished..."
点击Build Now,第一次会报错,因为没有读取到参数,第二次Build才会出现选择参数
点击红色圆圈,进去查看错误
groovy.lang.MissingPropertyException: No such property: deploy_env for class: groovy.lang.Binding
再次构建,可以选择参数
点击蓝色圆圈,可以看到构建成功
jenkinsjob构建
Jenkinsjob介绍?JenkinsFreestyle与PipelineJob区别??JenkinsJob构建配置一、环境准备1.配置Jenkinsserver本地GitlabDNS2.安装gitclient,curl工具依赖3.关闭系统Githttp.ssIVerify安全认证4.添加Jenkins后台Gitclientuser与email5.添加Jenkins后台GitCredential凭据进入路... 查看详情
jenkinsjob的自动部署脚本(代码片段)
Jenkinsjob的自动部署脚本需求:1.从Jenkins的workspace中,将编译好的Java代码部署到D:zzinfoUserCenterCoordinator中2.部署过程中,需要停止相关联的其他进程,如5558_CENTER64.exe|5559_CENTER64_UserList.exe|APNs.exe代码如下:#!/usr/local/envpython3#-*-coding:... 查看详情
[3]jenkins系列:如何获取出发jenkinsjob的用户信息?(代码片段)
Jenkins提供两种方式的Script,一种是基于声明式的,一种是基于脚本式的。Jenkins申明式的格式Jenkins脚本式的格式Jenkins官方推荐使用申明式的方式定义Jenkins的Pipeline。有的时候我们需要在Pipeline给开发团队发消息或者邮件... 查看详情
[3]jenkins系列:如何获取出发jenkinsjob的用户信息?(代码片段)
Jenkins提供两种方式的Script,一种是基于声明式的,一种是基于脚本式的。Jenkins申明式的格式Jenkins脚本式的格式Jenkins官方推荐使用申明式的方式定义Jenkins的Pipeline。有的时候我们需要在Pipeline给开发团队发消息或者邮件... 查看详情
[3]jenkins系列:如何获取出发jenkinsjob的用户信息?(代码片段)
Jenkins提供两种方式的Script,一种是基于声明式的,一种是基于脚本式的。Jenkins申明式的格式Jenkins脚本式的格式Jenkins官方推荐使用申明式的方式定义Jenkins的Pipeline。有的时候我们需要在Pipeline给开发团队发消息或者邮件... 查看详情
尝试执行文本替换时,jenkinsjob返回未找到的文件(代码片段)
我已经过了几分钟,我无法弄清楚为什么当文件存在于存储库时,jenkins无法找到npmrc.template文件:pipelineagentlabel'x86'environment//CIscriptsREGISTRY_AUTH='artifactory-ce'COMMITER_NAME="$env.GIT_COMMITTER_NAME"COMMITER_EMAIL="$env.GIT_COMMITTER_EMAIL"optionsbuildDisc... 查看详情
gitlab+jenkins+docker+kubernetes。
...先,开发人员提交代码代码提交;随后,GitLab会自动触发Jenkinsjob,Jenkinsjob会构建相应的镜像,放在一个Kubernetes的Pod里面;接下来,Kubernetes的Pod会把模块需要的其他依赖都包含在其内部(比如MySQL、Redis、MongoDB等),运行robot测... 查看详情
基于gitlab+jenkins的代码自动化发布(代码片段)
...自动化思路:开发人员push代码到gitlab,触发webhook,调用jenkinsjob。jenkinsjob执行拉取代码,编译,调用loadblance,下架部分服务器更新代码,验证更新后的可用性,上线;再下架另一部分服务器,更新代码,再上线。更新完后,将... 查看详情
jenkinsjob之间实现带参数触发
1背景开发打包的jenkinsjobA是在local的一台windows上,同时在这台local的windows上还有一另一个jenkinsjobB是用来上传jobA生成的包(build)到测试平台的仓库(比如saucelabsstorage)。然而我们测试的jenkinsjobC是在azure上的一台windowsserver2012上... 查看详情
textpyenv构建(代码片段)
shdockerionic构建(代码片段)
构建buildvariants构建变体(代码片段)
官方文档配置构建变体Configurebuildvariants此页面以配置构建概览[Configureyourbuildoverview]为基础,向您介绍如何配置构建变体,以便从同一个项目中创建应用的不同版本,以及如何正确地管理依赖项并签署配置[properlymanageyourdependencies... 查看详情