mirror of
https://github.com/rememberber/MooTool.git
synced 2026-08-30 18:02:12 +08:00
GitHub Actions CI 自动打包
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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` 这几个 profile,Maven 会在 `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,并上传构建出的安装包附件
|
||||
|
||||
Reference in New Issue
Block a user