name: JetBrains Plugin on: push: branches: [ main ] paths: - 'packages/jetbrains-lean-ctx/**' - '.github/workflows/jetbrains-plugin.yml' pull_request: branches: [ main ] paths: - 'packages/jetbrains-lean-ctx/**' - '.github/workflows/jetbrains-plugin.yml' # Release packaging lives in release.yml (the `jetbrains-plugin` job attaches the # plugin .zip to each GitHub Release). This workflow is CI-only: validate + build + # test on plugin source changes. permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true defaults: run: working-directory: packages/jetbrains-lean-ctx jobs: actionlint: name: Actionlint runs-on: ubuntu-latest timeout-minutes: 5 defaults: run: working-directory: . steps: - name: Fetch Sources uses: actions/checkout@v6 with: persist-credentials: false - name: Run actionlint run: | bash <(curl -sSf https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash) ./actionlint -color .github/workflows/jetbrains-plugin.yml validation: name: Validation runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@v6 - uses: gradle/actions/wrapper-validation@3f131e8634966bd73d06cc69884922b02e6faf92 # v6 build: name: Build runs-on: ubuntu-latest timeout-minutes: 20 steps: - name: Fetch Sources uses: actions/checkout@v6 with: persist-credentials: false - name: Setup Java uses: actions/setup-java@v5 with: distribution: zulu java-version: 21 - name: Setup Gradle uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6 - name: Build plugin run: ./gradlew buildPlugin --console=plain test: name: Test needs: [ build ] runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Fetch Sources uses: actions/checkout@v6 with: persist-credentials: false - name: Setup Java uses: actions/setup-java@v5 with: distribution: zulu java-version: 21 - name: Setup Gradle uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6 with: gradle-home-cache-cleanup: true - name: Run Tests run: ./gradlew check --console=plain - name: Collect Tests Result if: ${{ failure() }} uses: actions/upload-artifact@v7 with: name: jetbrains-tests-result path: packages/jetbrains-lean-ctx/build/reports/tests