筆記
此 GitHub Action 尚不支援與 CircleCI GitHub 應用程式整合的 CircleCI 專案。 如果您的 CircleCI 專案 URL 如下所示: https://app.circleci.com/projects/organizations/circleci%
,則您正在與 CircleCI GitHub 應用程式集成,並且尚不支援此 GitHub Action。 如有任何問題/回饋,請聯絡 [email protected]。 如果您的 CircleCI 專案 URL 如下所示: https://app.circleci.com/projects/project-dashboard/github/
,則您正在使用 CircleCI 的 OAuth 應用程式集成,並且支援此 GitHub Action。
使用 GitHub Actions 從 GitHub 上的任何事件觸發 CircleCI 管道。
為所需的 CircleCI 管道建立 GitHub Action 的工作流程。
透過將工作流程 YAML 檔案(我們將使用main.yml
)新增至./.github/workflows
來完成此操作。
此範例中顯示了release
觸發器。嘗試任何 GitHub 事件來觸發工作流程:https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows
為 CircleCI 管道中其他上下文元資料的步驟選擇自訂名稱和 ID
on:release:types:[已發布]jobs:trigger-circleci:runs-on:ubuntu-latest 步驟: - 名稱:<自訂名稱> id:<自訂 id> 使用:CircleCI-Public/[email protected] env:CCI_TOKEN:${{secrets.CCI_TOKEN }}
建立一個名為CCI_TOKEN
的加密金鑰,其中包含將用於觸發管道的個人 API 令牌。建議是機器使用者。
將管道參數定義新增至 CircleCI 配置。這些數據將在觸發時由 GitHub Action 輸入。
將以下內容新增至.circleci/config.yml
檔案的頂部。確保您指定版本2.1
版本:2.1 參數:GHA_Actor:類型:字串預設值:“” GHA_Action:類型:字串預設值:“” GHA_Event:類型:字串預設值:“” GHA_Meta:類型:字串預設值:“”
使用管道參數資料有條件地運行工作流程。
請參閱:範例
可選輸入參數,可讓您指定其他元資料。
必填:假
描述:可選的附加元資料參數。將在 CircleCI 管道上以 GHA_Meta 形式提供。
作業:trigger-circleci:運行:ubuntu-最新步驟: - 名稱:<自訂名稱> id:<自訂id> 使用:CircleCI-Public/[email protected] 以及:GHA_Meta:「<自訂資料>」env:CCI_TOKEN:${{ secrets.CCI_TOKEN }}
必填:假
描述:目標專案的 CircleCI 專案 slug(例如: github/
)。如果未指定,將使用目前 GitHub 儲存庫的 slug。
作業:trigger-circleci:運行:ubuntu-最新步驟: - name:id: using: CircleCI-Public/[email protected] with: target-slug: "gh/ / " # 將觸發外部專案環境的管道:CCI_TOKEN: ${{ Secrets.CCI_TOKEN }}
場地 | 資料類型 | 描述 |
---|---|---|
id | 字串(uuid) | 管道的唯一 ID。 |
state | 字串(枚舉:「已建立」「錯誤」「設定待處理」「設定」「待處理」) | 管道的目前狀態。 |
number | 整數(int64) | 管道的數量。 |
created_at | 字串(日期時間) | 建立管道的日期和時間。 |
預設情況下,當儲存庫連接到 CircleCI 時,如果該專案配置中的工作流程未指定任何會阻止執行的條件或篩選器,則預設工作流程將在每個push
事件上執行。
這可能意味著一個作業可能會意外運行兩次,一次是來自 CircleCI 的push
事件,一次是由 GitHub Action 觸發的其他事件。
如果您依賴 GitHub Actions 提供所有 API 觸發器,請確保每個 CircleCI 配置的工作流程都包含一個條件,限制其僅執行 GitHub Action 觸發器。
例子
工作流程: # 此工作流程設定為有條件觸發, # 僅透過 GitHub Action。 # 如果沒有其他未過濾的工作流程,正常的推播事件將被忽略。 測驗:當:<< pipeline.parameters.GHA_Action >> 作業: - 測試