Jenkins實戰中的一些技巧

語言: CN / TW / HK

在隔離期間,看了下Jenkins,雖然沒有用到Pipline等功能,但通過基礎的配置,也能將CI/CD做的不錯(理解General、原始碼管理、觸發器構建、構建環境、構建、構建後的操作等步驟),其實其最大的特點就是外掛全、支援靈活的shell操作,下面列舉用到的一些功能。

1:Parameterized Trigger

https://plugins.jenkins.io/parameterized-trigger/

這個外掛很有用,但你完成一個構建後,可以觸發下一個構建並傳遞新的引數。比如說Go構建完成後,可以觸發傳送郵件。

2:Envi ronment Injector

https://plugins.jenkins.io/envinject/

這個外掛的作用就是能夠創造環境變數,在多個構建過程中能複用變數。具體做法就是變數儲存在一個檔案中。

Desc=`curl "https://gitlab.com?branch=${GIT_BRANCH}"`
echo "Desc=${BranchDesc2}" >/var/lib/jenkins/env.properties

3:Upload to pgyer with apiV2

https://plugins.jenkins.io/upload-pgyer/

這個外掛主要是Android打包後,將apk檔案上傳到蒲公英中下載。

在該例子中,shell修改了上一個步驟說到的注入環境變數,然後payer外掛能讀取,如果不用注入環境變數,shell修改變數值是不會生效的。

4:構 建,選擇執行shell

shell非常強大,可以完成很多工作,比如:

git clone git@ip:專案/倉庫.git $articlepath
cd $articlepath
git checkout master 

cd ${WORKSPACE}
./cmd/build.sh

在這個例子中,可以看到一個倉庫的構建過程還依賴另外一個倉庫,可以選擇clone下來進行編譯,不過好像git submodule就是解決這個問題的

5:Email Extension

https://plugins.jenkins.io/email-ext/

這個外掛能夠讓你配置更多的郵件引數,可以自定義引數等等。

不過需要注意的是,Jenkins中自帶的郵件設定也要做更改。

6:Publish Over SSH

在構建過程中,可以利用SSH做一些事情,比如執行命令或者傳送檔案(其實用shell更方便)

  • Send files or execute commands over SSH before the build starts
  • Send files or execute commands over SSH after the build runs

對於ssh和git來說,可以採用私鑰免登入。

7:全域性屬性和環境變數

可以在設定中配置一些全域性的變數,比如軟體的編譯位置等等。

8:Manager Credentials

這個對安全性很重要,任何形式的金鑰(郵箱,gitlab密碼)都可以以票據的方式儲存,非常方便和安全。

9:Parameterized Build

https://wiki.jenkins.io/display/JENKINS/Parameterized+Build

引數化構建,可以作為全域性變數傳遞,但這個值shell是不能更改的(除非使用注入環境變數),Parameterized Trigger傳遞引數的時候,在下一個構建任務中也要新建引數用於接收上一個構建的變數。

10:GitLab

https://plugins.jenkins.io/gitlab-plugin/

GitLab外掛很有用,通過配置,在提交程式碼的時候Gialab會呼叫jenkins webhook事件給Jenkins(token驗證),然後開啟構建過程,比如:

參考:https://medium.com/@meanuraj.sl/how-to-integrate-jenkins-and-gitlab-3e8b11cf29cc