Skip to content

ci: sync progress by manual trigger #1365

ci: sync progress by manual trigger

ci: sync progress by manual trigger #1365

Workflow file for this run

name: Build CI
on:
push:
tags: [ '[0-9]+.[0-9]+.[0-9]+' ]
branches: [ main ]
pull_request:
branches: [ main ]
types: [ opened, reopened, synchronize ]
paths:
- .github/workflows/**
- gradle/**
- kata/**
- build.gradle.kts
- settings.gradle.kts
- gradle.properties
workflow_dispatch:
inputs:
ref_name:
description: Branch, tag or SHA to checkout
job_count:
description: Max concurrent jobs to execute
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
fork:
runs-on: ubuntu-24.04
timeout-minutes: 1
outputs:
job_count: ${{ steps.job.outputs.count }}
job_sid: ${{ steps.job.outputs.sid }}
steps:
- name: Assign job IDs
id: job
run: |
# set default as inputs resolve only at manual executions
JOB_COUNT=${{ github.event.inputs.job_count || 40 }}
echo "count=$JOB_COUNT" >> $GITHUB_OUTPUT
echo "sid=[`seq -s , 1 $JOB_COUNT`]" >> $GITHUB_OUTPUT
# ------------------------
test:
needs: fork
runs-on: ubuntu-24.04
timeout-minutes: 8
strategy:
matrix:
job_sid: ${{ fromJSON(needs.fork.outputs.job_sid) }}
steps:
- name: Checkout repository (default ref)
if: ${{ github.event.inputs.ref_name == '' }}
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Checkout repository (custom ref)
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
if: ${{ github.event.inputs.ref_name != '' }}
with:
ref: ${{ github.event.inputs.ref_name }}
- name: Setup Java
uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018 # v4.2.2
with:
distribution: temurin
java-version: 17
- name: Setup Gradle
uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4
- name: Test project
run: |
./gradlew test jacocoTestReport -x processResources -x processTestResources \
--parallel \
--configuration-cache \
--build-cache \
--no-daemon \
--scan \
-DforkCount=${{ needs.fork.outputs.job_count }} \
-DforkSid=${{ matrix.job_sid }}
- name: Pack fork artifacts
run: |
find . -path "*/main/*.class" -o -path "*/test/*.class" -o -path "*/jacocoTestReport.xml" > artifacts
tar czfT artifacts.tar.gz artifacts
- name: Upload fork artifacts
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6
with:
name: fork-${{ matrix.job_sid }}
retention-days: 1
path: artifacts.tar.gz
# ------------------------
scan:
needs: test
runs-on: ubuntu-24.04
timeout-minutes: 10
permissions:
contents: write
pull-requests: write
env:
VERSION: 1.24.0
steps:
- name: Checkout repository (default ref)
if: ${{ github.event.inputs.ref_name == '' }}
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 0
- name: Checkout repository (custom ref)
if: ${{ github.event.inputs.ref_name != '' }}
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
ref: ${{ github.event.inputs.ref_name }}
- name: Download fork artifacts
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
- name: Unpack fork artifacts
run: for f in fork-*/artifacts.tar.gz; do tar xf $f && rm $f; done
- name: Setup Java
uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018 # v4.2.2
with:
distribution: temurin
java-version: 17
- name: Setup Gradle
uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4
with:
add-job-summary-as-pr-comment: always
- name: Analyze code quality
run: |
./gradlew sonar -x compileJava -x compileTestJava \
--parallel \
--configuration-cache \
--build-cache \
--no-daemon \
--scan \
-Pversion=${{ format('{0}+{1}', env.VERSION, github.RUN_NUMBER) }} \
-Dsonar.host.url=https://sonarcloud.io \
-Dsonar.token=${{ secrets.SONAR_TOKEN }} \
-Dsonar.organization=${{ secrets.SONAR_KEY }} \
-Dsonar.qualitygate.wait=true \
-Dsonar.gradle.skipCompile=true