Skip to content

CI

CI #804

Workflow file for this run

name: CI
on:
workflow_dispatch:
pull_request:
branches:
- main
schedule:
- cron: "0 2 * * *"
jobs:
build-maven:
name: Build Maven projects
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- name: Checkout repository
uses: actions/checkout@v7.0.1
- name: Setup Java and Maven cache
uses: actions/setup-java@v6.0.0
with:
distribution: 'temurin'
java-version: '21'
check-latest: true
cache: 'maven'
- name: Build projects
working-directory: lang
run: >
./mvnw clean verify
--batch-mode
--fail-at-end
--update-snapshots
--no-transfer-progress
- name: Stage build results
if: matrix.os == 'ubuntu-latest'
run: mkdir staging && find . -path '*/target/*/*' -prune -o -path '*/target/*.jar' -exec cp {} staging/ \;
- name: Upload build results
if: matrix.os == 'ubuntu-latest'
uses: actions/upload-artifact@v7
with:
name: framework-and-cli
path: staging/
build-vscode-extension:
name: Build VSCode extension
runs-on: ubuntu-latest
needs: [build-maven]
steps:
- name: Checkout repository
uses: actions/checkout@v7.0.1
- name: Download Maven build results
uses: actions/download-artifact@v8
with:
name: framework-and-cli
path: framework-and-cli
- name: Extract IDE package
run: cp framework-and-cli/tools.vitruv.neojoin.frontend.ide.jar vscode-plugin/
- name: Setup node
uses: actions/setup-node@v7
with:
node-version: 20
check-latest: true
cache: npm
cache-dependency-path: vscode-plugin/package-lock.json
- name: Install dependencies
working-directory: vscode-plugin
run: npm clean-install
- name: Package extension
working-directory: vscode-plugin
run: npx @vscode/vsce package
- name: Stage build results
run: mkdir staging && cp vscode-plugin/*.vsix staging/;
- name: Upload build results
uses: actions/upload-artifact@v7
with:
name: vscode-plugin
path: staging/
sonar:
name: SonarQube scan of Maven projects
if: github.event_name == 'schedule' || (github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]')
runs-on: ubuntu-latest
needs: [build-maven]
steps:
- name: Checkout repository
uses: actions/checkout@v7.0.1
with:
fetch-depth: 0
- name: Setup Java and Maven cache
uses: actions/setup-java@v6.0.0
with:
distribution: 'temurin'
java-version: '21'
check-latest: true
cache: 'maven'
- name: Setup SonarQube cache
uses: actions/cache@v6
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Analyze projects
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
working-directory: lang
run: >
./mvnw clean verify sonar:sonar -P coverage
--batch-mode
--update-snapshots
--no-transfer-progress
-Dsonar.projectKey=vitruv-tools_NeoJoin