本文將分享如何從 AWS CodeCommit 服務無縫遷移到極狐GitLab,並且使用極狐GitLab 的一體化 DevSecOps 平臺功能來進行軟體研發。
2024 年 7 月 25 日,AWS 官方釋出了一則重要通知:旗下的程式碼託管服務 AWS CodeCommit 服務將不再接受新使用者的註冊,老使用者可以繼續使用,但是該產品不會再新增新功能,只是維護其安全性和可靠性。
官方表述:After careful consideration, we have made the decision to close new customer access to AWS CodeCommit, effective July 25, 2024. AWS CodeCommit existing customers can continue to use the service as normal. AWS continues to invest in security, availability, and performance improvements for AWS CodeCommit, but we do not plan to introduce new features.
這項官宣也就意味著研發團隊不得不尋找對應的替代品,而極狐GitLab 作為一個企業級的一體化 DevOps 平臺,是可以對 AWS CodeCommit 服務進行平替的。下面的內容將完整分享如何從 AWS CodeCommit 遷移到極狐GitLab。
極狐GitLab 作為 GitLab 在中國的發行版,可以一鍵私有化部署,中文體驗更好,下載安裝可以直接檢視官網: https://dl.gitlab.cn/j6rp6wgo 。
寫在前面
本指南為使用極狐GitLab 的開發團隊提供了全面資訊,適用於考慮與 AWS 服務整合或計劃從 AWS 託管的Git倉庫遷移到 JihuLab.com 的情況。遷移指南包括以下幾個主要部分:
- 並行遷移至極狐GitLab:詳細講述瞭如何將託管在 AWS 上的既有倉庫逐漸遷移到 JihuLab.com,同時將風險最小化。
- 和 AWS CodeBuild整合:對極狐GitLab 和 AWS CodeBuild 的整合提供了詳細的步驟,以便打造一個強大的持續整合(CI)環境。
- 和 AWS CodePipeline 整合:詳細講述瞭如何將極狐GitLab 和 AWS CodBuild 進行連線,從而構建高效的持續交付(CD)流水線。
- CodePipeline 和 CodeStar 連線的下游整合:闡述瞭如何利用極狐GitLab 與 AWS 的連線實現廣泛的服務訪問,解鎖了跨AWS生態系統的一系列整合可能性。
透過這份指南,你將會學習到如何將極狐GitLab 強大的功能特性和 AWS 結合起來,從而建立高效、靈活的研發工作流。
第一部分:並行遷移至極狐GitLab
對於那些考慮將託管在 AWS 上的 Git 倉庫遷移到 JihuLab.com 上的使用者來說,這部分內容將介紹整個遷移過程,並且將風險最小化。透過使用極狐GitLab 的映象能力,你可以在繼續使用既有工作流的情況下對新環境進行測試。
為什麼並行遷移如此重要?
大型系統的遷移往往伴隨著風險,特別是對現有工作流、既有整合以及自動化流程的潛在影響。採用並行遷移能夠獲得以下好處:
- 風險最小化:讓既有系統正常執行的時候,還能測試新環境。
- 無縫遷移:研發團隊可以逐漸適應新環境。
- 整合測試:在新環境中完整地測試所有的測試和自動化流程。
- 未來適應性:使團隊能夠逐步在現有 CI 並行執行的情況下遷移到極狐GitLab CI/CD。
如果你決定直接從既有系統完全切換到極狐GitLab,那麼就沒必要執行並行遷移。
遷移步驟
第一步:設定 JihuLab.com
- 先檢查貴公司是否已經在 JihuLab.com 上有對應的群組在使用以及他們是否開啟了 SSO 設定——如果確認開啟,那麼你會在稍後用到它。
- 如果貴公司在 JihuLab.com 上沒有對應的賬號,可以直接註冊建立。
- 建立一個新的公司名稱空間(在 JihuLab.com 上建立一個頂級群組)。
- 名稱的選擇要能夠完整地反映貴公司的情況。
第二步:匯入倉庫
對並行遷移來說:使用極狐GitLab 的 Pull 映象功能將 AWS 上的倉庫自動同步至 JihuLab.com。
- 在 JihuLab.com 上導航至目標群組。
- 在右上角,選擇“新建專案”。
- 在“建立新專案”頁面,點選“匯入專案”。
- 在“匯入專案頁面”,點選“透過 URL 匯入倉庫”。
- 在“Git 倉庫 URL”欄位中輸入完整的 AWS 倉庫 URL。
- 在 Git 倉庫 URL 欄位下方,勾選“映象倉庫”。
- 設定認證:在 AWS CodeCommit 控制檯,選擇你想遷移倉庫的克隆 URL。如果你計劃將 CodeCommit 倉庫匯入極狐GitLab,你可以使用 HTTPS CodeCommit URL 透過極狐GitLab倉庫映象功能克隆倉庫。你需要將你在 AWS IAM 使用者系統中儲存的 Git 憑據提供給極狐GitLab。你可以根據 AWS 官方指南來建立 AWS CodeCommit Git 憑據。
預設情況下,這項設定將每隔五分鐘將 AWS 上 Git 倉庫中的變更同步至 JihuLab.com。
更多詳情,可以檢視極狐GitLab 倉庫映象文件。
第三步:測試和驗證整合
- CI/CD 流水線:在極狐GitLab CI 中設定 .gitlab-ci.yml檔案,來對既有流水線進行“復刻”。更多詳情,你可以閱讀如何從其他 CI 工具遷移到極狐GitLab CI/CD 這篇文章。
- 議題追蹤:匯入專案議題,然後測試工作流。
- 程式碼稽核:設定合併請求流程並且測試稽核工作流。
第四步:逐步遷移
- 從小型或者非核心專案開始來逐步熟悉如何在 JihuLab.com 上進行工作。
- 為團隊成員提供配置並且給予一定的時間來適應新的工作流。
- 逐步遷移更多的專案,同時要確保整合和工作流是沒問題的。
第五步:完成遷移
一旦完成所有的測試和驗證,而且團隊在新的環境下也感覺很舒適,那麼就進行完整的遷移。對於每一個專案:
- 設定一個遷移日期並且通知所有干係人。
- 執行最終的資料同步。
- 從極狐GitLab 專案中移除映象設定。
- 將 AWS 倉庫設定為只讀,然後將所有研發工作流遷移到極狐GitLb 上。
第六步:評估採用新的能力
極狐GitLab 在協作和工作流自動化方面的能力遠比 CodeCommit 豐富。值得花費一些時間來學習這些能力。單就合併請求流程來講,極狐GitLab 就要比 CodeCommit 強大很多。
等到極狐GitLab 上的倉庫穩定以後,就可以很容易地採取並行的方式來體驗極狐GitLab CI/CD。在生產工作流不受影響的情況下,團隊可以花費一些時間來執行極狐GitLab CI/CD 自動化流程。
極狐GitLab 製品管理也非常強大,具有釋出功能和多種軟體包倉庫。
第一部分總結
透過採用向極狐GitLab 的並行遷移方式,你可以在最小化風險的同時感受絲滑的遷移。整個流程能夠讓團隊逐漸適應新的環境,而且確保所有的整合和自動化功能都是正確的。而一旦確定並行遷移不再是必需的時候,完全切換過來也僅僅是一個勾選框的事情(指取消映象設定)。
第二部分:將極狐GitLab 和 AWS CodeBuild 整合
對於那些想要使用 AWS CodeBuild 來對極狐GitLab 程式碼倉庫進行構建和測試的使用者來講,下面的分享指南將幫助完成高效 CI 流水線的設定。
前提
- 一個極狐GitLab 賬號
- AWS 賬號
- AWS CLI(已配置好)
第一步:在 AWS CodeStar 連線中建立極狐GitLab 連線
- 登入 AWS 管理控制檯,然後導航找到 CodeBuild service。
- 在左側導航欄皮膚中選擇“設定” > “連線”。
- 點選“建立連線”按鈕。
- 選擇“GitLab”作為供應商。
- 輸入連線名稱後點選“連線到極狐GitLab”。
- 你將被重定向到極狐GitLab 認證頁面。
- 授予必要的許可權。
- 一旦成功,連線狀態將變為“可用”。
第二步:建立 AWS CodeBuild 專案
- 在 CodeBuild 儀表盤上點選“建立構建專案”。
- 輸入專案名稱和描述。
- 在源設定中,選擇“GitLab”作為供應商。
- 選擇上一步建立好的連線,然後指定極狐GitLab 倉庫和分支。
注意:從第三步開始,請根據您的特定環境和需求配置設定。
第二部分總結
這部分詳細介紹瞭如何將極狐GitLab 倉庫和 AWS CodeBuild 進行整合。此項設定會開啟一個持續整合流水線,當儲存在極狐GitLab 倉庫中的程式碼發生變更時,使用 AWS CodeBuild 就會自動完成變更程式碼的構建和測試。
第三部分:將極狐GitLab 和 AWS CodeBuild 進行整合
對於那些想要使用 AWS CodePipeline 來完成極狐GitLab 倉庫程式碼的持續交付的使用者來說,下面的內容將詳細闡述如何實現這一點。現在這一點已經非常容易實現了,因為極狐GitLab 已經成為了 AWS CodeStar 的聯結器供應商。
前提
● 一個極狐GitLab 賬號
● AWS 賬號
● AWS CLI(已配置好)
第一步:在 AWS CodeStar 連線中建立極狐GitLab 連線
- 登入 AWS 管理控制檯,然後導航找到 CodePipeline 服務。
- 在左側導航欄中選擇“設定” > “連線”。
- 點選“建立連線”按鈕。
- 選擇“GitLab”作為供應商。
- 輸入連線名稱後點選“連線到極狐GitLab”。
- 你將被重定向到極狐GitLab 認證頁面。
- 授予必要的許可權。
- 一旦成功,連線狀態將變為“可用”。
第二步:建立 AWS CodePipeline
- 在 CodePipeline 儀表盤中點選“建立流水線”。
- 輸入流水線名稱然後點選“下一步”。
- 將“GitLab”作為源供應商。
- 選擇上一步建立好的連線,然後指定極狐GitLab 倉庫和分支。
- 選擇觸發方式:你可以根據對倉庫中特定分支和檔案型別的拉取或推送事件來觸發CodePipeline流水線的執行。
注意:從第三步開始,請根據您的特定環境和需求配置設定。
第三部分總結
這部分詳細介紹了極狐GitLab 倉庫和 AWS CodePipeline 的整合。此項設定將開啟一個持續交付流水線,當極狐GitLab 倉庫中的程式碼發生變更時,變更會被自動部署到你的 AWS 環境中。
第四部分:遷移到極狐GitLab
極狐GitLab 和 AWS 的整合能夠解鎖很多豐富的功能,用以簡化你的研發工作流,而且能夠幫助你解決原始碼管理問題。這種整合可以透過多種方式來實現,每一種都有其獨特的優勢:
- 使用 AWS 服務中的 AWS CodeStar 連線完成和極狐GitLab 的整合,這種方式能夠透過使用外部 Git 倉庫(諸如極狐GitLab)和不同 AWS 服務的連線來構建統一的工作流。此項設定支援直接從極狐GitLab 倉庫來實現自動化構建、部署和其他必要的執行步驟,從而讓研發工作流更加整合和簡化。
- 透過 AWS CodeStar 連線來實現極狐GitLab 和 AWS CodePipeline 的整合,透過允許建立完整的CI/CD流水線,將自動化提升到一個新的水平。這種方式的整合能夠讓你自動化整個流程——從原始碼控制、構建到測試和部署,這些使用 AWS 服務即可,比如 CodeBuild 和 CodeDeploy。這確保了流程的可靠、可擴充套件以及高效。
- 使用 AWS CodeStar 連線將極狐GitLab 和 AWS 服務連線起來
AWS CodeStar 連線是一個允許你將外部 Git 倉庫(諸如 GitHub 或者 Bitbucket)連線 AWS 服務的服務。你還可以透過 CodeStar 連線來將極狐GitLab 連線到 AWS 服務上。當使用極狐GitLab 時,可能你需要將自定義連線設定為 HTTP Git 伺服器。使用這種方式可以將下面的 AWS 服務連線到極狐GitLab:
- AWS Service Catalog
AWS 服務目錄用來幫助組織對 AWS 資源進行標準化和管理。和極狐GitLab 整合能夠改善資源管理的透明度並簡化變更追溯。特別地,你還可以基於極狐GitLab 程式碼提交來自動化目錄的更新,這又進一步提升了操作效率。
- AWS CodeBuild
AWS CodeBuild 是一個管理構建的服務,它能夠對原始碼進行編譯、執行測試並且生成可部署的軟體包。極狐GitLab 和 CodeBuild的整合能夠實現只要極狐GitLab 倉庫中的程式碼有變更,就自動進行整個構建流程。這種構建方便的連續性讓協作和版本控制變得更加容易。
- AWS Glue Notebook Jobs
AWS Glue Notebook Jobs 是一項服務,允許你互動式地開發和執行資料準備和ETL(提取、轉換、載入)任務。極狐GitLab 和 Glue Notebook Job 的整合能夠對 notebook 和 ETL 指令碼實現版本控制,提高團隊成員的協作效率,改善資料流程流水線的質量管理。
- AWS Proton
AWS Proton 是一個能夠自動化研發、部署微服務和無伺服器應用程式的服務。透過將極狐GitLab 和 AWS Proton 進行整合,你可以對 IaC(基礎設施即程式碼) 進行管理、自動化部署,而且能夠確保環境管理的連續性,最終提高研發效率。
因為 AWS CodeStar 連線支援多種服務,因此極狐GitLab 和其他 AWS 服務的整合就變得非常容易。定期檢查支援CodeStar連線的新服務是非常有必要的。
- 透過 AWS CodeStar 連線(包括 CodeDeploy)將極狐GitLab 和 CodePipeline 連線起來
AWS CodePipeline 是一個持續交付服務,能夠自動化軟體的釋出流程。為了將極狐GitLab 和 CodePipeline 進行連線,你需要使用 AWS CodeStar Connection。此項設定允許你將極狐GitLab 指定為原始碼倉庫,然後自動化整個 CI/CD 流水線。CodePipeline 支援的主要操作包括:
- 原始碼管理:AWS CodeCommit、GitHub、GitLab、Bitbucket
- 構建和測試:AWS CodeBuild、Jenkins
- Deploy:AWS CodeDeploy、Elastic Beanstalk、ECS、S3
- 批准:手動批准
- 基礎設施管理:AWS CloudFormation
- 無伺服器:AWS Lambda
- 測試:AWS Device Farm
- 自定義操作:AWS Step Functions
透過極狐GitLab 和 CodePipeline 的整合,無論何時極狐GitLab 中的程式碼發生變更,都能自動化觸發整個流水線,完成從構建到部署。此外,將此功能和極狐GitLab 的版本控制能力結合起來,能夠更容易地追蹤部署歷史、狀態,最終帶來靈活、可靠的軟體交付。
總結
上面分享的內容提供了關於遷移到AWS並整合GitLab的全面資訊。透過上面的四個重要主題,我們涵蓋了:
- 並行遷移到極狐GitLab:如何將託管在 AWS 上的 Git 倉庫逐步遷移到極狐GitLab 上,而且能將風險最小化。
- 和 AWS CodeBuild 整合:設定與極狐GitLab倉庫整合的強大CI(持續整合)環境的步驟。
- 和 AWS CodePipeline 整合:如何使用極狐GitLab 倉庫構建高效的持續交付流水線。
- CodePipeline 和 CodeStar 連線的下游整合:利用極狐GitLab-AWS 連線獲取廣泛的服務訪問,解鎖了跨AWS生態系統的一系列整合可能性。
因為每個組織的程式碼託管和整合實現策略都是獨一無二的,本文可能只能作為你使用極狐GitLab + AWS 來構建企業自身所需工作、流程的一個初步指南。
本文由部落格群發一文多發等運營工具平臺 OpenWrite 釋出