在 Github Actions 中克隆一个私有仓库
Posted
技术标签:
【中文标题】在 Github Actions 中克隆一个私有仓库【英文标题】:Cloning a private repo in Github Actions 【发布时间】:2020-06-17 00:59:21 【问题描述】:我正在尝试在 Github 操作中克隆另一个私人仓库。我在我正在运行操作的回购的秘密中设置了SECRET_USER
和SECRET_PASSWORD
。在操作中我正在运行命令
git clone https://$SECRET_USER:$SECRET_PASSWORD@github.com/other-organization/other-repo.git
但出现错误
Cloning into 'other-repo'...
remote: Repository not found.
fatal: Authentication failed for 'https://github.com/other-organization/other-repo.git/'
##[error]Process completed with exit code 128.
在 Github Actions 中,虽然我已经验证用户可以访问 https://github.com/other-organization/other-repo
(这显然不是内部 repo 的真实 URL)。
【问题讨论】:
git clone https://$SECRET_USER:$SECRET_PASSWORD@github.com/other-organization/other-repo.git
在您的本地计算机上是否适合您?
秘密应该像这样引用$ secrets.SECRET_USER
,除非你的run
步骤设置env
变量。
【参考方案1】:
我在我的go.yml
中添加了一个 git 配置步骤,它成功了:
- name: Configure git
env:
TOKEN: $ secrets.ACCESS_TOKEN
run: git config --global url."https://$TOKEN:x-oauth-basic@github.com/".insteadOf "https://github.com/"
其中ACCESS_TOKEN
是personal access token,而不是用户名/密码组合,因为我尝试访问的私有存储库需要启用 SSO 的令牌才能访问它,而不是用户名/密码组合。不幸的是,这在错误消息中并不明显,需要与人交谈才能了解此信息。
【讨论】:
【参考方案2】:您可以使用git-credential-store 将您的凭据保存在文件中,以便 git 可以在需要时使用它。 在(我的情况)Podfile/specfile 中不需要修改 url。
git config --global credential.helper store
echo "https://$SECRET_USER:$SECRET_PASSWORD@github.com" > ~/.git-credentials
我对将此类数据保存在纯文本文件中的感觉很复杂,但在 CI/CD 机器上,我认为这很好。我用它here。
【讨论】:
以上是关于在 Github Actions 中克隆一个私有仓库的主要内容,如果未能解决你的问题,请参考以下文章
GitHub Actions - 将公共回购克隆到我的私人回购?
如何从 GitHub Actions 克隆 BitBucket 项目?
在 Github Actions 上从 package.json 安装私有 github 包
使用 GitHub Actions 从私有 GitHub 存储库安装 npm 模块