GitHub Actions CI 自动打包

This commit is contained in:
RememBerBer
2026-06-05 23:57:28 +08:00
parent eb2f7f9708
commit 458af40938
3 changed files with 76 additions and 1 deletions
+26 -1
View File
@@ -7,7 +7,7 @@ on:
- 'v*'
permissions:
contents: read
contents: write
jobs:
package:
@@ -77,4 +77,29 @@ jobs:
if-no-files-found: error
retention-days: 14
release:
name: Publish GitHub Release
if: startsWith(github.ref, 'refs/tags/v')
needs: package
runs-on: ubuntu-latest
steps:
- name: Download packaged artifacts
uses: actions/download-artifact@v4
with:
path: release-assets
merge-multiple: true
- name: Publish release assets
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
fail_on_unmatched_files: true
files: |
release-assets/**/*.dmg
release-assets/**/*.pkg
release-assets/**/*.zip
release-assets/**/*.tar.gz
release-assets/**/*.deb
+47
View File
@@ -58,6 +58,9 @@
<java-diff.version>4.16</java-diff.version>
<packaging.outputDirectory>${project.build.directory}</packaging.outputDirectory>
<packaging.jdkPath>${java.home}</packaging.jdkPath>
<packaging.javaBinary>${java.home}/bin/java</packaging.javaBinary>
<packaging.requireRepoJdk>false</packaging.requireRepoJdk>
<packaging.targetId>mac-universal</packaging.targetId>
<packaging.mac.startup>UNIVERSAL</packaging.mac.startup>
</properties>
@@ -89,6 +92,9 @@
<properties>
<packaging.outputDirectory>${project.build.directory}</packaging.outputDirectory>
<packaging.jdkPath>${java.home}</packaging.jdkPath>
<packaging.javaBinary>${java.home}/bin/java</packaging.javaBinary>
<packaging.requireRepoJdk>false</packaging.requireRepoJdk>
<packaging.targetId>mac-universal</packaging.targetId>
<packaging.mac.startup>UNIVERSAL</packaging.mac.startup>
</properties>
<build>
@@ -126,6 +132,9 @@
<packaging.outputDirectory>${project.build.directory}/mac-intel</packaging.outputDirectory>
<packaging.mac.startup>X86_64</packaging.mac.startup>
<packaging.jdkPath>${project.basedir}/jdks/mac/x64/home</packaging.jdkPath>
<packaging.javaBinary>${project.basedir}/jdks/mac/x64/home/bin/java</packaging.javaBinary>
<packaging.requireRepoJdk>true</packaging.requireRepoJdk>
<packaging.targetId>mac-intel</packaging.targetId>
</properties>
<build>
<plugins>
@@ -162,6 +171,9 @@
<packaging.outputDirectory>${project.build.directory}/mac-apple-silicon</packaging.outputDirectory>
<packaging.mac.startup>ARM64</packaging.mac.startup>
<packaging.jdkPath>${project.basedir}/jdks/mac/arm64/home</packaging.jdkPath>
<packaging.javaBinary>${project.basedir}/jdks/mac/arm64/home/bin/java</packaging.javaBinary>
<packaging.requireRepoJdk>true</packaging.requireRepoJdk>
<packaging.targetId>mac-apple-silicon</packaging.targetId>
</properties>
<build>
<plugins>
@@ -197,6 +209,9 @@
<properties>
<packaging.outputDirectory>${project.build.directory}/windows-x64</packaging.outputDirectory>
<packaging.jdkPath>${project.basedir}/jdks/windows/x64/home</packaging.jdkPath>
<packaging.javaBinary>${project.basedir}/jdks/windows/x64/home/bin/java.exe</packaging.javaBinary>
<packaging.requireRepoJdk>true</packaging.requireRepoJdk>
<packaging.targetId>windows-x64</packaging.targetId>
</properties>
<build>
<plugins>
@@ -229,6 +244,9 @@
<properties>
<packaging.outputDirectory>${project.build.directory}/linux-x64</packaging.outputDirectory>
<packaging.jdkPath>${project.basedir}/jdks/linux/x64/home</packaging.jdkPath>
<packaging.javaBinary>${project.basedir}/jdks/linux/x64/home/bin/java</packaging.javaBinary>
<packaging.requireRepoJdk>true</packaging.requireRepoJdk>
<packaging.targetId>linux-x64</packaging.targetId>
</properties>
<build>
<plugins>
@@ -588,6 +606,35 @@
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>verify-packaging-jdk</id>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<condition property="packaging.jdk.ready">
<or>
<not>
<istrue value="${packaging.requireRepoJdk}"/>
</not>
<available file="${packaging.javaBinary}"/>
</or>
</condition>
<fail unless="packaging.jdk.ready"
message="Missing repository-local JDK for profile '${packaging.targetId}'. Expected executable: ${packaging.javaBinary}. Run 'python3 scripts/prepare_jdks.py --targets ${packaging.targetId}' before packaging."/>
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>io.github.fvarrui</groupId>
<artifactId>javapackager</artifactId>
+3
View File
@@ -347,6 +347,8 @@ python3 scripts/prepare_jdks.py --targets all --resolve-only
默认 `mvn clean package` 仍然会使用当前运行 Maven 的 JDK 打一个 macOS universal 包。
对于 `mac-intel``mac-apple-silicon``windows-x64``linux-x64` 这几个 profileMaven 会在 `validate` 阶段先检查 `jdks/` 下是否已经准备好对应 JDK;如果缺失,会直接失败并提示先执行 `scripts/prepare_jdks.py`,避免打出“假成功”的安装包。
如果要使用仓库内缓存 JDK 打指定平台包:
```bash
@@ -381,3 +383,4 @@ mvn clean package -Plinux-x64 -Dmaven.test.skip=true
- `ubuntu-latest``linux-x64`
- 使用 `actions/cache` 缓存 `downloads/jdks/``jdks/`
- 每个 job 会上传各自平台的安装包产物
- 推送 `v*` 标签时,会自动创建或更新对应 GitHub Release,并上传构建出的安装包附件