Skip to content

[UX] add node name and icon; like junit build to improve CI UX ✅ #3202

[UX] add node name and icon; like junit build to improve CI UX ✅

[UX] add node name and icon; like junit build to improve CI UX ✅ #3202

Workflow file for this run

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. ✅"