首页 > 解决方案 > GitHub Actions 能否从私有仓库创建发布到公共仓库?

问题描述

我想创建一个包含供用户下载的资产的版本。由于它是一个私人仓库,我想在一个单独的公共仓库中创建发布。这在 GitHub Actions 中可行吗?

create-release操作中有ownerrepo参数,但在将它们设置为不同的存储库后,我一直收到错误:

   - name: Create Release
     id: create_release
     uses: actions/create-release@v1
     env:
       GITHUB_TOKEN: ${{ secrets.PAT }} # A personal access token
     with:
       tag_name: ${{ github.ref }}
       release_name: Release ${{ github.ref }}
       draft: false
       prerelease: false
       owner: foo
       repo: another_public_repo

错误:验证失败:{"resource":"Release","code":"custom","field":"tag_name","message":"tag_name is not a valid tag"}, {"resource":" Release","code":"custom","message":"发布的版本必须有一个有效的标签"}, {"resource":"Release","code":"invalid","field":"target_commitish" }

标签: github-actions

解决方案


您要么必须在tag_name. 在您的情况下,这意味着在创建发布之前在公共存储库中创建标签。或者您可以在 中指定一个分支或提交 SHA commitish,如果 中指定的标签tag_name不存在,则使用它。

  - name: Checkout public repository
    uses: actions/checkout@v2
    with:
      repository: foo/another_public_repo
      path: another_public_repo
  - name: Get tag name from ref
    shell: bash
    run: echo "::set-output name=tag::${GITHUB_REF#refs/tags/}"
    id: get_tag
  - name: Create tag in public repository
    run: |
      cd ${{github.workspace}}/another_public_repo
      git tag ${{ steps.get_tag.outputs.tag }}
      git push --tags --porcelain
  - name: Create Release
    id: create_release
    uses: actions/create-release@v1
    env:
      GITHUB_TOKEN: ${{ secrets.PAT }} # A personal access token
    with:
      tag_name: ${{ steps.get_tag.outputs.tag }}
      release_name: Release ${{ steps.get_tag.outputs.tag }}
      draft: false
      prerelease: false
      owner: foo
      repo: another_public_repo

推荐阅读