2017-06-13 13 views
0

我們正在Jenkins的多分支管道插件中連接到GitHub組織的存儲庫,在其某些分支中使用Jenkinsfile。詹金斯可以訪問多個其他代理,其成功構建後部署代碼。防止在Jenkinsfile中進行未經批准的部署(多分支管道)

問題:我想阻止其他開發者運行修改後的Jenkinsfile在他們的分支和請求的構建。

  • 解決方案1:when聲明Jenkinsfile:安全性差。任何人都可以修改它,刪除when條款並中斷生產。
  • 解決方案2:鎖定的回購文件:不適用於GitHub。我正在認真考慮轉移到GitLab,因爲他們有這個功能。
  • 解決方案3:在詹金斯部署單獨工作:矯枉過正。我認爲應該有一個Pipeline-ish解決方案。

我怎樣才能確保使用的Jenkinsfile是真實的,而不是修改?有沒有解決這個,我錯過了?我希望這足夠安全,以防止任何人通過推送訪問而故意破壞事件, G。 git預推鉤不是解決方案。

+0

是不是jenkins(誰可以運行這個工作)和/或目標系統(應該拒絕來自未知來源的部署)的安全問題?如果它將由執行部署的代碼進行管理 - 那麼任何開發人員都可能破解它。 – daggett

+0

@daggett的權利。但我正在尋找一種方法來阻止任何開發者(除特權者之外)使用自定義'Jenkinsfile'構建。我想到的一個(可能的)解決方案是讓Jenkins以某種方式使用來自pull請求(或「master」分支)的目標分支的'Jenkinsfile',而不是源代碼分支。 –

+0

您是否曾經爲此解決過這個問題?我處於類似的情況,我想禁止我的Jenkinsfile運行任意代碼 – bearrito

回答

0

您可以使用Custom Script模式下Build Configuration節中的多分支項目,這種方式在不同的分支jenkinsfile將不被使用的配置,但你無論是在作業配置在Definition部分選擇pipeline script和預防定義開發人員可以修改jenkins作業配置,也可以通過選擇Pipeline script from SCM將任何文件指定爲基本上任何存儲庫中的jenkins文件。

例如,非我們的倉庫有jenkinsfile,我們所有的項目只有一個jenkinsfile,只有我更新並存放在單獨的倉庫中。

相關問題