code

2014年9月10日 星期三

Jenkins Plugin - 如何將建置(Build)的人員,加入參數(Parameters)?

https://wiki.jenkins-ci.org/display/JENKINS/Build+User+Vars+Plugin

一、安裝 Build User Vars Plugin

管理 Jenkins >> 管理外掛程式 >> (找到 user build vars plugin )

安裝完成後,在 Project 的組態設定勾選 『Set jenkins user build variables』
依照plugin頁面的說明會有四個參數可以使用,實際上只有以下兩個有效組合

  • BUILD_USER 值等同於Jenkins User 的名稱
  • BUILD_USER_ID 值等同於Jenkins User 的登入帳號



在Shell上測試一下效果



ok  It's work!

二、以指令的方式取得 (不建議使用)

在尋找這個問題的解答時,發現有人提供了一個有趣的解法,只要一串Shell Script便可取得Build User
BUILD_USER="$(wget -nv --no-proxy "$BUILD_URL/api/xml"'?xpath=//userName/text()' -O -)"


但這方法經測試,只能使用在沒有啟用安全性的環境中,只要一開啟安全性,就會有以下錯誤
ERROR 403: primitive XPath result sets forbidden; implement jenkins.security.SecureRequester.

我想,應該不會有人建議,關閉Jenkins的安全性設定,所以不建議使用這方式

https://issues.jenkins-ci.org/browse/JENKINS-4463?focusedCommentId=142720&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-142720

延伸問題

一、由排程器執行的$BUILD_USER是空白的

這個問題,試了許多方法與Plugin,都沒有令我滿意的解答,反而動手寫幾行 Shell Script 就可輕易的完成

簡易加個 script 處理排程器啟動,BUILD_USER是空白問題

由排程器啟動的Job會印出自行指定的名稱

二、為什麼不使用 $USER

如果在執行Shell上輸入 export ,會找到可用的變數中有 USER,但 USER 指的是啟動Jenkins service 的 system user,並非觸發 Job 的 user

沒有留言:

張貼留言