昨天,我們成功安裝及設定好Dependency Track在Jenkins的自動化流程。當我們在開發的安全性得到保障以後,我們可以開始為我們的程式發佈做準備。
一般來說,我們有三種不同的方式去發佈一個我們開發的程式:
以上三種不同的方式,其實都會經過一個相同的步驟,就是把源碼編譯成可供引用或是可供執行的檔案。因此無論哪一種發佈方式,最後都需要找一個位置去存放編譯好的檔案,以便開發者引用或是取得程序去執行。
當我們使用CICD Pipeline進行自動部署的時候,我們亦經常需要把編譯完成後的檔案部署到不同的環境中。有時候這個過程並不一定會同時進行,例如先部署到測試環境中,測試完成後再部署到生產環境中。而為了保持不同環境下源碼的一致性,我們不應該每次都重新編譯一次我們的代碼。因此,我們應該在自動化部署的流程中,每次都編譯完成的程序進行存檔,以便重新利用。
而這個存放程序或套件的工具,就是成品倉庫了。
市面上有很多不同種類的Artifact Repository,而比較有名的有JFrog Artifactory跟Nexus Repository。
今天我會介紹一下Nexus Repository的Nexus OSS版本。除了因為個人原因,比較常用Nexus Repository以外,另一個主要原因是JFrog Artifactory的自託管服務並不是免費服務。當然你亦可以選擇JFrog Artifactory的雲端服務,但放上雲端有機會會引伸致一些企業安全規限問題,在此不詳細討論。因此本次選擇了Nexus OSS進行介紹。
Nexus OSS提供了不同套件管理工具的支援,例如Java比較常用的Maven、NodeJS常用的npm、Python的PyPI等。最新的版本甚至支援Docker的儲存。用戶可以把開發的套件進行編譯再上傳到Nexus OSS中,當有需要引用或存取時,就從Nexus OSS直接取得相關套件。
而且Nexus OSS亦支援鏡像倉庫,例如使用Nexus OSS作為公共Maven的Repository,或是公共npm套件的Repository。當取得套件時,Nexus OSS會緩存一份相同的套件在Nexus OSS中,當下次要使用的時候,就可以更快捷取得相關的套件而不用重新下載。
當進行本地開發時,某一些安全性需求較高的企業甚至會在網絡層面上,阻擋開發人員直接存取公共的Repository,這個時候,開發人員就必須使用 Nexus才能取得所需的套件。
因此一套Artifact Repository除了可以方便保存開發的成品以外,其實還可以保證企業在開發過程中的安全性。
今天先介紹一下Nexus的功能,明天我們一起安裝Nexus及學習如何使用它。
卡文了…