有这样一个需求:
我Github有个私有库(此私有库利用github action来实现自动打包,编译二进制安装文件,并发布release)
我不想公开我的代码,但我的release对应的二进制产物我希望可以公开给他人下载
我想到方法是
用一个公有库,创建一个新的github action,能够定时拉取我私有库的release(可以看做为同步私有库的release及对应的二进制文件)
或者各位大佬有其他不同思路?
看了各种github action教程,研究了一天还是不行… 
这是我要整的公有库的地址:
Nigh
(xianii)
2
私有仓库编译的二进制可以推到公开仓库的release
txyyh
(txyyh)
3
我之前是使用 cpina/github-action-push-to-another-repository 把编译产物 push 到目标仓库的特定分支,然后目标仓库再写个 action 处理 push 过来的内容,比如发布 Releases
shadows
(shadows)
5
最简单:私有仓库运行action时,也一并推送到另一个仓库的release就是了,去生成一个拥有你公开仓库content项write权限的token,填到私有仓库github action里发布release的那个action设置
基本所有这种功能的action都有这功能,自定义token与目标。建议你把你用来发布release的那个action的文档看一遍
你的想法也可行,只不过更适合来源不受你控制,但想同步。例如,备份某些公开仓库的release
另外一个比较神经质和折腾的方法是:
- 私有仓库运行action:把文件放到artifact里,然后通过rest api触发公开仓库的action运行(通过input传参)
- 然后公开仓库:从input里读参数,用 GitHub - actions/download-artifact v4下载私有仓库的artifact,然后发布
绝对可行,但明显过于复杂且浪费时间,并且需要对Github action了解深入些,不推荐使用尝试 
2 个赞
感谢上面几个大佬的思路,目前我的实现方式:
先通过action下载已发布release的版本的所有资源文件,之后再对私有库进行发布一个新的release,并上传之前下载的资源文件
name: Build Release Binaries
on:
push:
tags:
- '*'
jobs:
#生成的二进制上传到公开库
sysnc-release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
# 下载最新版本的资源文件
- name: download latest release asset files
uses: robinraju/[email protected]
with:
# 当前私有库
repository: 'stars-one/XnApp-PC'
latest: true
token: ${{ secrets.MY_PERSON_TOKEN }}
# 下载所有资源文件
fileName: '*'
- name: Check for new release
run: echo "A new release was published"
- name: Draft Release
uses: ncipollo/release-action@v1
with:
draft: false
allowUpdates: true
generateReleaseNotes: true #自动生成发行说明。
tag: "${{ github.ref_name }}"
owner: "stars-one"
repo: "XnApp-PC-Release"
artifacts: '${{ github.workspace }}/*'
token: ${{ secrets.MY_PERSON_TOKEN }}