150 lines
4.5 KiB
YAML
150 lines
4.5 KiB
YAML
name: Pull Request
|
|
|
|
on:
|
|
pull_request:
|
|
paths-ignore:
|
|
- '.github/ISSUE_TEMPLATE/*'
|
|
- '.github/PULL_REQUEST_TEMPLATE.md'
|
|
- 'LICENSE'
|
|
- 'README.md'
|
|
- 'docs/**'
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
validate_gradle_wrapper:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
steps:
|
|
- name: Checkout
|
|
timeout-minutes: 1
|
|
uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3
|
|
# Gradle Wrapper validation can be flaky
|
|
# https://github.com/gradle/wrapper-validation-action/issues/40
|
|
- name: Gradle Wrapper Validation
|
|
timeout-minutes: 1
|
|
uses: gradle/wrapper-validation-action@8d49e559aae34d3e0eb16cde532684bc9702762b
|
|
|
|
static_analysis_detekt:
|
|
needs: validate_gradle_wrapper
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
steps:
|
|
- name: Checkout
|
|
timeout-minutes: 1
|
|
uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3
|
|
- name: Set up Java
|
|
uses: actions/setup-java@3f07048e3d294f56e9b90ac5ea2c6f74e9ad0f98
|
|
timeout-minutes: 1
|
|
with:
|
|
distribution: 'temurin'
|
|
java-version: 17
|
|
- name: Set up Gradle
|
|
uses: gradle/gradle-build-action@6095a76664413da4c8c134ee32e8a8ae900f0f1f
|
|
timeout-minutes: 3
|
|
- name: Detekt
|
|
timeout-minutes: 4
|
|
run: |
|
|
./gradlew detektAll
|
|
- name: Collect Artifacts
|
|
timeout-minutes: 1
|
|
if: ${{ always() }}
|
|
run: |
|
|
export ARTIFACTS_DIR_PATH=~/artifacts
|
|
export REPORTS_ZIP_PATH=${ARTIFACTS_DIR_PATH}/static_analysis_detekt.zip
|
|
|
|
mkdir ${ARTIFACTS_DIR_PATH}
|
|
|
|
zip -r ${REPORTS_ZIP_PATH} . -i build/reports/detekt/\*
|
|
- name: Upload Artifacts
|
|
if: ${{ always() }}
|
|
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce
|
|
timeout-minutes: 1
|
|
with:
|
|
name: Detekt static analysis results
|
|
path: ~/artifacts
|
|
|
|
static_analysis_ktlint:
|
|
needs: validate_gradle_wrapper
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
steps:
|
|
- name: Checkout
|
|
timeout-minutes: 1
|
|
uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3
|
|
- name: Set up Java
|
|
uses: actions/setup-java@3f07048e3d294f56e9b90ac5ea2c6f74e9ad0f98
|
|
timeout-minutes: 1
|
|
with:
|
|
distribution: 'temurin'
|
|
java-version: 17
|
|
- name: Set up Gradle
|
|
uses: gradle/gradle-build-action@6095a76664413da4c8c134ee32e8a8ae900f0f1f
|
|
timeout-minutes: 3
|
|
- name: Ktlint
|
|
timeout-minutes: 4
|
|
run: |
|
|
./gradlew ktlint
|
|
- name: Collect Artifacts
|
|
timeout-minutes: 1
|
|
if: ${{ always() }}
|
|
run: |
|
|
export ARTIFACTS_DIR_PATH=~/artifacts
|
|
export REPORTS_ZIP_PATH=${ARTIFACTS_DIR_PATH}/static_analysis_ktlint.zip
|
|
|
|
mkdir ${ARTIFACTS_DIR_PATH}
|
|
|
|
zip -r ${REPORTS_ZIP_PATH} . -i build/reports/ktlint/\*
|
|
- name: Upload Artifacts
|
|
if: ${{ always() }}
|
|
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce
|
|
timeout-minutes: 1
|
|
with:
|
|
name: Ktlint static analysis results
|
|
path: ~/artifacts
|
|
|
|
test:
|
|
needs: validate_gradle_wrapper
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
steps:
|
|
- name: Checkout
|
|
timeout-minutes: 1
|
|
uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3
|
|
- name: Set up Java
|
|
uses: actions/setup-java@3f07048e3d294f56e9b90ac5ea2c6f74e9ad0f98
|
|
timeout-minutes: 1
|
|
with:
|
|
distribution: 'temurin'
|
|
java-version: 17
|
|
- name: Set up Gradle
|
|
uses: gradle/gradle-build-action@6095a76664413da4c8c134ee32e8a8ae900f0f1f
|
|
timeout-minutes: 3
|
|
- name: Test
|
|
timeout-minutes: 12
|
|
run: |
|
|
./gradlew check
|
|
- name: Collect Artifacts
|
|
timeout-minutes: 1
|
|
if: ${{ always() }}
|
|
run: |
|
|
export ARTIFACTS_DIR_PATH=~/artifacts
|
|
export TEST_RESULTS_ZIP_PATH=${ARTIFACTS_DIR_PATH}/test_results.zip
|
|
|
|
mkdir ${ARTIFACTS_DIR_PATH}
|
|
|
|
zip -r ${TEST_RESULTS_ZIP_PATH} . -i build/reports/\* \*/build/reports/\*
|
|
- name: Upload Artifacts
|
|
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce
|
|
timeout-minutes: 1
|
|
if: ${{ always() }}
|
|
with:
|
|
name: Test results
|
|
path: ~/artifacts
|