Skip to content

#513: Generate quality metrics.json #1108

#513: Generate quality metrics.json

#513: Generate quality metrics.json #1108

Workflow file for this run

# This file was generated by Project Keeper.
name: CI Build
on:
push:
branches: [
main
]
pull_request: null
workflow_dispatch: null
jobs:
build:
runs-on: ubuntu-latest
defaults:
run: {
shell: bash
}
permissions: {
contents: read,
issues: read
}
concurrency: {
group: '${{ github.workflow }}-${{ github.ref }}',
cancel-in-progress: true
}
outputs: {
release-required: '${{ steps.check-release.outputs.release-required }}'
}
steps:
- name: Free Disk Space
id: free-disk-space
if: ${{ false }}
run: |
sudo rm -rf /usr/local/lib/android
sudo rm -rf /usr/share/dotnet
- name: Checkout the repository
id: checkout
uses: actions/checkout@v4
with: {
fetch-depth: 0
}
- name: Set up JDKs
id: setup-java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: |
11
17
cache: maven
- name: Set up Go
id: setup-go
uses: actions/setup-go@v5
with: {
go-version: '1.22',
cache-dependency-path: .project-keeper.yml
}
- {
name: Install Go tools,
id: install-go-tools,
run: go install github.com/google/[email protected]
}
- name: Cache SonarCloud packages
id: cache-sonar
uses: actions/cache@v4
with: {
path: ~/.sonar/cache,
key: '${{ runner.os }}-sonar',
restore-keys: '${{ runner.os }}-sonar'
}
- {
name: Enable testcontainer reuse,
id: enable-testcontainer-reuse,
run: echo 'testcontainers.reuse.enable=true' > "$HOME/.testcontainers.properties"
}
- name: Run tests and build with Maven
id: maven-build
run: |
mvn -T 1C --batch-mode clean install verify \
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \
-DtrimStackTrace=false
env: {
GITHUB_TOKEN: '${{ github.token }}'
}
- name: Sonar analysis
id: sonar-analysis
if: ${{ env.SONAR_TOKEN != null }}
run: |
mvn --batch-mode org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \
-DtrimStackTrace=false \
-Dsonar.token=$SONAR_TOKEN
env: {
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}',
SONAR_TOKEN: '${{ secrets.SONAR_TOKEN }}'
}
- {
name: Run project-keeper itself,
id: build-pk-verify,
run: 'mvn --batch-mode com.exasol:project-keeper-maven-plugin:verify --projects .'
}
- name: Verify Release Artifacts
id: verify-release-artifacts
run: "print_message() {\n local -r message=$1\n echo \"$message\"\n echo \"$message\" >> \"$GITHUB_STEP_SUMMARY\"\n}\n\nprint_message \"### Release Artifacts\"\n\nIFS=$'\\n' artifacts_array=($ARTIFACTS)\nmissing_files=()\nfor file in \"${artifacts_array[@]}\";\ndo \n echo \"Checking if file $file exists...\"\n if ! [[ -f \"$file\" ]]; then\n print_message \"* ⚠️ \\`$file\\` does not exist ⚠️\"\n echo \"Content of directory $(dirname \"$file\"):\"\n ls \"$(dirname \"$file\")\"\n missing_files+=(\"$file\")\n else\n print_message \"* \\`$file\\` ✅\" \n fi\ndone\nprint_message \"\"\nnumber_of_missing_files=${#missing_files[@]}\nif [[ $number_of_missing_files -gt 0 ]]; then\n print_message \"⚠️ $number_of_missing_files release artifact(s) missing ⚠️\"\n exit 1\nfi\n"
env: {
ARTIFACTS: '${{ steps.build-pk-verify.outputs.release-artifacts }}'
}
- name: Upload artifacts
id: upload-artifacts
uses: actions/upload-artifact@v4
with: {
name: artifacts,
path: '${{ steps.build-pk-verify.outputs.release-artifacts }}',
retention-days: 5
}
- name: Check if release is needed
id: check-release
if: ${{ github.ref == 'refs/heads/main' }}
run: |
if mvn --batch-mode com.exasol:project-keeper-maven-plugin:verify-release --projects .; then
echo "### ✅ Release preconditions met, start release" >> "$GITHUB_STEP_SUMMARY"
echo "release-required=true" >> "$GITHUB_OUTPUT"
else
echo "### 🛑 Release precondition not met, skipping release" >> "$GITHUB_STEP_SUMMARY"
echo "See log output for details." >> "$GITHUB_STEP_SUMMARY"
echo "release-required=false" >> "$GITHUB_OUTPUT"
fi
env: {
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
}
start_release:
needs: build
if: ${{ github.ref == 'refs/heads/main' && needs.build.outputs.release-required == 'true' }}
concurrency: {
cancel-in-progress: false,
group: release
}
secrets: inherit
permissions: {
contents: write,
actions: read,
issues: read
}
uses: ./.github/workflows/release.yml
with: {
started-from-ci: true
}