jenkinsjob构建(代码片段)

wengshaohang wengshaohang     2023-04-20     639

关键词:

Jenkins Job构建

jenkins安装见https://www.cnblogs.com/wengshaohang/p/12272952.html

Freestyle JobPipeline 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... 查看详情

json为构建器bob构建文件(代码片段)

查看详情

json为构建器bob构建文件(代码片段)

查看详情

textusmui构建说明(代码片段)

查看详情

pythondocker构建器(代码片段)

查看详情

csharpdll构建时间(代码片段)

查看详情

php构建变量(代码片段)

查看详情