github自动化

举个例子

  • 我写了软件 GitHub - yuhldr/ldr-translate,平时需要自己打包,然后上传发布,但是我不可能每次修改一些小问题都发布一次,这时候我可以用这个自动化自动发布 beta 版本:releases

  • 我写了个脚本,想每天某时运行一次,但是我没有服务器,也可以用它。

github Actions 可以实现上面的问题

实际的问题应用可以看这里的文件 main.yml

我取其中一部分,做个说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# 这个名字随便,只是为了区分不同的 `action`
name: AutoPkg

# 设置启动的条件,我这里设置的是,每次提交代码都编译
# 被注释掉的 schedule 是定时触发,格式与linux 的 cron 一致
on:
# schedule:
# - cron: "0 0 * * *"
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

# 设置一些固定的变量,可以用 ${{ env.SOFTWARE_NAME }} 引用
env:
TAG_NAME: "自动打包"
SOFTWARE_NAME: "ldr-translate"

# 每次触发执行什么
jobs:
# 这个名字随意
build-ldr-linux:
# 在什么服务器上运行,可以有
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3

- name: Prepare
run: |
# 自定义的一些初始化命令
rm -rf disk
make clear
echo

- name: Build rpm package
run: |
sudo apt update -y
# 安装打包rpm所需要的工具
sudo apt-get install -y rpm
# 自定义的打包命令
make rpm-gtk && make rpm-qt

# 发布到release
- name: Create Release and Upload Release Asset
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ env.TAG_NAME }}
prerelease: true
draft: false
files: |
disk/*

实际应用的时候,建议写成 Makefile,然后在这里只是调用 make 命令,自己在电脑上测试也方便,

具体的可以参见

GitHub - yuhldr/ldr-translate


本文作者:yuhldr
本文地址https://yuhldr.github.io/posts/dabdcea.html
版权声明:转载请注明出处!