场景

◇ GitHub 的项目 A 中,某个子文件夹需从另一个私有项目 B 通过 git clone 得到,有了这个子文件夹,项目 A 的 workflow 中某 step 才能正确执行。

实现方式

◆ 使用 workflow 提供的 actions/checkout@v4 来 clone 代码,为其指定鉴权 token 以实现对私有仓库的访问。

操作步骤

鉴权 token 的获取

■ 进入对项目 B 有访问权限的 GitHub 用户的 Settings 页面。
■ 进入 Developer Settings->Presonal access tokens->Tokens(classic)菜单,创建一个”personal access token (classic)”,期间指定有效期,以及勾选 clone 项目 B 所需权限相关的 scopes。

配置 token 到项目 A

■ 进入项目 A 的 Settings 页面。
■ 进入 Security->Secrets and variables->Actions 菜单,通过”New repository secret”按钮创建一个 secret,期间的 Secret 内容填写上一步的 token 值。

workflow 配置 clone 项目 B

■ 相应 workflow 的 yaml 配置文件中,在依赖于子文件夹的 step 之前增加一个 clone 项目 B 代码到子文件夹的 step,示例如下,将其中的<>值替换为真实值。

1
2
3
4
5
6
7
8
9
10
11
- ...other steps
...
- name: Clone private repository
uses: actions/checkout@v4
with:
repository: <organization or personal space>/<repository name>
ref: <branch name>
token: ${{secrets.<secret name>}}
path: <destination folder name of the git clone>
- ...other steps
...