Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 97 additions & 0 deletions .github/workflows/kotlin-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: 'CI — Build Kotlin plugin on PR commits'

on:
pull_request:
types: [opened, synchronize, reopened]
push:
branches: [ "main" ]

jobs:
build-kotlin-plugin:
name: 'Build (matrix: Java ${{ matrix.java-version }})'
runs-on: ubuntu-latest
permissions:
contents: read
strategy:
matrix:
java-version: [11, 17]

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up JDK ${{ matrix.java-version }}
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: ${{ matrix.java-version }}

- name: Cache Gradle
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
ide-plugins/.gradle
key: gradle-${{ matrix.java-version }}-${{ hashFiles('ide-plugins/**/*.gradle*','ide-plugins/**/gradle-wrapper.properties') }}
restore-keys: |
gradle-${{ matrix.java-version }}-

- name: Make wrapper executable
run: chmod +x ./gradlew
working-directory: ide-plugins

- name: Print Gradle info (for debugging)
run: ./gradlew --no-daemon --version
working-directory: ide-plugins

- name: Run diagnostics script (prints wrapper and kotlin plugin references)
run: |
mkdir -p ../out
./inspect_gradle_kotlin_versions.sh > ../out/ci-diagnostics.txt || true
working-directory: ide-plugins
- name: Upload diagnostics
uses: actions/upload-artifact@v4
with:
name: ci-diagnostics-java-${{ matrix.java-version }}
path: out/ci-diagnostics.txt

- name: Full build with stacktrace (capture to file)
env:
GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx3g"
run: |
set -o pipefail
./gradlew build --no-daemon --stacktrace 2>&1 | tee ../gradle-build.log || true
working-directory: ide-plugins
- name: Upload build log
uses: actions/upload-artifact@v4
with:
name: gradle-build-log-java-${{ matrix.java-version }}
path: gradle-build.log

- name: Build Kotlin plugin subproject if present
run: |
set -o pipefail
if ./gradlew :kotlin:tasks --dry-run &>/dev/null; then
echo "Detected :kotlin subproject -> building it"
./gradlew :kotlin:build --no-daemon --stacktrace 2>&1 | tee ../kotlin-subproject-build.log || true
echo "Uploading kotlin-subproject-build.log"
ls -la ../kotlin-subproject-build.log || true
elif ./gradlew :plugin:kotlin:tasks --dry-run &>/dev/null; then
echo "Detected :plugin:kotlin subproject -> building it"
./gradlew :plugin:kotlin:build --no-daemon --stacktrace 2>&1 | tee ../kotlin-subproject-build.log || true
else
echo "No explicit kotlin plugin subproject found; running assemble on all projects"
./gradlew assemble --no-daemon --stacktrace 2>&1 | tee ../assemble.log || true
fi
working-directory: ide-plugins
- name: Upload kotlin-subproject/build logs if present
uses: actions/upload-artifact@v4
with:
name: kotlin-subproject-logs-java-${{ matrix.java-version }}
path: |
kotlin-subproject-build.log
assemble.log
if: always()
39 changes: 39 additions & 0 deletions ide-plugins/inspect_gradle_kotlin_versions.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/usr/bin/env bash
set -eu

# Print Gradle wrapper distribution URL
if [ -f gradle/wrapper/gradle-wrapper.properties ]; then
echo "== gradle-wrapper.properties =="
grep -i distributionUrl gradle/wrapper/gradle-wrapper.properties || true
echo
fi

# Print gradle.properties if present
if [ -f gradle.properties ]; then
echo "== gradle.properties =="
cat gradle.properties || true
echo
fi

# Search for Kotlin Gradle plugin references
echo "== Kotlin plugin references (searching for kotlin-gradle-plugin and org.jetbrains.kotlin) =="
grep -R --line-number --color=never "kotlin-gradle-plugin" || true
grep -R --line-number --color=never "org.jetbrains.kotlin" || true

# Print build.gradle(.kts) files header lines to show plugin versions where declared
for f in $(git ls-files "*.gradle" "*.gradle.kts" 2>/dev/null || true); do
echo "---- $f ----"
sed -n '1,200p' "$f" | sed -n '1,60p'
echo
done

# Print settings.gradle(.kts)
for f in $(git ls-files "settings.gradle" "settings.gradle.kts" 2>/dev/null || true); do
echo "---- $f ----"
sed -n '1,200p' "$f" | sed -n '1,60p'
echo
done

# Print the kotlin plugin versions extracted via a rough regex
echo "== Extracted candidate versions =="
grep -R --line-number --color=never "kotlin-gradle-plugin[:=][^\n]*" || true