如何在GitHub Actions的service服务中登录私有GitHub Package Registry
解决方案
- 第一步:给Workflow配置
packages: read权限,确保GitHub自动生成的GITHUB_TOKEN有读取GHCR镜像包的权限。如果你的私有镜像和当前Workflow所在仓库属于同一个组织/个人账号,直接用内置的GITHUB_TOKEN即可,不需要额外生成令牌。 - 第二步:在service的配置块下添加
credentials字段,传入GHCR的登录信息,用户名固定为${{ github.actor }},密码用${{ secrets.GITHUB_TOKEN }}即可。
完整配置示例如下:
on: push # 新增权限配置 permissions: packages: read jobs: runner-job: runs-on: ubuntu-latest services: postgres: image: ghcr.io/orgname/reponame:tag # 新增登录凭证配置 credentials: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }}
如果要拉取的私有镜像和当前Workflow所在仓库不属于同一个组织/个人账号,你需要单独生成拥有
read:packages权限的个人访问令牌(PAT),将PAT存储为当前仓库的密钥(比如命名为GHCR_PULL_TOKEN),然后把上面配置里的secrets.GITHUB_TOKEN替换为secrets.GHCR_PULL_TOKEN即可。
内容的提问来源于stack exchange,提问作者Antonio Gamiz Delgado
相关产品推荐
相关产品推荐

