文章目錄
- 文法
- Jenkins自帶流水線文法生成器
- options
- `Discard old builds`
- 參數化建構
- 并行執行stage
- 觸發下遊job建構
- 聲明式和腳本式均可使用
- `注釋`
- `執行shell腳本`
- 單引号與雙引号的差別
- `到指定目錄下執行`
- `sshPublisher`
- 常用指令
文法
pipeline {
agent any
environment { //設定全局變量
username = 'test'
password = "123456"
}
parameters { //參數化建構
choice choices: ['true', 'false'], description: '測試', name: 'test'
string name: 'NEW_BRANCH', defaultValue: '', description:'', trim: true
}
stages {
stage('階段一') {
steps {
deleteDir() //清空目前${WORKSPACE}下面的内容
sh '''
echo "執行Shell指令"
'''
}
}
stage('階段二') {
steps {
sh '''
echo "執行Shell指令"
'''
}
}
stage('并行') {
parallel {
stage('Stage1') {
steps {
echo "Stage1"
}
}
stage('Stage2') {
steps {
echo "Stage2"
}
}
}
}
}
post { //建構後處理
always {
echo "總是執行"
}
failure {
echo "失敗後執行"
}
success {
echo "成功後執行"
}
}
}
解釋:
agent any #Jenkins自動配置設定一個代理節點去執行
agent {
label "執行機标簽名" //指定執行機
}
Jenkins自帶流水線文法生成器
以參數化建構為例,配置好之後,點選
"Generate Dectarative Directive"
即可在下方生成代碼,直接複制到Groovy腳本即可
options
Discard old builds
Discard old builds
options {
buildDiscarder logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '30') //保留曆史建構數30個
}
參數化建構
parameters { //參數化建構
choice choices: ['true', 'false'], description: '測試', name: 'test' //選擇參數
string name: 'NEW_BRANCH', defaultValue: '', description:'', trim: true //字元串參數
listGitBranches branchFilter: '.*/feature.*||.*/dev', credentialsId: 'devops',
defaultValue: '', name: 'BRANCH', quickFilterEnabled: true, remoteURL: 'https://192.168.1.2/devops.git', selectedValue: 'NONE',
sortMode: 'DESCENDING_SMART', tagFilter: '*', type: 'PT_BRANCH' //列出git分支
}
并行執行stage
window和linux的stage是并行執行的
stage("build, deploy and test on Windows and Linux") {
parallel {
stage("windows") {
stages {
stage("build") {
steps {
timestamps {
echo "build on windows."
}
}
}
stage("deploy") {
steps {
timestamps {
echo "deploy on windows."
}
}
}
}
}
stage("linux") {
stages {
stage("build") {
steps {
timestamps {
echo "build on linux."
}
}
}
stage("deploy") {
steps {
timestamps {
echo "deploy on linux."
}
}
}
}
}
}
}
觸發下遊job建構
上遊Job需有VERSION參數
JOB_NAME是Jenkins内置變量,代表目前Job的名字
下遊job需有JOB參數
build job: '下遊job名字', parameters: [string(name: 'version', value: env.VERSION),string(name: 'JOB', value: env.JOB_NAME)], propagate: false, wait: false
聲明式和腳本式均可使用
注釋
注釋
單行注釋:用雙左斜線(//)
多行注釋
/** 多行注釋:
* 第一行
* 第二行
*/
執行shell腳本
執行shell腳本
sh '''
shell指令
'''
或者
sh """
shell指令
"""
單引号與雙引号的差別
單引号:(shell優先)
擷取shell變量——${key}
不能擷取groovy通過def定義的變量
可以擷取參數化定義的值
shell自身定義的變量會覆寫jenkins參數化定義的變量
雙引号:(def定義的優先)
擷取groovy定義的變量——${key}
擷取shell變量——\${key} #需要通過\進行轉義
建議:聲明式流水線用三單引号,腳本式流水線用三雙引号
到指定目錄下執行
到指定目錄下執行
dir('docker') {
xxxxx
}
sshPublisher
sshPublisher
source /etc/profile
java -jar app.jar &
sshPublisher(publishers: [sshPublisherDesc(configName: 'java_161', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''
source /etc/profile
java -jar app.jar &
''',
execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/opt/',
remoteDirectorySDF: false, removePrefix: 'backend/', sourceFiles: 'backend/app.jar')],
usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
常用指令
deleteDir() #删除WORKSPACE