幾天前同事回報,他 merge 完 push 之後 Jenkins 為何沒有建置? 我目前所在的公司所有原始碼是湊在一起的,但是每一個建置作業又只需要建置某一個專案及其相依的專案,所以除了使用 Sparse Checkout paths 之外還搭配 Polling ignores commits in certain paths 來讓建置作業能夠控制在需要建置時建置,所以這問題肯定出在這兩個地方。
2018-11-12
幾天前同事回報,他 merge 完 push 之後 Jenkins 為何沒有建置? 我目前所在的公司所有原始碼是湊在一起的,但是每一個建置作業又只需要建置某一個專案及其相依的專案,所以除了使用 Sparse Checkout paths 之外還搭配 Polling ignores commits in certain paths 來讓建置作業能夠控制在需要建置時建置,所以這問題肯定出在這兩個地方。
有一些專案的建置作業中,某些步驟是需要對 Git Repository 做操作的,比如說在一切測試都通過之後,發行一個可執行的版本並 commit,然後 push 到待上線的 Git Repository,這時候賦予給 CI 的 Git 帳號就至少要有 Write 的權限,並且執行需要授權的操作時,自動帶上認證。
當我們的 Git Repository 只有一包的時候,而我們又想要讓 Jenkins 只 Pull 某個資料夾底下的檔案時,Sparse Checkout paths
這個 Git Plugin 的附加行為可以幫我們辦到這件事。
會有這個結論的起因是 Jenkins 有一個 Ruby Runtime Plugin,有很多 Plugin 會相依於它,雖然它最近一次更新的日期是在 2013 年 6 月 5 日,但依舊每個月都會有一萬多個安裝,而且跑在新版本的 Jenkins 也沒什麼問題(目前最新版本是 2.60.3),但是在 Windows 環境底下要安裝它就會有可怕的事情發生。