GitHub Actions和git clone问题

5

在 Github Actions 中使用 git clone 时遇到了一些问题,无论尝试什么方式都会出现以下错误:

在我的 main.yml 文件中导致失败的代码如下:

jobs:
 terraform:
   name: 'Terraform with Github Actions!'
   runs-on: ubuntu-latest
   steps:
   - name: 'Login to Azure'
    uses: azure/login@v1
    with:
      creds: ${{ secrets.AZURE_CREDENTIALS }}
  - name: 'Checkout'
    uses: actions/checkout@master
  - name: 'Preparing blueprint-environment'
    run: |
      snip
      git clone git@github.com:ourcompany/whateverrepo.git

错误信息:

git@github.com: 拒绝访问(publickey)。

我看到很多关于添加ssh密钥的帖子,但那是在本地操作,而不是在从Github操作运行的Ubuntu版本上 - 我在这里缺少什么?我无法生成ssh密钥,并即时将私钥添加到Github存储库设置中,我应该如何解决这个问题?

1个回答

9
如果您需要检出两个存储库,我建议再次使用checkout到相对路径。请参阅文档checkout multiple repos side by side。您可能需要使用repo范围的Personal Access Token (PAT)
  - name: 'Checkout'
    uses: actions/checkout@v2
  - name: 'Preparing blueprint-environment'
    uses: actions/checkout@v2
    with:
      token: ${{ secrets.PAT }}
      repository: ourcompany/whateverrepo
      path: whateverrepo

如果必要的话,可以使用部署密钥通过SSH克隆存储库。
  1. 为您的存储库创建新的SSH密钥对。不要设置密码。
  2. 将公钥(.pub文件)的内容复制到新的存储库部署密钥中,并选中“允许写入访问权限”复选框。
  3. 向存储库添加一个包含私钥的完整内容的秘密。
  4. 如下面的示例所示,配置actions/checkout以使用您创建的部署密钥。
    steps:
      - uses: actions/checkout@v2
        with:
          ssh-key: ${{ secrets.SSH_PRIVATE_KEY }}

所以需要添加的这个令牌,是不是来自蓝图存储库的相似令牌,现在也添加到想要检出蓝图的当前存储库中?感谢您的回复! - shakalakka
1
需要在具有对蓝图存储库的写访问权限的帐户上创建 PAT - peterevans
快速跟进,我在通过变量插值访问PAT时遇到了问题 - PAT是通过开发者设置为用户创建的,我是否仍然能够使用{{secrets.PAT}}?这似乎只适用于在存储库上创建的secrets? - shakalakka
2
一旦PAT创建成功,您需要将其添加为工作流程运行的存储库的秘密。您可以随意命名该秘密。我在示例中使用了PAT - peterevans
那么我可以在我的 .yml 中使用 {{ secrets.whatevername }} 来访问该私有仓库? - shakalakka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接