Allow deployment from master, main, or release/ branches #1182
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
name: build | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
types: [ opened, synchronize, reopened ] | |
jobs: | |
build-service: | |
name: Build Service | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: service | |
strategy: | |
fail-fast: false | |
matrix: | |
java_version: [ '17', '21' ] | |
steps: | |
# Check out the project | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis | |
# Setup the version of Java | |
- name: Set up JDK ${{ matrix.java_version }} | |
uses: actions/setup-java@v4 | |
with: | |
java-version: ${{ matrix.java_version }} | |
distribution: 'zulu' | |
check-latest: true | |
# Cache all the things | |
- name: Cache SonarCloud packages | |
uses: actions/cache@v4 | |
if: ${{ env.SONAR_TOKEN != null && env.SONAR_TOKEN != '' && matrix.java_version == '17' }} | |
env: | |
SONAR_TOKEN: ${{ secrets.SERVICE_SONAR_TOKEN }} | |
with: | |
path: ~/.sonar/cache | |
key: ${{ runner.os }}-sonar | |
restore-keys: ${{ runner.os }}-sonar | |
- name: Cache Maven packages | |
uses: actions/cache@v4 | |
with: | |
path: ~/.m2 | |
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} | |
restore-keys: ${{ runner.os }}-m2 | |
# Compile the project | |
- name: Compile service | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any | |
run: mvn -B -V compile | |
# Run the tests | |
- name: Run service tests | |
if: ${{ matrix.java_version != '17' }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any | |
run: mvn -B -V verify | |
# Run Sonar Analysis | |
- name: Analyze with SonarCloud on service | |
if: ${{ env.SONAR_TOKEN != null && env.SONAR_TOKEN != '' && matrix.java_version == '17' }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any | |
SONAR_TOKEN: ${{ secrets.SERVICE_SONAR_TOKEN }} | |
run: mvn -B -V -Dsonar.coverage.jacoco.xmlReportPaths=target/site/jacoco/jacoco.xml org.jacoco:jacoco-maven-plugin:prepare-agent verify org.jacoco:jacoco-maven-plugin:report org.sonarsource.scanner.maven:sonar-maven-plugin:sonar | |
build-ui: | |
name: Build UI | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: ui | |
strategy: | |
fail-fast: false | |
matrix: | |
node_version: [ '18', '20' ] | |
steps: | |
# Check out the project | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis | |
# Setup Node/JS | |
- uses: actions/setup-node@v4 | |
with: | |
node_version: ${{ matrix.node_version }} | |
cache: 'npm' | |
cache-dependency-path: '**/package-lock.json' | |
# Cache all the things | |
- name: Cache SonarCloud packages | |
uses: actions/cache@v4 | |
if: ${{ env.SONAR_TOKEN != null && env.SONAR_TOKEN != ''&& matrix.node_version == '18' }} | |
env: | |
SONAR_TOKEN: ${{ secrets.UI_SONAR_TOKEN }} | |
with: | |
path: ~/.sonar/cache | |
key: ${{ runner.os }}-sonar | |
restore-keys: ${{ runner.os }}-sonar | |
# Install dependencies | |
- name: Install Dependencies | |
run: npm install | |
# Compile the project | |
- name: Build ui | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any | |
run: npm run build | |
# Run the tests | |
- name: Run ui tests | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any | |
run: npm run test:unit | |
# Run Sonar Analysis | |
- name: SonarCloud Scan | |
if: ${{ env.SONAR_TOKEN != null && env.SONAR_TOKEN != '' && matrix.node_version == '18' }} | |
uses: SonarSource/sonarcloud-github-action@master | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any | |
SONAR_TOKEN: ${{ secrets.UI_SONAR_TOKEN }} | |
with: | |
projectBaseDir: ui |