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://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

再次構建,可以選擇參數

點擊藍色圓圈,可以看到構建成功


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM