再官網文檔上有說明pipeline的工做流程,具體能夠參考pipeline文檔和語法文檔。 這裏將pipeline的生命週期圖貼出來 node
咱們暫時不會用到完整的流程,只摘取有用的部分,完成最小的流程便可,下面是我舉的幾個實際例子git
node { dir('/home/share/node/falcon') { stage("git") { sh "git fetch origin" sh "git checkout -f origin/master" } stage("cpm install") { sh "cnpm install" } stage("build") { sh "npm run build" } stage("restart server") { sh ''' pm_result=`pm2 ls` if [[ $pm_result =~ `pwd` ]] then echo "`pwd` exists, restart" pm2 delete app.js pm2 start app.js --name `pwd` exit 0 else pm2 start app.js --name `pwd` fi ''' } } }
例子中用到了幾個方法npm
dir()
更換執行目錄,jenkins默認的執行目錄在環境設置中設置,默認是/
,若是咱們使用的是multibranch pipeline的話,它會在jenkins的安裝目錄下找到workspace進行pipeline操做,目前來講,太麻煩了,因此就直接在腳本中設置好執行目錄stage()
方法是階段的名稱,這個是徹底自定義的,至關於給構建流程中的某些步驟稱爲一個階段,好比git操做階段、安裝依賴階段、編譯階段、發佈階段,具體效果能夠到 構建 章節看sh
後接的就是命令行操做了,若是隻有一行,那麼用''
或者用""
包裹起來,若是有多行的話,用'''
包裹在構建項目時,咱們能夠寫一些條件,例如在一個新的服務器上進行完整的安裝時,咱們能夠不經過命令行進行git clone把項目拉下來,能夠經過判斷目標目錄是否有項目,而後決定咱們是git clone
仍是 git fetch origin
api
node { dir('/home/share/www') { stage('Git') { if(fileExists('openapi')) { dir('/home/share/www/openapi') { sh 'git fetch origin' sh 'git checkout master' sh 'git pull' } } else { sh 'git clone git@git.coding.net:flashtd1/DPOpenAPI.git openapi' } } } }
在進行版本切換的時候,須要手動輸入一些內容,好比分支名稱,commit名稱等,因此須要用戶輸入變量,下面舉個例子數組
node { stage('Git') { def branch = input message: 'input branch name for this job', ok: 'ok', parameters: [string(defaultValue: 'master', description: 'branch name', name: 'branch')] echo branch } }
執行上述例子,會出現以下狀況 當輸入後,會獲得以下結果 服務器
若是一次性想輸入多個參數,能夠在parameters數組中添加更多的變量,以下面的例子app
node { stage('Git') { def input_result = input message: 'input branch name for this job', ok: 'ok', parameters: [string(defaultValue: 'master', description: 'branch name', name: 'branch'), string(defaultValue: '', description: 'commit to switch', name: 'commit')] echo input_result.branch echo input_result.commit } }
除了用.
的形式,也能夠用['branch']
這樣的形式,若是要在sh中使用變量,能夠寫做fetch
node { stage('Git') { def input_result = input message: 'input branch name for this job', ok: 'ok', parameters: [string(defaultValue: 'master', description: 'branch name', name: 'branch'), string(defaultValue: '', description: 'commit to switch', name: 'commit')] sh "echo ${input_result.branch}" sh "echo ${input_result.commit}" } }
注意sh後的是""
,否則會出現錯誤ui
這裏只舉了簡單的字符串輸入的狀況,其實還有不少能夠輸入的類型,不過文檔裏並無寫的很詳細。這裏介紹一下Jenkins的語法生成器,一些插件生成腳本的語句均可以在這裏調出來this
在Pipeline編輯的輸入框下,有一個Pipeline Syntax
超連接 紅色標記的下拉框中能夠找到已經安裝了插件的支持編寫腳本的選項列表,這裏用input來舉例 按照提示填完後,能夠點擊下面的Generate Pipeline Script
按鈕生成腳本 生成的腳本就能夠複製到本身的腳本里啦