Flutter:运行flutter pub具有私有依赖项的github操作

时间:2020-06-24 14:23:42

标签: flutter github continuous-integration continuous-deployment github-actions

我正在使用通过ssh访问在Github中私下托管的插件。在Github操作中运行flutter pub get时,此命令失败。我遵循了使用部署密钥的教程,并尝试了以下方法:

jobs:
    build:
        runs-on: ubuntu-18.04
        steps:
            -   uses: actions/checkout@v1

            -   name: Setup SSH Keys and known_hosts
                env:
                    SSH_AUTH_SOCK: /tmp/ssh_agent.sock
                run: |
                    mkdir -p ~/.ssh
                    ssh-keyscan github.com >> ~/.ssh/known_hosts
                    ssh-agent -a $SSH_AUTH_SOCK > /dev/null
                    ssh-add - <<< "${{ secrets.SSH_PRIVATE_KEY }}"

            -   name: Some task that fetches dependencies
                env:
                    SSH_AUTH_SOCK: /tmp/ssh_agent.sock
                run: flutter pub get

也尝试过:

  - uses: webfactory/ssh-agent@v0.4.0
    with:
      ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
  - name: Fetch flutter dependencies
    run: flutter pub get

但是命令仍然失败。我在做什么错,还有另一种方法可以使此命令获取私钥吗?

1 个答案:

答案 0 :(得分:3)

您可以使用此操作添加ssh密钥。

https://github.com/marketplace/actions/install-ssh-key

在存储库的秘密中插入私钥和已知主机。

注意:由于VM上的OpenSSH版本,OPENSSH格式(密钥以----- BEGIN OPENSSH PRIVATE KEY -----开头)可能不起作用。请改用PEM格式(以----- BEGIN RSA PRIVATE KEY -----开头)。要将内联密钥转换为PEM格式,只需使用ssh-keygen -p -m PEM -f〜/ .ssh / id_rsa。

您可以使用以下方法获取已知主机:

ssh-keyscan github.com

在此之后,将ssh添加到您的工作流程中:

- uses: shimataro/ssh-key-action@v2
    with:
      key: ${{ secrets.SSH }}
      name: id_rsa
      known_hosts: ${{ secrets.KNOWN_HOSTS }}

我希望这可以为您提供帮助