Files

1.4 KiB

ci-actions

homelab Gitea Actions 的可复用安全构件。目前提供:

  • spiffe-openbao-login:用 runner 的 JWT-SVID 换取短期 OpenBao token,并在 job 的 post 阶段主动吊销。
  • setup-nexus:为匿名读取配置 Ansible Galaxy、Go Modules 与 OCI repository 地址。

Runner 前提

spiffe-openbao-login 不下载工具;runner image 必须包含 Node.js 20、spire-agent,并挂载 可访问的 SPIFFE Workload API socket。身份注册、OpenBao role 与 policy 仍由基础设施 IaC 管理,Action 不创建或扩大授权。

- uses: panxiao81/ci-actions/spiffe-openbao-login@v1
  with:
    role: ci-example

- uses: panxiao81/ci-actions/setup-nexus@v1
  with:
    ansible: 'true'
    go: 'true'
    oci: 'true'

登录 Action 将 BAO_ADDRBAO_TOKEN 写入 runner 的 GITHUB_ENV,并通过 GITHUB_STATE 将 token 交给 post action。它们属于 runner 管理的 job 临时文件;因此只允许 在一次性 Pod/VM runner 使用,不得在共享常驻 runner 或会持久化工作目录的 runner 上使用。 token 不作为 Action output,也不上传 artifact/cache。

setup-nexus 只配置匿名读取,不读取 OpenBao secret。正式发布账号建立后,应新增独立的 Nexus login Action,并绑定精确 SPIFFE ID 与最小 OpenBao policy;不得让本 Action 读取 管理员凭据。