jmalcloud/.github/workflows/test-native-build.yml
chenpei c26105b684 初始提交:JmalCloud公共空间版改造完成
- 改造为公共空间模式,所有用户共享文件
- 移除用户文件隔离机制
- 保持前端API兼容性
- 更新配置文件和文档
- 创建完整启动脚本工具链
2025-08-24 11:16:01 +08:00

67 lines
2.2 KiB
YAML

name: Build test native
on:
push:
branches:
- 'master'
workflow_dispatch:
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Extract project version from pom.xml
id: project_version # 给步骤一个id以便后续引用
run: |
VERSION=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
echo "PROJECT_VERSION=$VERSION" >> $GITHUB_ENV
echo "version=$VERSION" >> "$GITHUB_OUTPUT" # 使用 GITHUB_OUTPUT 在步骤间传递值
# ------------------- 阶段二: 使用 GraalVM 构建 Native Image -------------------
- name: Set up GraalVM for Native Image
uses: graalvm/setup-graalvm@v1
with:
java-version: '24' # GraalVM 24.x 基于 JDK 24
distribution: 'graalvm'
version: '24' # 指定使用 GraalVM 24.x
github-token: ${{ secrets.GITHUB_TOKEN }}
cache: 'maven' # GraalVM action 也支持缓存 Maven 依赖
- name: Build Native Image with Maven
run: mvn clean package -Pnative -DskipTests
# -Pnative 激活 pom.xml 中为 native image 定义的 profile
# native:compile 是 GraalVM 插件提供的编译目标
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ secrets.GHCR_IO_USERNAME }}
password: ${{ secrets.GHCR_IO_TOKEN }}
- name: Build and push Docker image to multiple registries
uses: docker/build-push-action@v5
with:
context: .
file: ./Dockerfile.native
push: true
tags: |
jmal/jmalcloud:test
ghcr.io/${{ secrets.GHCR_IO_USERNAME }}/jmalcloud:test
platforms: linux/amd64,linux/arm64
build-args: |
VERSION=${{ env.PROJECT_VERSION }}