Github Actions发布到其他仓库

问题描述 投票:0回答:1

当前我有以下代码:

name: Build-All

    on: 
      push:
        branches: [ master ]
      pull_request:
        branches: [ master ]

    jobs:    
      build-linux-64:
        name: ${{ matrix.config.name }} Build
        runs-on: ${{ matrix.config.os }}
        strategy:
          fail-fast: true
          matrix:
            config:
              - os: ubuntu-latest
                name: Ubuntu 64
                other_linker_flags: '-m64'
                arch: x86_64
                output: myLib.so

        steps:
        - name: Make fake file
          run: |
            echo "hello" > ${{ github.workspace }}/test.txt

        - name: Uploading Release
          uses: ollydev/upload-release-action@master
          with:
            repo_token: XXXXXXXXX
            file: '${{ github.workspace }}/test.txt'
            asset_name: "test"
            tag: autobuild
            owner: '${{ github.repo.owner }}'
            repo: 'B'
            overwrite: true

和两个存储库:A和B。

回购A具有上述yml作业,它是一个私人回购。它具有所有代码,对其进行编译,并希望将该发行版推送到公开的repo B。

为此,我创建了一个新的github帐户My-CI,并将其添加到私有仓库和公共仓库中。然后,在该新帐户上,创建一个范围为Personal access token

public_repo

就是这样。该代码有效..但是有没有一种方法不必创建一个单独的帐户,而只是给它作为CI来访问两个存储库的权限? IE:有一种方法可以在我的真实帐户上创建一个令牌,该令牌对于一个存储库是只读的,而对于另一个存储库是读写的?或者也许创建一个github应用令牌或只能上传一个仓库(B)发行版的东西?

github yaml privileges github-actions auth-token
1个回答
0
投票
正如您所暗示的,您不能将个人访问令牌的范围限制为针对不同存储库的不同范围。有几种方法可以做到这一点。

中级,公共存储

[首先是将工件上传到中间位置,该位置可从任何地方访问,例如Dropbox,Docker Hub等。然后,您可以在公共存储库中手动触发github动作,以拉回该工件并从中创建发布。要手动触发此操作,您可以使用repository_dispatch事件,可以在本地使用cURL / postman(带有访问令牌认证承载),也可以使用https://www.actionspanel.app/之类的东西,它是一个github应用,允许您使用repository_dispatch手动触发github动作],并带有参数,因此您的下载链接将是一个参数。

个人访问令牌

最简单的选项仍然是个人访问令牌。您上面的工作流程为repo_token: XXXXXXXXX,这使我想知道您是否知道github的秘密?理想情况下,此令牌将存储在一个秘密中,然后使用${{ secrets.BRANDONS_TOKEN }}访问。我想问一下,为什么您担心个人访问令牌。如果您使用github机密并且对将令牌传递给的第三方代码非常小心(例如,您可能不想简单地将令牌传递给@master),那应该没问题。

GitHub Apps和Webhooks

GitHub应用程序或webhooks是另一种方法,您可以按个人和按回购的方式对它们进行身份验证,但是您需要一个在线运行的应用程序来接收和解析消息及其大量工作。

((可能不是)GitHub部署密钥

另外要注意的是Github部署密钥,您可以使用它们来获得对单个存储库的读/写访问权限,而无需附加帐户。然后,您可以将此部署密钥存储在另一个存储库的秘密中。但是,我不确定您是否可以使用部署密钥触发发布-它们没有绑定到帐户,因此我不确定谁的用户名会在发布历史记录中显示。
© www.soinside.com 2019 - 2024. All rights reserved.