[UX] add node name and icon; like junit build to improve CI UX ✅ #3202
Workflow file for this run
This file contains hidden or 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: CI ♻️ | |
| on: | |
| pull_request: | |
| push: | |
| branches: [main, release] | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| sanity-check: | |
| name: SanityCheck 🕊️ | |
| runs-on: ubuntu-latest | |
| env: | |
| buildcacheuser: ${{ secrets.BUILDCACHE_USER }} | |
| buildcachepass: ${{ secrets.BUILDCACHE_PASS }} | |
| steps: | |
| - name: Checkout 📥 | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup Java ☕️ | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: "temurin" | |
| java-version: 21 | |
| - name: Gradle Caching 💾 | |
| uses: gradle/actions/setup-gradle@v5 | |
| - name: Spotless Check ✨ | |
| run: ./gradlew spotlessCheck | |
| - name: Rewrite Dry Run 🌀 | |
| run: ./gradlew rewriteDryRun | |
| - name: Assemble TestClasses ⚙️ | |
| run: ./gradlew assemble testClasses | |
| build: | |
| name: Build 🏗 ${{ matrix.kind }}️, Java ☕️ ${{ matrix.jre }}, OS 💿 ${{ matrix.os }} | |
| needs: sanity-check | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| kind: [maven, gradle] | |
| jre: [17, 21, 24] # Test on the latest Java version once Gradle & Maven support it. | |
| os: [ubuntu-latest, windows-latest] | |
| include: # npm on linux only (crazy slow on windows) | |
| - kind: npm | |
| jre: 17 | |
| os: ubuntu-latest | |
| - kind: shfmt | |
| jre: 17 | |
| os: ubuntu-latest | |
| shfmt-version: v3.8.0 | |
| - kind: idea | |
| jre: 17 | |
| os: ubuntu-latest | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Checkout 📥 | |
| uses: actions/checkout@v6 | |
| - name: Setup Java ☕️ | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: "temurin" | |
| java-version: ${{ matrix.jre }} | |
| - name: Gradle Caching 💾 | |
| uses: gradle/actions/setup-gradle@v5 | |
| - name: Build (Maven) 🏗️ | |
| if: matrix.kind == 'maven' | |
| run: ./gradlew :plugin-maven:build -x spotlessCheck -x rewriteDryRun | |
| - name: Build (Gradle) 🏗️ | |
| if: matrix.kind == 'gradle' | |
| run: ./gradlew build -x spotlessCheck -x rewriteDryRun -PSPOTLESS_EXCLUDE_MAVEN=true | |
| - name: Test NPM 🧪 | |
| if: matrix.kind == 'npm' | |
| run: ./gradlew testNpm | |
| - name: Setup Go 🦫 | |
| if: matrix.kind == 'shfmt' | |
| uses: actions/setup-go@v6 | |
| with: | |
| go-version: 'stable' | |
| - name: Install shfmt 🔧 | |
| if: matrix.kind == 'shfmt' | |
| run: | | |
| go install mvdan.cc/sh/v3/cmd/shfmt@${{ matrix.shfmt-version }} | |
| - name: Test shfmt 🧪 | |
| if: matrix.kind == 'shfmt' | |
| run: ./gradlew testShfmt | |
| - name: Test IntelliJ IDEA 🧪 | |
| if: matrix.kind == 'idea' | |
| run: | | |
| download_link=$(curl https://data.services.jetbrains.com/products/releases\?code\=IIC\&latest\=true\&type\=release | jq -r '.IIC[0].downloads.linux.link') | |
| curl --location "$download_link" -o idea.tar.gz | |
| tar -xf idea.tar.gz | |
| cd idea-IC* | |
| export PATH=${PATH}:$(pwd)/bin | |
| cd .. | |
| ./gradlew testIdea | |
| - name: Test Results 📊 | |
| uses: mikepenz/action-junit-report@v6 | |
| if: always() # always run even if the previous step fails | |
| with: | |
| check_name: JUnit (Build 🏗 ${{ matrix.kind }}️, Java ☕️ ${{ matrix.jre }}, OS 💿 ${{ matrix.os }}) | |
| report_paths: '*/build/test-results/*/TEST-*.xml' | |
| check_retries: true | |
| final-status: # Status check that is required in branch protection rules. | |
| name: Final Status 🎯 | |
| needs: | |
| - sanity-check | |
| - build | |
| runs-on: ubuntu-latest | |
| if: always() | |
| steps: | |
| - name: Check All Jobs ✅ | |
| run: | | |
| results=$(tr -d '\n' <<< '${{ toJSON(needs.*.result) }}') | |
| if ! grep -q -v -E '(failure|cancelled)' <<< "$results"; then | |
| echo "One or more required jobs failed ❌" | |
| exit 1 | |
| fi | |
| echo "All required jobs completed successfully. ✅" |