chore: prepare 1.3.0 release #11
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |