GitHub Actions 无法从私有仓库获取 pub 包

5

我有一个Flutter项目,它正在从Github上的私有仓库中获取包,例如:

dependencies:
  flutter:
    sdk: flutter

  my_package:
    git:
      url: git@github.com:username/my_package.git
      ref: main

当我在本地计算机上运行flutter pub get时,一切正常,因为我通过ssh将计算机连接到GitHub,但是一旦我在GitHub上推送,我的GitHub actions 就无法获取包并显示以下信息:git@github.com: Permission denied (publickey)。我理解错误消息,我想知道是否有更好的方法来解决这个问题并通过操作。 以下是GitHub操作脚本:
name: Flutter

on: [pull_request, push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - uses: subosito/flutter-action@v1.5.0

      - name: Install Dependencies
        run: flutter packages get

      - name: Format
        run: flutter format --set-exit-if-changed lib test

      - name: Analyze
        run: flutter analyze lib test

      - name: Run tests
        run: flutter test --no-pub --coverage --test-randomize-ordering-seed random

2个回答

8

“权限被拒绝”错误表示服务器拒绝了您的连接。GitHub Actions仅有对他们运行的仓库的访问权限。

获取此私有包的两种方法:

1- 个人访问令牌

简单的方法是创建新的个人访问令牌并使用该访问令牌获取库。

dependencies:
  flutter:
    sdk: flutter
  private_package:
    git:
      url: https://username:token@github.com/user/repo
      ref: main

  • ref是分支名称或提交ID

  • url示例:https://Mdkhaki:ghp_LMWzHKnNctxxX9dmP4kxmnwjshRMmJ2MyjF8@github.com/Mdkhaki/private-package.git

2- SSH-agent

因此,为了访问额外的私有存储库,您需要创建具有足够访问权限的SSH密钥。要了解更多信息,请访问


2
我为了安全目的使用了SSH代理,它对他起作用了。这个答案应该被接受。 - ygorazevedo

-3

如果您正在使用的是不一定是私有的个人存储库,您可以像这样在 GitHub actions 中使用它:

dependencies:
  flutter:
    sdk: flutter
  your_package:
    git:
      url: https://github.com/your_username/repo.git
      ref: master

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