天天看點

Github continuous deployment (CD) 最佳實踐

您可以使用 GitHub 操作直接在 GitHub 存儲庫中建立自定義持續部署 (CD) 工作流。

About continuous deployment

持續部署 (CD) 是使用自動化來釋出和部署軟體更新的做法。作為典型 CD 流程的一部分,代碼會在部署前自動建構和測試。

持續部署通常與持續內建相結合。有關持續內建的更多資訊,請參閱“關于持續內建”。

About continuous deployment using GitHub Actions

您可以設定 GitHub 操作工作流來部署您的軟體産品。為了驗證您的産品是否按預期工作,您的工作流程可以在您的存儲庫中建構代碼并在部署之前運作您的測試。

您可以将 CD 工作流配置為在 GitHub 事件發生時(例如,将新代碼推送到存儲庫的預設分支時)、按設定的計劃、手動或在使用存儲庫排程 Webhook 發生外部事件時運作。有關何時可以運作工作流的更多資訊,請參閱“觸發工作流的事件”。

GitHub Actions 提供的功能可讓您更好地控制部署。例如,您可以使用 environments 要求準許作業才能繼續、限制哪些分支可以觸發工作流或限制對機密的通路。您可以使用并發将 CD 管道限制為最多一個正在進行的部署和一個待處理的部署。有關這些功能的更多資訊,請參閱“使用 GitHub 操作進行部署”和“使用環境進行部署”。

Using environments for deployment

您可以使用 protection rules 和 secrets 配置環境。 在運作或通路環境的 secrets 之前,引用環境的工作流作業必須遵循環境的任何保護規則。

什麼是 environments

環境用于描述一般部署目标,如生産、暫存或開發。 當 GitHub Actions 工作流部署到環境時,環境會顯示在存儲庫的首頁上。有關檢視環境部署的更多資訊,請參閱“檢視部署曆史記錄”。

您可以使用保護規則和 secrets 配置環境。 當工作流作業引用環境時,在所有環境保護規則都通過之前,作業不會啟動。在所有環境保護規則都通過之前,作業也無法通路環境中定義的機密。

Environment protection rules

環境保護規則要求通過特定條件才能繼續進行引用環境的作業。您可以使用環保規則來要求手動審批、延遲作業或将環境限制為某些分支機構。

Required reviewers

使用必需的審閱者來要求特定人員或團隊準許引用環境的工作流作業。您最多可以列出六個使用者或團隊作為審閱者。審閱者必須至少具有對存儲庫的讀取權限。 隻有一名所需的審閱者需要準許作業才能繼續進行。

Environment secrets

存儲在環境中的機密僅可用于引用該環境的工作流作業。 如果環境需要準許,則在所需的審閱者之一準許之前,作業無法通路環境機密。

Using an environment

工作流中的每個作業都可以引用一個環境。在将引用環境的作業發送到運作程式之前,必須通過為環境配置的任何保護規則。 隻有在将作業發送給運作程式後,作業才能通路環境的機密。

當工作流引用環境時,環境将出現在存儲庫的部署中。 有關檢視目前和以前部署的詳細資訊,請參閱“檢視部署曆史記錄”。

您可以為工作流程中的每個作業指定一個環境。 為此,添加一個 jobs. .environment 鍵,後跟環境名稱。

例如,此工作流将使用稱為 production 的環境。

Github continuous deployment (CD) 最佳實踐

當上述工作流運作時,部署作業将遵循為生産環境配置的任何規則。 例如,如果環境需要審閱者,則作業将暫停,直到其中一位審閱者準許該作業。

您還可以為環境指定 URL。 指定的 URL 将顯示在存儲庫的部署頁面(通過單擊存儲庫首頁上的環境通路)和工作流運作的可視化圖中。 如果拉取請求觸發了工作流,則 URL 還會在拉取請求時間線中顯示為“檢視部署”按鈕。

How environments relate to deployments

當引用環境的工作流作業運作時,它會建立一個部署對象,并将環境屬性設定為您的環境名稱。 随着工作流的進行,它還會建立部署狀态對象,其中 environment 屬性設定為您的環境名稱,environment_url 屬性設定為 environment 的 URL(如果在工作流中指定),以及 state 屬性設定為工作。

您可以通過 REST API 或 GraphQL API 通路這些對象。 您還可以訂閱這些 webhook 事件。

繼續閱讀