liatrio/autogov-caller-workflows
GitHub: liatrio/autogov-caller-workflows
演示如何在 GitHub Actions 中复用自动化治理工作流,实现构建、签名认证与 SLSA 来源证明的完整流程。
Stars: 0 | Forks: 0
# 使用 GitHub Artifact Attestations 的调用方工作流
本仓库是一个实例,演示了如何使用来自
[liatrio/autogov-workflows](https://github.com/liatrio/autogov-workflows) 的可复用自动化治理工作流。
它构建了一个小型的演示应用(包含一个 container image 和几个 blobs),并通过可复用的构建和证明工作流来运行它,以便您可以了解证明流程并将其适配到您自己的仓库中。
## 演示内容
- **`cw-build-image.yaml`** — 调用 `rw-build-image.yaml` 来构建演示 container image,将其推送到 GHCR,并生成一个已签名的 artifact attestation。
- **`cw-build-blob.yaml`** — 调用 `rw-build-blob.yaml` 以对任意文件 blobs 进行证明(默认仅在 `workflow_dispatch` 下运行)。
- **`wf-slack-alert.yaml`** — 当其中一个构建工作流在 `main` 分支上失败时发布 Slack 消息。
演示应用程序本身位于 `app.py` / `requirements.txt` 中,并由 `Dockerfile` 构建。该文件使用公共的 Python 基础镜像,以便外部 forks 无需访问私有 registry 即可构建它。
## 前置条件
- **GHCR 访问权限** — 镜像构建后会推送到 `ghcr.io`。工作流使用作业的 `GITHUB_TOKEN`(具有 `packages: write` 权限),因此推送到您自己仓库/组织中的 packages 无需额外的凭据。之后如果要拉取镜像,请使用具有 `read:packages` 权限的 token 向 GHCR 进行身份验证(`docker login ghcr.io`)。
- **`SLACK_WEBHOOK` secret** — `wf-slack-alert.yaml` 会读取 `secrets.SLACK_WEBHOOK`。如果您希望接收失败警报,请在 **Settings → Secrets and variables → Actions** 下将其设置为[传入 webhook URL](https://api.slack.com/messaging/webhooks)。如果没有设置,警报步骤仍会运行,但发布操作会静默失败;流水线的其余部分不受影响。
- **工作流权限** — 调用方工作流请求了 `id-token: write`、`attestations: write`、`packages: write` 和 `contents: write` 权限。请确保已启用 Actions,并且您的组织/仓库允许这些权限。
## 为您的仓库进行适配
1. 将 `.github/workflows/` 下的工作流复制到您的仓库中。
2. 将可复用的工作流引用(`uses: liatrio/autogov-workflows/...@`)以及匹配的 `cert-identity:` 值更新为您希望锁定的版本。
3. 将演示用的 `app.py`、`requirements.txt` 和 `Dockerfile` 替换为您自己的应用程序,或者将 `subject-name` / `subject-path` 指向您真实的构建 artifacts。
4. 如果您想要失败通知,请添加 `SLACK_WEBHOOK` secret;如果不想要,请移除 `wf-slack-alert.yaml`。
标签:DevSecOps, GitHub Actions, SLSA, 上游代理, 容器镜像, 开源框架, 持续集成, 自动笔记, 请求拦截, 跌倒检测, 软件物料清单, 逆向工具