Skip to content

chore: prepare 1.3.0 release #11

chore: prepare 1.3.0 release

chore: prepare 1.3.0 release #11

Workflow file for this run

name: Release
on:
push:
tags:
- 'v*'
jobs:
# Test on all platforms before publishing
test:
name: Test Java ${{ matrix.java }} (${{ matrix.os }})
strategy:
fail-fast: true
matrix:
include:
- os: ubuntu-latest
java: '11'
- os: ubuntu-latest
java: '21'
- os: ubuntu-24.04-arm
java: '11'
- os: ubuntu-24.04-arm
java: '21'
- os: macos-latest
java: '11'
- os: macos-latest
java: '21'
- os: windows-latest
java: '11'
- os: windows-latest
java: '21'
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java }}
distribution: 'temurin'
- name: Cache Maven
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: m2-release-${{ matrix.os }}-${{ matrix.java }}-${{ hashFiles('**/pom.xml') }}
restore-keys: m2-release-${{ matrix.os }}-
- name: Run tests (Java 11 — core modules only)
if: matrix.java == '11'
shell: bash
run: |
./mvnw test -B -q \
-pl webassembly4j-api,webassembly4j-spi,chicory4j-provider,webassembly4j-runtime,webassembly4j-testing,webassembly4j-pool,webassembly4j-bindgen \
-am
- name: Run tests (Java 17+ — all modules)
if: matrix.java != '11'
shell: bash
run: |
./mvnw test -B -q \
-pl webassembly4j-api,webassembly4j-spi,chicory4j-provider,graalwasm4j-provider,webassembly4j-runtime,webassembly4j-testing,webassembly4j-pool,webassembly4j-spring,webassembly4j-bindgen \
-am
# Static analysis quality gate
quality:
name: Code Quality
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '23'
distribution: 'temurin'
- name: Cache Maven
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: m2-quality-${{ hashFiles('**/pom.xml') }}
restore-keys: m2-quality-
- name: Compile all modules
run: ./mvnw compile -B -q -pl '!webassembly4j-benchmarks'
- name: Install dependencies for javadoc
run: ./mvnw install -B -q -DskipTests -Dmaven.javadoc.skip=true -pl webassembly4j-api,webassembly4j-spi,webassembly4j-runtime -am
- name: Javadoc
run: ./mvnw javadoc:javadoc -B -q -pl webassembly4j-api,webassembly4j-spi,webassembly4j-runtime
# Publish to Maven Central and GitHub Packages
publish:
name: Publish
needs: [test, quality]
runs-on: ubuntu-latest
environment: production
permissions:
contents: write
packages: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
server-id: central
server-username: MAVEN_CENTRAL_USERNAME
server-password: MAVEN_CENTRAL_PASSWORD
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-passphrase: GPG_PASSPHRASE
- name: Cache Maven
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: m2-publish-${{ hashFiles('**/pom.xml') }}
restore-keys: m2-publish-
- name: Extract version from tag
id: version
run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
- name: Set release version
run: |
./mvnw versions:set -B -q -DnewVersion=${{ steps.version.outputs.version }} -DgenerateBackupPoms=false
- name: Install modules locally
run: |
DEPLOY_MODULES="-pl webassembly4j-api,webassembly4j-spi,wasmtime4j-provider,wamr4j-provider,chicory4j-provider,graalwasm4j-provider,webassembly4j-runtime,webassembly4j-testing,webassembly4j-pool,webassembly4j-spring,webassembly4j-bindgen"
./mvnw install -B -q \
-DskipTests -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dgpg.skip=true -DskipNativeTests \
$DEPLOY_MODULES -am
- name: Deploy to Maven Central
env:
MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
run: |
DEPLOY_MODULES="-pl webassembly4j-api,webassembly4j-spi,wasmtime4j-provider,wamr4j-provider,chicory4j-provider,graalwasm4j-provider,webassembly4j-runtime,webassembly4j-testing,webassembly4j-pool,webassembly4j-spring,webassembly4j-bindgen"
./mvnw deploy -B -P release \
-DskipTests -Dmaven.test.skip=true -DskipNativeTests \
$DEPLOY_MODULES
- name: Deploy to GitHub Packages
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
DEPLOY_MODULES="-pl webassembly4j-api,webassembly4j-spi,wasmtime4j-provider,wamr4j-provider,chicory4j-provider,graalwasm4j-provider,webassembly4j-runtime,webassembly4j-testing,webassembly4j-pool,webassembly4j-spring,webassembly4j-bindgen"
mkdir -p ~/.m2
cat > ~/.m2/settings-github.xml <<'SETTINGS'
<settings>
<servers>
<server>
<id>github</id>
<username>${env.GITHUB_ACTOR}</username>
<password>${env.GITHUB_TOKEN}</password>
</server>
</servers>
</settings>
SETTINGS
./mvnw deploy -B \
-DskipTests -Dmaven.test.skip=true -DskipNativeTests \
-DaltDeploymentRepository=github::https://maven.pkg.github.com/${{ github.repository }} \
-Dgpg.skip=true \
-s ~/.m2/settings-github.xml \
$DEPLOY_MODULES
- name: Package artifacts
run: |
DEPLOY_MODULES="-pl webassembly4j-api,webassembly4j-spi,wasmtime4j-provider,wamr4j-provider,chicory4j-provider,graalwasm4j-provider,webassembly4j-runtime,webassembly4j-testing,webassembly4j-pool,webassembly4j-spring,webassembly4j-bindgen"
./mvnw package -B -P release \
-DskipTests -Dmaven.test.skip=true -DskipNativeTests \
$DEPLOY_MODULES
- name: Create checksums
run: |
for dir in webassembly4j-api/target webassembly4j-spi/target webassembly4j-runtime/target webassembly4j-testing/target webassembly4j-pool/target webassembly4j-spring/target webassembly4j-bindgen/target wasmtime4j-provider/target wamr4j-provider/target chicory4j-provider/target graalwasm4j-provider/target; do
if [ -d "$dir" ]; then
for jar in "$dir"/*.jar; do
[ -f "$jar" ] && sha256sum "$jar" > "$jar.sha256"
done
fi
done
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
files: |
webassembly4j-api/target/*.jar
webassembly4j-api/target/*.jar.sha256
webassembly4j-spi/target/*.jar
webassembly4j-spi/target/*.jar.sha256
webassembly4j-runtime/target/*.jar
webassembly4j-runtime/target/*.jar.sha256
webassembly4j-testing/target/*.jar
webassembly4j-testing/target/*.jar.sha256
webassembly4j-pool/target/*.jar
webassembly4j-pool/target/*.jar.sha256
webassembly4j-spring/target/*.jar
webassembly4j-spring/target/*.jar.sha256
webassembly4j-bindgen/target/*.jar
webassembly4j-bindgen/target/*.jar.sha256
wasmtime4j-provider/target/*.jar
wasmtime4j-provider/target/*.jar.sha256
wamr4j-provider/target/*.jar
wamr4j-provider/target/*.jar.sha256
chicory4j-provider/target/*.jar
chicory4j-provider/target/*.jar.sha256
graalwasm4j-provider/target/*.jar
graalwasm4j-provider/target/*.jar.sha256