simplelocalize/simplelocalize-cli

View on GitHub
.github/workflows/build.yml

Summary

Maintainability
Test Coverage
name: Build executables

on:
  push:
    branches:
      - 'master'
      - '*-snapshot'
  pull_request:

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

env:
  ACTIONS_ALLOW_UNSECURE_COMMANDS: true

jobs:
  build-jar:
    name: "Build JAR"
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        name: "Checkout"
      - uses: actions/setup-java@v4
        name: "Install Java"
        with:
          java-version: '21'
          distribution: 'corretto'
          cache: 'maven'
      - name: "Build JAR"
        run: mvn -DskipTests -Pfatjar clean package
      - name: 'Get version'
        run: echo "::set-env name=VERSION::$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)"
      - name: 'Upload artifact'
        uses: actions/upload-artifact@v4
        with:
          name: 'simplelocalize-cli-${{env.VERSION}}.jar'
          path: 'target/simplelocalize-cli-${{env.VERSION}}.jar'
  build-executable:
    name: "Build ${{ matrix.label }} executable"
    strategy:
      matrix:
        include:
          - os: 'ubuntu-latest'
            label: 'linux'
            filename: 'simplelocalize-cli'
            downloadFilename: 'simplelocalize-cli-linux'
          - os: 'macos-latest'
            label: 'mac'
            filename: 'simplelocalize-cli'
            downloadFilename: 'simplelocalize-cli-mac'
          - os: 'macos-14'
            label: 'mac-arm64'
            filename: 'simplelocalize-cli'
            downloadFilename: 'simplelocalize-cli-mac-arm64'
          - os: 'windows-latest'
            label: 'windows'
            filename: 'simplelocalize-cli.exe'
            downloadFilename: 'simplelocalize-cli-windows.exe'
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
        name: "Checkout"
      - name: "Print architecture"
        run: uname -m
        if: startsWith(matrix.os, 'macos')
      - uses: graalvm/setup-graalvm@v1
        name: "Install GraalVM"
        with:
          java-version: '21'
          distribution: 'graalvm'
          github-token: ${{ secrets.GITHUB_TOKEN }}
      - name: "Build executable"
        run: mvn -DskipTests -Pnative clean package
      - name: "Test executable"
        run: ./target/${{ matrix.filename }} --version
      - name: "Rename executable"
        run: mv ./target/${{ matrix.filename }} ./target/${{ matrix.downloadFilename }}
      - name: "Upload artifact"
        uses: actions/upload-artifact@v4
        with:
          name: simplelocalize-cli-${{ matrix.label }}
          path: ./target/${{ matrix.downloadFilename }}