99# Build and publish DEB packages
1010# ---------------------------------------------------------------
1111
12- name : Build and Publish DEB package
12+ name : 构建发布deb包
1313
1414on :
1515 release :
2424 default : ' 0.3.0' # 短暂时间内不可达到的最新版本号
2525
2626jobs :
27- build-deb :
27+ Build-deb :
28+ name : 构建deb包
2829 runs-on : ubuntu-latest
2930
3031 steps :
31- - name : Checkout repo
32+ - name : 检出代码
3233 uses : actions/checkout@v4
3334 with :
3435 ref : gh-build
3536
36- - name : 获取版本号 from tag or input
37+ - name : 获取版本号
3738 id : get_version
3839 run : |
3940 if [ "${{ github.event_name }}" = "release" ]; then
@@ -52,15 +53,16 @@ jobs:
5253 echo "version=$version" >> $GITHUB_OUTPUT
5354 echo "Version: $version"
5455
55- - name : Validate version tag
56+ - name : 验证版本号
5657 run : |
5758 version="${{ steps.get_version.outputs.version }}"
59+
5860 if [[ ! $version =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
5961 echo "Invalid version format: $version"
6062 exit 1
6163 fi
6264
63- - name : Update debian/changelog with version
65+ - name : 更新 debian/changelog
6466 run : |
6567 version="${{ steps.get_version.outputs.version }}"
6668
@@ -77,93 +79,86 @@ jobs:
7779
7880 mv -f new_changelog ./debian/changelog
7981
80-
81- - name : Install build dependencies
82+ - name : 安装构建依赖
8283 run : |
8384 sudo apt-get update
8485 sudo apt-get install -y debhelper devscripts build-essential fakeroot
8586
86- - name : Build package
87+ - name : 构建
8788 run : |
8889 make build-deb
8990
90- - name : Move package into dist
91+ - name : 移动构建产物到./dist和./ dist-for-pre
9192 run : |
9293 version="${{ steps.get_version.outputs.version }}"
9394
94- # Move the generated .deb file to a known location
95- mkdir -p dist
95+ # 创建两个目录来存放构建产物(产物内容一样,只是文件名不一样)
96+ mkdir dist dist-for-pre
9697 find ./pkg -name "chsrc_${version}*.deb" -exec mv {} dist/ \;
98+ cp -r dist/ dist-for-pre/
9799
98- # Rename to standardized format if needed
99- cd dist
100- for file in chsrc_${version}*.deb; do
101- if [ -f "$file" ]; then
102- new_name="chsrc_${version}-1_amd64.deb"
103- if [ "$file" != "$new_name" ]; then
104- mv "$file" "$new_name"
105- fi
106- break
107- fi
100+ # 上传至 'pre' release 的文件名需要设置为 'latest', 从而稳定下载URL
101+ cd ./dist-for-pre
102+ for old_name in ./chsrc_${version}*.deb; do
103+ new_name="${old_name/${version}-1/latest-1}"
104+ mv "$old_name" "$new_name"
108105 done
109106
110- - name : Verify package
107+ - name : 验证生成的deb包
111108 run : |
112109 version="${{ steps.get_version.outputs.version }}"
113110 ls -la dist/
114111 dpkg-deb --info dist/chsrc_${version}-1_amd64.deb
115112 dpkg-deb --contents dist/chsrc_${version}-1_amd64.deb
116113
117- - name : Test package installation
114+ - name : 测试deb包能否正常安装
118115 run : |
119116 version="${{ steps.get_version.outputs.version }}"
120117
121- # Install the package
122118 sudo dpkg -i dist/chsrc_${version}-1_amd64.deb || true
123119 sudo apt-get install -f -y || true
124120
125- # Run DEB installation tests
126121 bash pkg/DEB/deb-installation-test.sh
127122
128-
129- - name : Upload DEB artifact
123+ - name : 上传deb包到artifacts
130124 uses : actions/upload-artifact@v4
131125 with :
132- name : chsrc-deb-amd64
126+ name : chsrc-deb-files
133127 path : dist/chsrc_*.deb
134128 retention-days : 30
135129
136- - name : Upload to Releases (the newest release) if is release event
130+ - name : 上传附件到GitHub Releases(the newly created release)
137131 if : github.event_name == 'release'
138132 uses : softprops/action-gh-release@v2
139133 with :
140- files : |
141- dist/chsrc_*_amd64 .deb
134+ # 用 * 省略版本号,以及指代各种架构
135+ files : dist/chsrc_*.deb
142136 token : ${{ secrets.UPLOAD_TO_GITHUB }}
143137
144- - name : Upload to Releases (the 'pre' release) if is push event
138+ - name : 上传附件到GitHub Releases(the 'pre' release)
145139 if : github.event_name == 'push'
146140 uses : softprops/action-gh-release@v2
147141 with :
148142 tag_name : pre
149- files : |
150- dist/chsrc_*_amd64 .deb
143+ # 用 * 指代各种架构
144+ files : dist-for-pre/chsrc_latest-1_* .deb
151145 token : ${{ secrets.UPLOAD_TO_GITHUB }}
152146
153147
154148
155149
156150
157- create-repository-metadata :
158- needs : build-deb
151+ Create-APT-repository :
152+ name : 创建APT仓库
153+ needs : Build-deb
159154 runs-on : ubuntu-latest
160155 if : github.event_name == 'release'
161156
162157 steps :
163158 - name : Download all artifacts
164159 uses : actions/download-artifact@v4
165160 with :
166- pattern : chsrc-deb-*
161+ pattern : chsrc-deb-files
167162 merge-multiple : true
168163 path : ./debs
169164
0 commit comments