Skip to content

Commit ed07cff

Browse files
committed
Use detekt and ktlint as standalone tools for PR validation and reviewdog reporting
1 parent 603d596 commit ed07cff

File tree

5 files changed

+60
-67
lines changed

5 files changed

+60
-67
lines changed

.github/workflows/pr-compliance-check.yml

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -27,41 +27,30 @@ jobs:
2727
id: pr-info
2828
run: echo "pr-number=$(cat pr/pr_number)" >> $GITHUB_OUTPUT
2929
reviewdog:
30-
if: github.event_name == 'workflow_run'
31-
needs:
32-
- restore-pr
33-
strategy:
34-
matrix:
35-
include:
36-
- tool: ktlint
37-
error-format: "%f:%l:%c %m"
38-
- tool: detekt
39-
error-format: "%f:%l:%c: %m"
30+
if: github.event_name == 'pull_request_target'
4031
permissions:
4132
pull-requests: write
4233
runs-on: ubuntu-latest
4334
steps:
4435
- name: 'Checkout Repository'
4536
uses: actions/checkout@v4
46-
- name: Download style reports
47-
uses: dawidd6/action-download-artifact@v6
48-
with:
49-
name: style-reports
50-
path: reports/
51-
run_id: ${{ github.event.workflow_run.id }}
37+
- name: Setup format tools
38+
run: |
39+
export DETEKT_VERSION=$(./gradlew --console plain -q printDetektVersion)
40+
export KTLINT_VERSION=$(./gradlew --console plain -q printKtlintVersion)
41+
./scripts/install-format-tools.sh
5242
- name: Setup reviewdog
5343
uses: reviewdog/action-setup@v1
5444
with:
5545
reviewdog_version: latest
56-
- name: Run reviewdog ${{ matrix.tool }}
57-
env:
58-
GITHUB_ACTIONS: "" # make reviewdog think that we are not in GitHub
59-
REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
60-
CI_PULL_REQUEST: ${{ needs.restore-pr.outputs.pr-number }}
61-
CI_REPO_OWNER: ${{ github.repository_owner }}
62-
CI_REPO_NAME: ${{ github.event.repository.name }}
63-
CI_COMMIT: ${{ github.event.workflow_run.head_sha }}
64-
run: echo reports/${{ matrix.tool }}-reviewdog.out | reviewdog -tee -reporter=github-pr-review -name=${{ matrix.tool }} -efm="${{ matrix.error-format }}"
46+
- name: 'Checkout PR'
47+
uses: actions/checkout@v4
48+
with:
49+
repository: ${{ github.event.pull_request.head.repo.full_name }}
50+
ref: ${{ github.event.pull_request.head.ref }}
51+
- name: Run reviewdog
52+
run: reviewdog -tee -reporter=github-pr-review
53+
6554
danger-check:
6655
if: github.event_name == 'pull_request_target'
6756
runs-on: ubuntu-latest

.github/workflows/pull_request.yml

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -26,48 +26,6 @@ jobs:
2626
path: pr/
2727
dump-unicode-data:
2828
uses: ./.github/workflows/unicode-dump.yml
29-
collect-output-reviewdog:
30-
needs:
31-
- dump-unicode-data
32-
runs-on: ubuntu-latest
33-
steps:
34-
- name: 'Checkout Repository'
35-
uses: actions/checkout@v4
36-
- uses: actions/setup-java@v4
37-
with:
38-
distribution: temurin
39-
java-version-file: .java-version
40-
- name: Validate Gradle Wrapper
41-
uses: gradle/actions/wrapper-validation@v4
42-
- name: Cache konan
43-
uses: actions/cache@v4
44-
with:
45-
path: ~/.konan
46-
key: ${{ runner.os }}-gradle-${{ hashFiles('*.gradle.kts') }}
47-
restore-keys: |
48-
${{ runner.os }}-gradle-
49-
- name: Cache unicode data
50-
uses: actions/cache@v4
51-
with:
52-
enableCrossOsArchive: true
53-
fail-on-cache-miss: true
54-
path: unicode_dump
55-
key: unicode-dump-${{ hashFiles('unicode_dump/*') }}
56-
restore-keys: |
57-
unicode-dump-
58-
- name: Setup Gradle
59-
uses: gradle/actions/setup-gradle@v4
60-
with:
61-
gradle-version: wrapper
62-
- name: Run ktlint
63-
run: ./gradlew ktlintCheck --console plain > ktlint-reviewdog.out 2>&1 || true
64-
- name: Run detekt
65-
run: ./gradlew -q detekt detektAll --console plain > detekt-reviewdog.out 2>&1 || true
66-
- name: Collect output for reviewdog
67-
uses: actions/upload-artifact@v4
68-
with:
69-
name: style-reports
70-
path: '*-reviewdog.out'
7129
check-pr:
7230
needs:
7331
- dump-unicode-data

.reviewdog.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
runner:
2+
detekt:
3+
cmd: "detekt-cli -c config/detekt/detekt.yml --includes '**/src/*Main/**/*.kt;**/src/main/**/*.kt'"
4+
errorformat:
5+
- "%f:%l:%c: %m"
6+
name: detekt
7+
level: error
8+
ktlint:
9+
cmd: "ktlint '**/*.kt' '**/*.kts' '!**/build/generated*/**'"
10+
errorformat:
11+
- "%f:%l:%c %m"
12+
name: ktlint
13+
level: error

build.gradle.kts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,12 @@ nexusPublishing {
2828
password.set(ossrhPassword)
2929
}
3030
}
31+
}
32+
33+
tasks.register("printKtlintVersion") {
34+
println(libs.versions.ktlint.get())
35+
}
36+
37+
tasks.register("printDetektVersion") {
38+
println(libs.versions.detekt.get())
3139
}

scripts/install-format-tools.sh

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/bin/bash
2+
if [[ "$DETEKT_VERSION" == "" ]]; then
3+
echo "Privide detekt version in DETEKT_VERSION env variable"
4+
exit 1
5+
fi
6+
if [[ "$KTLINT_VERSION" == "" ]]; then
7+
echo "Provide ktlint version in KTLINT_VERSION env variable"
8+
exit 1
9+
fi
10+
echo "Installing detekt"
11+
jar_destination="${HOME}/.local/lib/detekt"
12+
mkdir -p ${jar_destination}
13+
curl -sSL -o ${jar_destination}/detekt-cli.jar "https://github.com/detekt/detekt/releases/download/v${DETEKT_VERSION}/detekt-cli-${DETEKT_VERSION}-all.jar"
14+
15+
entrypoint_script="${HOME}/.local/bin/detekt-cli"
16+
cat > "$entrypoint_script" << EOM
17+
#!/bin/bash
18+
java -jar ${jar_destination}/detekt-cli.jar \$@
19+
EOM
20+
chmod +x "$entrypoint_script"
21+
detekt-cli --version
22+
23+
echo "Installing ktlint"
24+
curl -sSLO "https://github.com/pinterest/ktlint/releases/download/$KTLINT_VERSION/ktlint" && chmod a+x ktlint && mv ktlint ~/.local/bin/
25+
ktlint --version

0 commit comments

Comments
 (0)