Skip to content

Merge pull request #137 from usefulness/renovate/actions-setup-java-4.x #447

Merge pull request #137 from usefulness/renovate/actions-setup-java-4.x

Merge pull request #137 from usefulness/renovate/actions-setup-java-4.x #447

Workflow file for this run

name: Build Project
on:
pull_request:
push:
branches:
- master
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, windows-latest ]
name: '[${{ matrix.os }}] build plugin'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Write Gradle build properties to `~/.gradle/gradle.properties`
run: |
mkdir -p ~/.gradle
printf "org.gradle.jvmargs=-Xmx3G -XX:+UseParallelGC\n" >> ~/.gradle/gradle.properties
printf "org.gradle.vfs.watch=false\n" >> ~/.gradle/gradle.properties
shell: bash
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 21
- uses: gradle/wrapper-validation-action@v1
- uses: gradle/gradle-build-action@v2
- run: ./gradlew assemble
- run: ./gradlew check
- run: ./gradlew publishToMavenLocal
- run: ./gradlew publishPlugins -m
- run: git diff --exit-code
- uses: actions/upload-artifact@v3
if: ${{ always() }}
with:
name: test-results-${{ matrix.os }}
path: "${{ github.workspace }}/**/build/reports/tests"
integration-tests:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, windows-latest ]
gradle: [ current, release-candidate ]
java: [ 17, 21 ]
include:
- os: ubuntu-latest
gradle: 8.0.2
java: 17
- os: windows-latest
gradle: 8.0.2
java: 17
name: '[${{ matrix.os }}] Gradle: ${{ matrix.gradle }}, Java: ${{ matrix.java }}'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Write Gradle build properties to `~/.gradle/gradle.properties`
run: |
mkdir -p ~/.gradle
printf "org.gradle.jvmargs=-Xmx3G -XX:+UseParallelGC\n" >> ~/.gradle/gradle.properties
printf "org.gradle.vfs.watch=false\n" >> ~/.gradle/gradle.properties
shell: bash
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
- uses: gradle/gradle-build-action@v2
continue-on-error: true
with:
build-root-directory: test-project
gradle-version: ${{ matrix.gradle }}
arguments: lintKotlin --continue
- name: Assert fixes
run: |
cd test-project/build/reports/ktlint
grep 'no-empty-class-body' main-lint.txt | grep -q 'EmptyClassBodyClass.kt:3:27'
grep 'op-spacing' test-lint.txt | grep -q 'OpSpacing.kt:5:16'
if [ ${{ matrix.os }} == "windows-latest" ]; then
echo "Windows can't delete files: https://github.com/gradle/gradle/issues/21964"
gradle --stop
fi
shell: bash
- uses: gradle/gradle-build-action@v2
with:
build-root-directory: test-project
gradle-version: ${{ matrix.gradle }}
arguments: formatKotlin lintKotlin --scan --stacktrace --no-build-cache
- name: Upload reports
if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: "test-project-reports-${{ matrix.os }}-${{ matrix.gradle }}-${{ matrix.java }}"
path: "${{ github.workspace }}/**/build/reports/ktlint"
provide-agp-version-matrix:
runs-on: ubuntu-latest
outputs:
agp-versions: ${{ steps.build-agp-matrix.outputs.agp-versions }}
steps:
- id: agp-version-finder
uses: usefulness/agp-version-finder-action@v1
- id: build-agp-matrix
run: |
echo 'agp-versions=["${{ steps.agp-version-finder.outputs.latest-stable }}", "${{ steps.agp-version-finder.outputs.latest-alpha }}"]' >> $GITHUB_OUTPUT
integration-tests-android:
runs-on: ubuntu-latest
needs:
- provide-agp-version-matrix
strategy:
fail-fast: false
matrix:
gradle: [ current, release-candidate ]
java: [ 21 ]
agp: ${{ fromJSON(needs.provide-agp-version-matrix.outputs.agp-versions) }}
name: '[android] Gradle: ${{ matrix.gradle }}, Java: ${{ matrix.java }}, AGP: ${{ matrix.agp }}'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Write Gradle build properties to `~/.gradle/gradle.properties`
run: |
mkdir -p ~/.gradle
printf "org.gradle.jvmargs=-Xmx3G -XX:+UseParallelGC\n" >> ~/.gradle/gradle.properties
printf "org.gradle.vfs.watch=false\n" >> ~/.gradle/gradle.properties
shell: bash
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
- uses: gradle/gradle-build-action@v2
continue-on-error: true
with:
build-root-directory: test-project-android
gradle-version: ${{ matrix.gradle }}
arguments: lintKotlin -PagpVersion=${{ matrix.agp }} --continue
- name: Assert fixes
run: |
cd test-project-android/app/build/reports/ktlint
grep 'no-empty-class-body' main-lint.txt | grep -q 'EmptyClassBodyClass.kt:3:27'
grep 'no-empty-class-body' main-lint.txt | grep -q 'EmptyClassBodyInJavaSourcesClass.kt:3:40'
grep 'op-spacing' test-lint.txt | grep -q 'OpSpacing.kt:5:16'
grep 'no-newline-before-return-type' test-lint.txt | grep -q 'CustomRuleTest.kt:4:16'
- uses: gradle/gradle-build-action@v2
with:
build-root-directory: test-project-android
gradle-version: ${{ matrix.gradle }}
arguments: formatKotlin lintKotlin -PagpVersion=${{ matrix.agp }} --no-build-cache
- name: Upload reports
if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: "test-project-android-reports-${{ matrix.gradle }}-${{ matrix.java }}-${{ matrix.agp }}"
path: "${{ github.workspace }}/**/build/reports/ktlint"