跳到内容

使用发布工作流

以下 GitHub Actions 应放置在 .github/workflows 目录下,文件名为 {filename}.yaml。此 GitHub Action 在 Ansible Automation Hub 和 Ansible Galaxy 中发布集合,它依赖于环境 release,该环境必须包含以下密钥。

AH_TOKEN: 与 Ansible Automation Hub 交互所需的 Automation Hub 令牌。ANSIBLE_GALAXY_API_KEY: 与 Ansible Galaxy 交互所需的 Galaxy 令牌。

注意 - ansible-content-actions/release.yaml 在内部使用 release_ah.yaml 和 release_galaxy.yaml。

文件名: release.yaml

---
name: "Release collection"
on:
  release:
    types: [published]

jobs:
  release:
    uses: ansible/ansible-content-actions/.github/workflows/release.yaml@main
    with:
      environment: release
    secrets:
      ah_token: ${{ secrets.AH_TOKEN }}
      ansible_galaxy_api_key: ${{ secrets.ANSIBLE_GALAXY_API_KEY }}

工作流运行结果为 -

Alt text

发布分为两部分,Automation Hub 发布,然后是 Ansible Galaxy 发布。如果 Automation Hub 发布失败,则跳过 Galaxy 作业。

示例显示如何仅进行 Automation Hub 发布,在这些情况下只需要 ah_token

仅在 AH 上发布,工作流

文件名: release.yaml

---
name: "Release collection on Automation Hub"
on:
  release:
    types: [published]

jobs:
  release_automation_hub:
    uses: ansible/ansible-content-actions/.github/workflows/release_ah.yaml@main
    with:
      environment: release
    secrets:
      ah_token: ${{ secrets.AH_TOKEN }}

仅在 Galaxy 上发布,工作流

文件名: release.yaml

---
name: "Release collection on Ansible Galaxy"
on:
  release:
    types: [published]

jobs:
  release_automation_hub:
    uses: ansible/ansible-content-actions/.github/workflows/release_galaxy.yaml@main
    with:
      environment: release
    secrets:
      ah_token: ${{ secrets.ANSIBLE_GALAXY_API_KEY }}

详细的发布流程

发布前要确保的事项:

环境:

要发布的仓库必须创建以下环境

  • 名称:release

  • AH_TOKEN

  • ANSIBLE_GALAXY_API_KEY

  • 名称:push

  • BOT_PAT

  • refresh_ah_token: 确保 netcommon 中的此工作流在上一次运行中已成功运行。如果未运行,则必须触发重新运行并确保其成功执行。

准备用于发布的仓库(draft_release 工作流仅使用 BOT_PAT,即 Ansibuddy):

此步骤将被手动运行的 push 工作流所取代,目前不建议这样做,因为其行为不稳定。在生成变更日志方面。

  1. 开始准备用于发布的仓库:在本地仓库上运行 antsibull-changelog,创建一个 PR,并将其合并。
  2. 现在我们可以发布了。

确保 galaxy.yml 与发布版本同步。在 Galaxy 和 AH 中推送的版本引用自 galaxy.yml 中的 version:

通过 GitHub 发布流程:

  1. 转到 GitHub UI 中的发布页面,并创建一个新的发布。
  2. 创建一个新的标签,并以这种格式命名 - v[version_num] - 例如,v5.2.1
  3. 注意:v 前缀存在于 GH 标签中,并在 AH 和 Galaxy 版本中被删除。
  4. 将标题命名为与标签相同。
  5. 放入变更日志 - 可以在 CHANGELOG.rst(原始)中找到。
  6. 点击发布按钮,它将发布集合。
  7. 在“Actions”选项卡中查找发布操作。AH 发布首先发生,然后是 Galaxy 发布。如果 AH 发布失败,则 Galaxy 发布也会失败。