[英]Cloning private github repository within organisation in actions
我在组织(比如 ORG)中有 2 个私有 GitHub 存储库(比如 A 和 B)。 存储库 A 在requirements.txt
中有存储库 B:
-e git+git@github.com:ORG/B.git#egg=B
我对 A 有以下工作流程(在.github/workflows/test.yml
):
name: Python package
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Install requirements
run: |
pip install -r requirements.txt
- name: Test with pytest
run: |
pytest ./tests
由于 B 是私有的,因此安装它失败。
如果他们在同一个组织中,是否可以在此工作流程中测试 A 时安装 B? 如何?
由于访问令牌绑定到一个帐户并对其所有私有存储库具有写入权限,因此这是一个非常糟糕的解决方案。
相反,使用部署密钥。
部署密钥只是可用于克隆存储库的 SSH 密钥。
设置好后,您可以在 GitHub Action 的 SSH 代理中设置私钥。 无需导入第三方 GitHub Action,2-liner 就足够了。
eval `ssh-agent -s`
ssh-add - <<< '${{ secrets.PRIVATE_SSH_KEY }}'
pip install -r requirements.txt
我在这里找到了ssh-add
命令。
我是这样做的!
- uses: actions/checkout@v1
with:
repository: organization_name/repo_name
token: ${{ secrets.ACCESS_TOKEN }}
您需要提供一个有效的令牌,您可以按照本指南生成它
使用不带密码的 SSH 密钥访问存储库 B,或为该存储库创建访问令牌,然后使用访问令牌作为密码通过 HTTPS 访问该存储库: https://USERNAME:TOKEN@github.com/ORG/B.git
。
无需检查两次,您只需提供用于pip
访问 repo B 的 TOKEN。
- name: Install requirements
run: |
git config --global url."https://${{ secrets.ACESS_TOKEN }}@github".insteadOf https://github
pip install -r requirements.txt
我添加了这一行
git+https://YOUR_TOKEN_HERE@github.com/ORG/REPO_NAME.git@master#egg=REPO_NAME
到我的requirements.txt
并且它有效。 但正如其他人提到的,您的令牌将暴露给任何有权访问此存储库的人。 最好在您的存储库中使用秘密。
补充菲利普雷米的回应......
请注意,#egg 不一定是 github 存储库的名称。 您需要在setup.py
或setup.cfg
看到这setup.cfg
使用部署密钥,您可以做到
- uses: actions/checkout@v2
with:
ssh-key: ${{ secrets.SSH_PRIVATE_KEY }}
repository: organization_name/repo_name
为此,您需要
SSH_PRIVATE_KEY
的秘密
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.