笔记
此 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 >> 作业: - 测试