目 录CONTENT

文章目录

利用Github Action,将私有库的release同步到公开库

Stars-one
2024-07-26 / 0 评论 / 0 点赞 / 80 阅读 / 3697 字

目前星念社桌面端由于采用了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

参考

0

评论区