簡體   English   中英

在另一個工作流成功運行后手動觸發 Github Actions 工作流

[英]Manually trigger Github Actions workflow after another workflow successfully runs

我正在嘗試創建執行以下操作的 CI:

  1. 運行terraform plan -out=plan.out生成 Terraform 計划。
  2. After looking at the Terraform plan output in Github actions, I can manually run another job or workflow that calls terraform apply plan.out with the previously generated plan. 我想在其他自動化成功運行后手動運行此自動化,這取決於先前自動化的成功,使用來自先前自動化的工件。

我已經在網上查找了一些示例,但是我可以找到的所有示例都只是運行terraform apply而沒有實際允許某人驗證計划 output。

這是可以在 Github Actions 中做的事情嗎?

這可以使用受保護環境所需的審閱者來完成: https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#required-reviewers

您要做的是設置一個環境,例如production環境並將自己添加為審閱者。

在您的工作流程中,您將添加如下環境:

jobs:
  plan:
    steps:
      - run: terraform plan
  apply:
    environment: production
    steps:
      - run: terraform apply

這意味着一旦工作流到達 job apply ,它將停止,您需要手動單擊按鈕進行批准。

我的解決方案最終如下:

當 PR 被批准和合並后,會創建一個 Terraform 計划並推送到路徑中提交 hash 的 S3 存儲桶。 然后,當通過工作流調度觸發應用工作流時,它會查找正在運行的代碼的提交 hash 的計划並應用它。

由於以下原因,按照建議使用拉取請求對我來說不是正確的解決方案:

  1. 你怎么知道為拉取請求運行的計划是在基礎分支上使用最新更改運行的? 在這種情況下,該計划可能無效。 我解決這個問題的方法是讓計划工作流在推送與被 Terraformed 環境相對應的特定分支時運行。 這種方式總是為 state 生成計划,Terraform 表示應該在特定環境中。

  2. 您如何知道申請正在應用為拉取請求生成的確切計划? 我看到的所有示例實際上最終都在應用工作流中重新運行了計划,這破壞了 Terraform 計划的預期用途。 我解決這個問題的方法是讓應用工作流在雲存儲中查找特定的提交 hash。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM