Compiler #8
This file contains 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
# Workflow to produce a version of the compiler | |
name: Compiler | |
env: | |
JAVA_ENV_VERSION: '21' # LTS version | |
FOLDER: './ab-compiler' # Source code location | |
on: | |
push: | |
paths: | |
- 'ab-compiler/**' | |
pull_request: | |
paths: | |
- 'ab-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: ab-compiler/jpipe.jar | |