简介
github-actions 在国内环境不太好用;
私有化环境一般使用 gitea, 搭配 act_runner 来使用, 兼容 github-actions;
离线环境如何使用呢?
尝试过的方案
AI 给出过一些错误的案例, 经验证没有成功
- uses: /local/actions/checkout@v6 本地路径方式,实际是错误的
- 各自 env 方式映射到本地路径,验证无效
- 拷贝 $HOME/.cache/act 缓存的方式, 验证了一半没有成功,理论上应该是可以的;
- 将 github 的相关actiions镜像到本地仓库, 可行;但是不能这样做
- 要镜像太多库,麻烦
- 如果放在本地, 这个库必须是要能免认证就可见的, 企业场景不允许
- 如果单独在拉取时附带一个token, 则语法上就不好看, 就不兼容外网版本的workflows;
gitea使用 actions 的事项
- 默认会去 github 下载
- 可以使用
https://xxx.com/actions/checkout@v6的方式指定库 - 如果开启 DEFAULT_ACTIONS_URL = self 配置, 则在无域名路径时, 默认去当前的git仓库下载actions
- 除非使用 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd 哈希的方式, 否则每次都需要联网确认tag或分支的具体的hash
最终方案
还是在底层解决,网络代理的方式
|
|
如果后续要完全离线使用, 则将相关的 workflows 都运行一次,当 actions 下载过一次后,后续就不需要再连github, 也不需要再配置代理了,当然actions版本的位置必须使用 hash 才行;
如果跨网络目标主机不能访问代理时,可以通过 ssh 反向代理到本地
|
|
完全离线场景, 且不能使用代理时
从已经有的主机上拷贝 $HOME/.cache/act 缓存, 必须配合 uses: actions/checkout@de0facxxxxx 的方式使用。