Jenkins 入門篇(二)

2021-08-29 20:40:16 字數 3250 閱讀 6955

--昨夜西風凋碧樹,獨上高樓,望盡天涯路

官網原文:

前面我們注意到了jenkins的agent命令。該命令告訴jenkins在**以及如何執行pipeline。agent對於所有的pipeline都是必須的。agent確保了所有的steps中的**塊排隊執行。jenkins在執行指令碼的時候會存在乙個執行器,當上一條步驟執行成功,執行器空閒,下一條步驟開始執行。執行步驟的時候會分配乙個工作區,該工作區將包含從源**管理檢出的檔案以及pipeline的任何附加工作檔案。

有很多中方法可以定義pipeline中使用的**。本文中使用臨時的docker agent。pipeline是為了方便地使用docker 映象和容器來執行而設計的。pipeline會定義所需的環境和工具,而不必手動地配置各種系統工具和對**的依賴。這樣幾乎可以使用任何可以打包在docker容器中的工具。

jenkinsfile (declarative pipeline)

pipeline

}stages }}

}

jenkinsfile (scripted pipeline)

node

}}

當pipeline執行時,jenkins將自動啟動指定的容器並在其中執行定義的步驟

環境變數可以設定為全域性環境變數,也可以在每個stage設定。每個stage設定環境變數意味著它們只適用於當前stage。

jenkinsfile (declarative pipeline)

pipeline

stages }}

}

jenkinsfile (scripted pipeline)

node

}}

這種從jenkinsfile中定義環境變數的方法對於編寫指令碼(如makefile)配置構建或測試的時候是非常有用的。

測試是乙個良好的持續交付的關鍵部分,jenkins可以記錄和聚合測試結果,只要測試執行器能夠輸出測試結果檔案。jenkins通常與junit步驟**在一起,如果測試執行器不能輸出junit風格的xml報告,那麼還有其他外掛程式可以處理任何廣泛使用的測試報告格式。

通過post來收集測試結果:

jenkinsfile (declarative pipeline)

pipeline }}

post

}}

jenkinsfile (scripted pipeline)

node

} finally

}

獲取測試結果之後jenkins可以進行追蹤,計算趨勢並生成報告。測試失敗的管道將被標記為「不穩定」,在web ui中用黃色表示

當測試失敗時,從jenkins那裡獲取構建的資訊來進行本地分析和調查通常是有用的。通過jenkins內建的對儲存「資訊」(在管道執行過程中生成的檔案)的支援,實現了這一點。

通過archiveartifacts步驟和檔案萬用字元可以實現:

jenkinsfile (declarative pipeline)

pipeline

}stage('test') }}

post

}}

jenkinsfile (scripted pipeline)

node

} finally

}

如果在archiveartifacts步驟中指定了多個引數,那麼每個引數的名稱必須顯式地在步驟**中指定——即部件(artifacts)的路徑、檔名和指定fingerprint為true。

如果只需要指定部件(artifacts)的路徑和檔名,那麼您可以省略引數artifacts,例如:

archiveartifacts 」build/ libs / * * / * . jar」

在jenkins中記錄測試和部件(artifacts)可以快速地向團隊的各個成員顯示資訊。

pipeline的post在pipeline的執行結束時執行,我們可以新增一些通知或其他步驟來執行終止、通知或其他pipeline結束任務。

jenkinsfile (declarative pipeline)

pipeline }}

post

success

unstable

failure

changed

}}

jenkinsfile (scripted pipeline)

node

}catch (exc)

finally else

}}

執行失敗之後傳送e-mail:

post ",

body: "something is wrong with $"

}}

最基本的持續交付pipeline至少有三個階段應該在jenkinsfile中定義:構建、測試和部署。穩定的構建和測試階段是任何部署活動的重要前奏。

jenkinsfile (declarative pipeline)

pipeline

}stage('test')

}stage('deploy') }}

}

jenkinsfile (scripted pipeline)

node

stage('test')

stage('deploy')

}

通常,在各個階段之間進行傳遞時,特別是在環境階段之間,在繼續之前,有可能需要人工輸入。例如,判斷應用程式是否處於「提公升」到生產環境的良好狀態。這可以通過輸入步驟來完成。在下面的示例中,「完整性檢查」階段實際上會阻塞輸入,在沒有人確認過程之前不會繼續。

jenkinsfile (declarative pipeline)

pipeline

}stage('sanity check')

}stage('deploy - production') }}

}

jenkinsfile (scripted pipeline)

node

stage('sanity check')

stage('deploy - production')

}

BREW SDK入門篇(二)

在第一部分,所有的必須專案設定都是由brew應用程式嚮導來管理。但我們仍然需要提供乙個可執行檔案以便在除錯階段執行.dll檔案,同時還要確保brew能夠找到應用程式的.dll檔案。為了滿足第乙個要求,我們需要為brew emulator.exe提供路徑。為了滿足第二個要求,我們要確保鏈結程式將hel...

BREW SDK入門篇(二)

在第一部分,所有的必須專案設定都是由brew應用程式嚮導來管理。但我們仍然需要提供乙個可執行檔案以便在除錯階段執行.dll檔案,同時還要確保brew能夠找到應用程式的.dll檔案。為了滿足第乙個要求,我們需要為brew emulator.exe提供路徑。為了滿足第二個要求,我們要確保鏈結程式將hel...

MySQL入門學習 二 入門篇

上篇講了如何安裝並測試mysql,環境建好後就可以繼續我們的學習了。本篇主要熟悉一寫常用命令。1 啟動mysql伺服器 實際上上篇已講到如何啟動mysql。兩種方法 一是用winmysqladmin,如果機器啟動時已自動執行,則可直接進入下一步操作。二是在dos方式下執行 c mysql bin m...