fix: use local clang-format instead of globally installed one #65
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_checks" | |
on: | |
pull_request: null | |
push: | |
branches: | |
- "main" | |
- "initial-version" | |
workflow_dispatch: | |
inputs: | |
force_gradle_cache_clean: | |
description: "Force gradle cache clean" | |
required: false | |
default: "false" | |
concurrency: | |
group: "${{ github.workflow }}-${{ github.ref }}" | |
cancel-in-progress: true | |
jobs: | |
gradleCheck: | |
name: "run checks using gradlew" | |
runs-on: "ubuntu-latest" | |
outputs: | |
RELEASE_VERSION: ${{ steps.get_version.outputs.VERSION }} | |
env: | |
SEGMENT_DOWNLOAD_TIMEOUT_MINS: "15" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4" | |
with: | |
fetch-depth: 0 | |
- name: "Install JDK 21" | |
uses: "actions/setup-java@v4" | |
with: | |
distribution: "graalvm" | |
java-version: 21 | |
- name: "Install Node.js" | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "lts/jod" # 22 | |
- name: "debug node" | |
run: "node --version && npm --version" | |
- name: "Setup Gradle" | |
uses: "gradle/actions/setup-gradle@v4" | |
with: | |
cache-read-only: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/initial-version' }} # TODO remove when initial-version is removed | |
- name: "Nuke gradle cache" | |
if: "${{ github.event.inputs.force_gradle_cache_clean == 'true' }}" | |
run: "rm -rf ~/.gradle/caches" | |
- name: "Run check on build-logic subproject" | |
run: "./gradlew :build-logic:check --no-configuration-cache" | |
- name: "Run check on project" | |
run: "./gradlew generateUsage && ./gradlew check" | |
- name: "Get version and set to output" | |
id: get_version | |
run: echo "VERSION=$(./gradlew changelogPrintCurrentVersion --quiet)" >> "$GITHUB_OUTPUT" | |
- name: "junit result" | |
uses: "mikepenz/action-junit-report@v5" | |
if: "always()" | |
with: | |
check_name: "JUnit Report" | |
report_paths: "**/build/test-results/tes*/*.xml" # multiple test tasks | |
nativeCompile: | |
name: "${{ matrix.platform.name }} nativeCompile testing" | |
needs: "gradleCheck" | |
strategy: | |
matrix: | |
platform: | |
- name: "linux-x86_64" | |
runner: "ubuntu-latest" | |
- name: "linux-aarch_64" | |
runner: "ubuntu-24.04-arm" | |
- name: "windows-x86_64" | |
runner: "windows-latest" | |
- name: "osx-aarch_64" | |
runner: "macos-latest" | |
- name: "osx-x86_64" | |
runner: "macos-13" | |
fail-fast: false | |
runs-on: "${{ matrix.platform.runner }}" | |
env: | |
SEGMENT_DOWNLOAD_TIMEOUT_MINS: "15" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4" | |
with: | |
fetch-depth: 0 | |
- name: "Install JDK 21" | |
uses: "actions/setup-java@v4" | |
with: | |
distribution: "graalvm" | |
java-version: 21 | |
- name: "Install Node.js" | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "lts/jod" # 22 | |
- name: "Setup Gradle" | |
uses: "gradle/actions/setup-gradle@v4" | |
with: | |
cache-read-only: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/initial-version' }} # TODO remove when initial-version is removed | |
- name: "Check if binary works" | |
run: "./gradlew testAllCliNative" | |
- name: "junit result" | |
uses: "mikepenz/action-junit-report@v5" | |
if: "always()" | |
with: | |
check_name: "JUnit Report ${{ matrix.platform.name }}" | |
report_paths: "**/build/test-results/tes*/*.xml" # multiple test tasks | |
- name: "upload binary" # for debugging | |
uses: actions/upload-artifact@v4 | |
with: | |
name: "spotless-native-binary--${{ matrix.platform.name }}" | |
path: app/build/native/nativeCompile/spotless* | |
retention-days: 7 | |
if-no-files-found: "error" | |
dryRunRelease: | |
name: "dry run release" | |
needs: ["gradleCheck", "nativeCompile"] | |
strategy: | |
matrix: | |
platform: | |
- name: "linux-x86_64" | |
runner: "ubuntu-latest" | |
- name: "windows-x86_64" | |
runner: "windows-latest" | |
runs-on: "${{ matrix.platform.runner }}" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4" | |
with: | |
fetch-depth: 0 | |
- name: "Install JDK 21" | |
uses: "actions/setup-java@v4" | |
with: | |
distribution: "graalvm" | |
java-version: 21 | |
- name: "Setup Gradle" | |
uses: "gradle/actions/setup-gradle@v4" | |
- name: "Retrieve binaries" | |
uses: "actions/download-artifact@v4" | |
with: | |
# no name - download all artifacts | |
path: "app/build/collected-binaries" | |
- name: "Prepare release zips for distribution" | |
run: "./gradlew -PreleaseBinariesRootDir=app/build/collected-binaries prepareReleaseBinaryZips" | |
- name: "Dry-run choco distribution" | |
if: "${{ matrix.platform.name == 'windows-x86_64' }}" | |
uses: jreleaser/release-action@v2 | |
with: | |
setup-java: false | |
arguments: "publish --dry-run" | |
env: | |
JRELEASER_PROJECT_VERSION: ${{ needs.gradleCheck.outputs.RELEASE_VERSION }} | |
JRELEASER_GITHUB_TOKEN: abc # don't provide correct token, just a dry-run | |
JRELEASER_DISTRIBUTIONS_SPOTLESS_CLI_CHOCOLATEY_ACTIVE: ALWAYS | |
JRELEASER_CHOCOLATEY_GITHUB_TOKEN: abc # don't provide correct token, just a dry-run | |
JRELEASER_CHOCOLATEY_API_KEY: abc # don't provide correct token, just a dry-run | |
- name: "Dry-run brew distribution" | |
if: "${{ matrix.platform.name == 'linux-x86_64' }}" | |
uses: jreleaser/release-action@v2 | |
with: | |
setup-java: false | |
arguments: "publish --dry-run" | |
env: | |
JRELEASER_PROJECT_VERSION: ${{ needs.gradleCheck.outputs.RELEASE_VERSION }} | |
JRELEASER_GITHUB_TOKEN: abc # don't provide correct token, just a dry-run | |
JRELEASER_DISTRIBUTIONS_SPOTLESS_CLI_BREW_ACTIVE: ALWAYS | |
JRELEASER_HOMEBREW_GITHUB_TOKEN: abc # don't provide correct token, just a dry-run | |
- name: "Persist jreleaser output" | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: "jreleaser-distribution-dry-run--${{ matrix.platform.name }}" | |
path: | | |
out/jreleaser/trace.log | |
out/jreleaser/output.properties | |
out/jreleaser/package/spotless-cli/** |