目前星念社桌面端由于采用了Compose架构,打包不同系统平台得依赖当前系统,如打包mac安装包则需要mac系统,打包window安装包则需要window系统
想到了可以使用github action来实现自动打包,但是我希望能够将打包后的产物能够上传到公开库中,而我私有库代码不公开,所以有下面的action示例
如果各位是有类似需求,可以进行参考
原理
私有库当前action有几个打包任务,打包后会将二进制产物输出到私有库的release的附件中
之后我们在此action之后再写一个job,用来等待上述几个打包任务完成后,将私有库的release所有文件都下载下来,并上传到另外公开库的release中(即是我们下面贴出的action代码)
action代码
name: Build Release Binaries
on:
push:
tags:
- '*'
jobs:
# 这里还有几个job用来执行打包命令,我这里省略了... 可参考此文件内容: https://github.com/stars-one/IconDrawableGenerator/blob/main/.github/workflows/release.yml
#生成的二进制上传到公开库
sysnc-release:
runs-on: ubuntu-latest
# 等待上述几个打包任务都完成
needs: [create-linux-package, create-win-package, create-mac-arm64-package, create-mac-x64-package]
# 设置这个,如果上述几个任务有某个执行失败的,当前job也会执行
if: ${{ always() }}
permissions:
contents: write
steps:
# 下载最新版本的资源文件
- name: download latest release asset files
uses: robinraju/release-downloader@v1.10
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 }}
前往这个地址: https://github.com/[OWNER]/[REPO]/settings/secrets/actions
OWNER和REPO需要更改为你自己的账户名和仓库名,然后输入对应的数据,如下图所示
MY_PERSON_TOKEN
就是我输入的自己的个人token,后面的action脚本通过secrets.MY_PERSON_TOKEN
来读取我们配置的信息
如何获取自己的token?
步骤如下:
GitHub > Setting > Developer settings > Personal access tokens > repo scope
评论区