在過去的幾年中,DevOps已成為軟體生命週期中至關重要的一部分,這推動了許多領先的DevOps工具和實踐的發展。您可以找到一系列支援CI/CD流程的工具,Jenkins和GitHub Actions傑出地站在其中。
在本文中,我將對GitHub Actions和Jenkins進行比較,併為你提供洞察力以做出正確的選擇。
Jenkins和GitHub Action簡介Jenkins是一個免費的、開源的自動化伺服器。它幫助自動化軟體開發中與構建、測試和部署相關的部分,促進持續整合和持續交付。
同樣,GitHub Actions是GitHub作為SaaS產品提供的兩個產品中的最新產品。
GitHub Actions 現在讓您更容易在任何平臺上自動構建、測試和部署專案,包括 Linux、MacOS 和 Windows。在容器或虛擬機器中執行您的工作流。
在決定是否值得改變之前,讓我們先了解誰應該考慮這一點。
你是否應該考慮從Jenkins中轉移出來?如果你使用Jenkins一切都很順利,你對你的設定很有信心,同時擁有完全的控制權,成本也不是問題,我建議繼續使用Jenkins。
對於那些使用GitHub作為原始碼控制平臺,並且已經覺得對自己的Jenkins設定沒有信心,尋求更好的替代方案的人來說,GitHub行動將成為首要考慮的選擇。
由於GitHub Actions是由GitHub完全管理的服務,因此您不需要知道如何擴充套件和操作基礎設施來執行它。
這是我選擇從Jenkins轉移出來的主要原因,在那裡,我不能完全控制我的CI/CD管道發生了什麼。
我不得不面對的一些挑戰:
保持外掛最新。即使我沒有執行任何構建,我的單個Jenkins伺服器構建也要花錢。在併發構建等方面不一致我不得不依賴幾個外掛,這些外掛會出現更新,我需要時常處理。我知道有Jenkins的解決方案可以解決其中的一些問題,但我已經受夠了,並轉向了託管平臺。
我希望我已經樹立了正確的心態,如果你適用於GitHub Actions,那麼就可以轉到GitHub Actions。讓我們看看GitHub Actions提供的功能來考慮這一舉措。
易於設定——全部由GitHub管理我認為,GitHub Actions在Jenkins之上的首要優勢是在GitHub Actions上的設定簡便性。GitHub Actions在雲端執行,你也可以選擇在本地執行,這就是所謂的執行器。相反,Jenkins沒有提供官方的管理服務。
而且我可能不會去選擇任何第三方的Jenkin託管產品。我覺得把對原始碼和敏感資訊的訪問權交給第三方供應商風險太大。
由於這個原因,Jenkins伺服器需要安裝,而GitHub Actions不需要。因此,在GitHub Actions中,設定過程就方便多了。此外,GitHub Actions是一系列的docker執行。它僅需要 docker build 和 docker run,這使得執行和除錯非常容易。
與GitHub緊密整合——無縫體驗最初,Jenkins似乎比GitHub Actions更靈活。Jenkins主要基於帳戶和觸發器,並以構建為中心。這些不符合GitHub events。與此相反,GitHub的actions涵蓋範圍很廣。因此,每個GitHub events都有一個GitHub Action。
GitHub Actions支援多種語言和框架,它們也使用YAML編寫。因此,它們可以像程式碼一樣進行編輯,重用,共享和forked。
它與GitHub的使用很直接,因為當你forke一個倉庫時,動作會自動被forke。
使用Bit(Github)時,可以看到這種緊密整合的一種流行用例。Bit是一個工具和平臺,它可以輕鬆地將JS元件(Node、React、Vue、Angular等)從任何資源庫共享到Bit的雲服務,並從那裡共享到其他資源庫。
Bit的雲服務可以自動生成對所有Github倉庫的拉取請求,這些倉庫受一個共享元件的變更影響。這些自動生成的PR可以作為Github Actions的觸發器。
這意味著,對一個單一(共享)元件的改變可以在所有使用它的資源庫中傳播,觸發CI,驗證所有專案沒有被破壞。
GitHub Actions的另一大“特色”是,它們可以透過GitHub Marketplace相互分享。你可以重用其他開發者編寫的Action,這樣可以為你節省大量的時間,避免重寫已有的程式碼。
協調器和構建節點——規模化構建GitHub Actions預設遵循主從(協調者和構建節點)模式,而不是Jenkins為我們提供的順序管道。
然而,需要注意的是,類似的設定在Jenkins中也是可以實現的,但需要額外的努力和知識才能讓它執行起來。
如果你使用Jenkins,預設設定將同步執行部署管道中的每一步。例如,如果你需要執行單元測試、整合測試和一些Sonar驗證,它們必須在一個伺服器環境中執行。根據伺服器中的可用資源,這可能會延遲執行。此外,您無需付出額外的努力來使管道可靠。
透過使用GitHub Actions,這些工作可以並行化,如上圖所示,例如,工作1可以是單元測試和整合測試,工作2可以是Sonar驗證。
總結就其優勢而言,我們認真地研究了GitHub Actions領先於Jenkins的幾個領域。此外,GitHub Actions的增長速度比Jenkins快,成千上萬的GitHub Actions被髮布到GitHub marketplace。圍繞這個社群也在不斷完善,其中有專門的GitHub Actions的倉庫。這意味著什麼?
但是,是否在專案中使用GitHub Actions或Jenkins取決於您。目前,GitHub Actions對於公共倉庫是免費使用的。對於私有倉庫,它具有按需付費的機制。
我希望你已經意識到GitHub Actions是比Jenkins更有優勢的選擇,主要是因為它的靈活性。對於那些開始新專案或使用GitHub作為他們的原始碼控制平臺的人來說,轉向GitHub Actions是個不錯的選擇。
首先,GitHub文件提供了具體的實現步驟,GitHub Actions的工作流語法可以在這裡找到。
最近整理了一份優質影片教程資源,想要的可以關注我然後私信“666”即可免費領取哦!如果文章對你有所啟發和幫助,可以點個關注、收藏、轉發,也可以留言討論,這是對作者的最大鼓勵。