Skip to content

Bump plugin.serialization from 2.0.10 to 2.1.0 #821

Bump plugin.serialization from 2.0.10 to 2.1.0

Bump plugin.serialization from 2.0.10 to 2.1.0 #821

name: Analyze, Build and Deploy
on:
pull_request:
types: [opened, synchronize, ready_for_review]
branches:
- main
push:
branches:
- main
workflow_dispatch:
env:
JDK_VERSION: 17
jobs:
safety-check:
name: Check for modified Gradle
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Validate Gradle artifacts
uses: gradle/actions/wrapper-validation@v4
compile:
name: Compile Kotlin code
needs: safety-check
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # Required for version number generation
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: ${{ env.JDK_VERSION }}
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Compile Kotlin
run: ./gradlew assemble
discover-projects:
name: Discover Gradle Projects
needs: compile
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # Required for version number generation
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: ${{ env.JDK_VERSION }}
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Discover Projects and save into matrix
run: |
./gradlew projects --quiet | grep "Project ':" | awk -F"'" '{print $2}' | sed 's/^://' > projects.txt
projects=$(cat projects.txt | sed '/^$/d' | awk '{print "\""$0"\""}' | paste -sd "," - | sed 's/^/[/' | sed 's/$/]/')
echo "matrix=${projects}" >> $GITHUB_OUTPUT
echo ${projects} >> $GITHUB_STEP_SUMMARY
id: set-matrix
detekt:
name: Generate Detekt report (${{ matrix.project }})
needs: discover-projects
runs-on: ubuntu-latest
strategy:
matrix:
project: ${{ fromJson(needs.discover-projects.outputs.matrix) }} # Get gradle projects from previous step
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # Required for version number generation
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: ${{ env.JDK_VERSION }}
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Run Detekt
run: ./gradlew :${{ matrix.project }}:detekt
- name: Collect result
shell: sh
run: >
mkdir sarif &&
find * -name detekt.sarif -print0 |
xargs -n1 -0 bash -c 'cp "$1" "sarif/${1//\//-}"' '{}'
- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: ./sarif/${{ matrix.project }}-build-reports-detekt-detekt.sarif
category: ${{ matrix.project }}
platform-test:
name: Run JUnit tests (${{ matrix.project }} on ${{ matrix.os }})
needs: discover-projects
strategy:
matrix:
project: ${{ fromJson(needs.discover-projects.outputs.matrix) }} # Get gradle projects from previous step
os: [ ubuntu-latest, macos-latest, windows-latest ] # Ubuntu is tested in "test" job
fail-fast: false # Ensure we get all failures on other platforms
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # Required for version number generation
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: ${{ env.JDK_VERSION }}
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Run tests
run: ./gradlew :${{ matrix.project }}:test
- name: Upload test results
uses: mikepenz/action-junit-report@v4
if: ${{ !cancelled() }} # Must execute after failed tests
with:
report_paths: '**/build/test-results/test/TEST-*.xml'
reproduction:
name: Trigger reproduction check
needs: compile
runs-on: ubuntu-latest
steps:
- name: Trigger GitLab
run: |
curl -X POST \
--fail \
-F token=$REPRODUCTION_RUNNER_TRIGGER_TOKEN \
-F ref=main \
-F variables[TARGET_BRANCH]=${{ github.head_ref || github.ref_name }} \
-F variables[IS_DRAFT]=${{ github.event.pull_request.draft || false }} \
-F variables[TARGET_SHA]=${{ github.event.pull_request.head.sha || github.sha }} \
-s -o /dev/null \
$REPRODUCTION_RUNNER_URL
env:
REPRODUCTION_RUNNER_TRIGGER_TOKEN: ${{ secrets.REPRODUCTION_RUNNER_TRIGGER_TOKEN }}
REPRODUCTION_RUNNER_URL: ${{ secrets.REPRODUCTION_RUNNER_URL }}
spotless:
name: Run Spotless (${{ matrix.project }})
needs: discover-projects
strategy:
matrix:
project: ${{ fromJson(needs.discover-projects.outputs.matrix) }} # Get gradle projects from previous step
runs-on: ubuntu-latest
steps:
- name: Initial Setup
uses: actions/checkout@v4
with:
fetch-depth: 0 # Required for version number generation & diff generation
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: ${{ env.JDK_VERSION }}
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Run Spotless checks
id: spotlessCheck
run: ./gradlew :${{ matrix.project }}:spotlessCheck
- name: Apply Spotless fixes
if: ${{ failure() }}
run: ./gradlew :${{ matrix.project }}:spotlessApply
- name: Generate diff
if: ${{ failure() }}
shell: sh
run: |
echo "# Spotless violations" >> $GITHUB_STEP_SUMMARY
echo "```diff" >> $GITHUB_STEP_SUMMARY
git diff >> $GITHUB_STEP_SUMMARY
echo "```" >> $GITHUB_STEP_SUMMARY