Jenkins Job构建

Posted wengshaohang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins Job构建相关的知识,希望对你有一定的参考价值。

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上执行,可以写成:agent{node1 {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

再次构建,可以选择参数

技术图片

技术图片

点击蓝色圆圈,可以看到构建成功

技术图片

技术图片

以上是关于Jenkins Job构建的主要内容,如果未能解决你的问题,请参考以下文章

jenkins-job构建完成后通知企业微信

jenkins构建机配置

jenkins分布式

jenkins参数化构建过程中的各个参数之间是没有关联的吗

[Python]python-jenkins获取正在构建中的job

技术分享 | Jenkins job 机制该如何使用?