如何配置 git 以在 GitHub 操作结帐中使用 PAT 令牌

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

我需要在 GitHub Actions 工作流程中查看私有存储库。我正在使用结账操作,并遵循其自述文件

  1. 我创建了一个服务帐户,即一个单独的 GitHub 帐户,仅用于 GitHub Actions 工作流程。
  2. 我为服务帐户创建了一个 PAT(个人访问令牌),有权访问私有存储库和当前工作流存储库。
  3. 我创建了一个秘密来存储 PAT 令牌。

现在,当我执行以下操作时,它不起作用:

- name: Checkout
  uses: actions/checkout@v2
  with:
    token: ${{secrets.MY_TOKEN}}

看来我没有正确配置

git
以允许它使用令牌。我的问题是:我应该或者如何配置
git config
在上述步骤中使用令牌?

私有存储库是主存储库的依赖项。两个存储库都是 Rust 程序,使用 Cargo,因此我尝试使用相同的服务帐户首先检查主存储库。然后 Cargo 将查看私人仓库。

github-actions rust-cargo git-config
3个回答
4
投票

根据操作/签出文档,您还需要为私有存储库添加

repository input

您的工作流程

.yml
文件中的内容应如下所示:

- name: Checkout
  uses: actions/checkout@v2
  with:
    path: main

- name: Checkout private repo
  uses: actions/checkout@v2
  with:
     repository: your-private/repo_name
     token: ${{ secrets.MY_TOKEN }}

您不需要配置任何其他相关内容

git

除非您需要特定的

path
,在这种情况下您还需要将其作为输入告知:

- name: Checkout private repo
  uses: actions/checkout@v2
  with:
     repository: your-private/repo_name
     token: ${{ secrets.MY_TOKEN }}
     path: path-to-directory

4
投票

如果是关于 Rust Cargo 使用 token 访问 github,那么一个可行的选择可能是添加一个设置 token 并强制 https 访问的步骤:

- name: Set github url and credentials
  run: |
    /usr/bin/git config --global --add url."https://${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}:x-oauth-basic@github".insteadOf ssh://git@github
    /usr/bin/git config --global --add url."https://${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}:x-oauth-basic@github".insteadOf https://github
    /usr/bin/git config --global --add url."https://${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}:x-oauth-basic@github".insteadOf git@github

0
投票

使用 GitHub 应用程序托管访问:

参见:https://docs.github.com/en/apps/creating-github-apps/about-creating-github-apps/about-creating-github-apps

支持通用ssh和token授权:

    steps:
      - uses: actions/checkout@v4
      - uses: actions/create-github-app-token@v1
        id: app-token
        with:
          app-id: ${{ vars.APP_ID }}
          private-key: ${{ secrets.SSH_PRIVATE_KEY }}
          owner: ${{ github.repository_owner }}
      - name: Set github url and credentials
        run: |
          git config --global --add url."https://x-access-token:${{ steps.app-token.outputs.token }}@github".insteadOf ssh://git@github
          git config --global --add url."https://x-access-token:${{ steps.app-token.outputs.token }}@github".insteadOf https://github
          git config --global --add url."https://x-access-token:${{ steps.app-token.outputs.token }}@github".insteadOf git@github
© www.soinside.com 2019 - 2024. All rights reserved.