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\nprod',
            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://[email protected]/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

再次构建,可以选择参数

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

猜你喜欢

转载自www.cnblogs.com/wengshaohang/p/12273400.html