Skip to content

Compiler

Compiler #13

Workflow file for this run

# Workflow to produce a version of the compiler
name: Compiler
env:
JAVA_ENV_VERSION: '21' # LTS version
FOLDER: './compiler' # Source code location
on:
push:
paths:
- 'compiler/**'
tags-ignore:
- '**'
pull_request:
paths:
- 'compiler/**'
workflow_call: # Allow the workflow to be called by others
workflow_dispatch: # Can be triggered manually
jobs:
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
defaults:
run:
working-directory: ${{env.FOLDER}}
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Checkout repository
uses: actions/checkout@v4
# Setting up Java for running mvn
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: ${{env.JAVA_ENV_VERSION}}
distribution: 'adopt'
cache: 'maven'
# Building the jpipe.jar artefact
- name: Create executable jar with Maven
run: mvn clean package -DskipTests -Dcheckstyle.skip
test:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ${{env.FOLDER}}
needs: [build]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: ${{env.JAVA_ENV_VERSION}}
distribution: 'adopt'
cache: 'maven'
# run unit tests
- name: Unit tests with Maven (surefire)
run: mvn test
integration-test:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ${{env.FOLDER}}
needs: [ test ]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: ${{env.JAVA_ENV_VERSION}}
distribution: 'adopt'
# run integration tests (any test ending with IT)
- name: Integration tests with Maven (failsafe)
run: mvn verify -Dskip.tests.unit
linter:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ${{env.FOLDER}}
needs: [build]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: ${{env.JAVA_ENV_VERSION}}
distribution: 'adopt'
cache: 'maven'
# run linter
- name: CheckStyle (Google ruleset)
run: mvn checkstyle:check
upload:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ${{env.FOLDER}}
needs: [linter, integration-test]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: ${{env.JAVA_ENV_VERSION}}
distribution: 'adopt'
cache: 'maven'
# run packager
- name:
run: mvn clean install -DskipTests -Dcheckstyle.skip
- name: Upload JAR artefact
uses: actions/upload-artifact@v4
with:
name: jpipe.jar
path: compiler/jpipe.jar