Upgrade Jenkins plugins via SSH

之前都是啟用 CLI over remoting ,用 jenkins CLI 做更新,但前一陣子在更新 Jenkins 以後,開始該該叫,說這樣不安全。查了一下文件,發現可以用 SSH 來做。

  1. 在 http://jenkins/configureSecurity 裡啟用 random SSHD Port
  2. 在會使用 ssh 登入更新的使用者設定裡 (http://jenkins/user/YOUR_USER_NAME/configure),貼上 public key 。
  3. 參考並修改這個腳本,執行它就可以更新了。

Jenkins EnvInject

Jenkins 裡能用的環境變數可以參考:

  1. Jenkins 架設好以後的 /env-vars.html/
  2. https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project#Buildingasoftwareproject-JenkinsSetEnvironmentVariables

但是有時候,就是覺得少了那麼一些。我們可以使用 EnvInject plugin 在建置時,插入需要的環境變數,讓後續的建置步驟使用。

使用方法:

  1. 在 EnvInject 之前的步驟產生出類似這樣格式的檔案 key=value ,假設檔名是 build.properties
  2. 加入 EnvInject,在 Properties File Path 這欄位放入步驟 1 產出的檔名 build.properties ;Properties Content 不填。
  3. 在 EnvInject 之後的步驟欄位裡,就可以使用 ${key} 了。

參考資料:

jenkins 的 gitlab-merge-request-builder-plugin

gitlab-merge-request-builder 是可以讓 jenkins 對 gitlab 送 merge request 的 plugin,但是這個 plugin 不在 jenkins plugins repositories,所以找不到,得自己 build。

首先要裝 maven:sudo apt-get install maven

  1. 先到 java-gitlab-api ,取得原始碼,接著用 mvn install 來安裝,maven 會把生成的 gitlab api wrapper 安裝到 $HOME/.m2 下。
  2. jenkins-gitlab-merge-request-builder-plugin 取得 plugin 的原始碼,取得以後,修改 pom.xml ,把 java-gitlab-api 的版本改為 1.2.5-SNAPSHOT ,然後執行 mvn hpi:hpi 。
  3. 大功告成,建置好的 plugin 會在 target/ 下。

plugin 的說明裡提到,如果 gitlab 在 8.1.x 以下,要使用 v1.2.4 ;gitlab 在 8.1.x 以上 (含),可以直接用最新版本。關於這點,我倒是還沒去試,總之先把建置的步驟紀錄下來。

P.S. 我發現有兩個來源耶,所以?!

  1. https://github.com/timols/jenkins-gitlab-merge-request-builder-plugin
  2. https://github.com/jenkinsci/gitlab-merge-request-builder-plugin