Skip to content

chore: CI/CD and basic infrastructure for the IntelliJ Plugin #27

chore: CI/CD and basic infrastructure for the IntelliJ Plugin

chore: CI/CD and basic infrastructure for the IntelliJ Plugin #27

Workflow file for this run

name: Quality Check
on:
push:
branches:
- main
pull_request:
branches:
- main
permissions:
contents: write
pull-requests: write
checks: write
jobs:
changelog-check:
name: 'Changelog Check'
runs-on: ubuntu-latest
steps:
- name: Verify Changed files
uses: tj-actions/verify-changed-files@v20
id: verify-changelog-files
with:
files: |
CHANGELOG.md
- uses: mheap/github-action-required-labels@v1
if: steps.verify-changed-files.outputs.files_changed == 'false'
with:
mode: minimum
count: 1
labels: "no release notes"
catalog-check:
name: 'Catalog Updates Check'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '17'
cache: 'gradle'
- name: Run Dependency Updates
run: |
./gradlew --quiet --console=plain dependencyUpdates
style-check:
name: 'Style Check'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '17'
cache: 'gradle'
- name: Run Linter
run: |
./gradlew --quiet --console=plain spotlessApply
unit-tests:
name: 'Unit Tests'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '17'
cache: 'gradle'
- name: Run Test Suite
run: |
./gradlew --quiet --console=plain "clean" "cleanTest" "unit-test"
- name: Publish Test Report
uses: mikepenz/action-junit-report@v4
if: success() || failure() # always run even if the previous step fails
with:
report_paths: '**/build/test-results/test/TEST-*.xml'
- name: Generate Coverage Report
run: |
./gradlew --quiet --console=plain "jacocoTestReport"
- uses: actions/upload-artifact@v4
name: Upload Unit Test Coverage
with:
name: unit-test-coverage
path: "**/build/reports/jacoco/test/jacocoTestReport.xml"
functional-tests:
name: 'Functional & UI Tests'
runs-on: ubuntu-latest
needs:
- catalog-check
- style-check
- unit-tests
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '17'
cache: 'gradle'
- name: Functional Tests
run: |
./gradlew --quiet --console=plain "clean" ":packages:jetbrains-plugin:cleanTest" ":packages:jetbrains-plugin:test"
- name: Publish Test Report
uses: mikepenz/action-junit-report@v4
if: success() || failure() # always run even if the previous step fails
with:
report_paths: '**/build/test-results/test/TEST-*.xml'
- name: Generate Coverage Report
run: |
./gradlew --quiet --console=plain "jacocoTestReport"
- uses: actions/upload-artifact@v4
name: Upload Functional Test Coverage
with:
name: functional-test-coverage
path: "**/build/reports/jacoco/test/jacocoTestReport.xml"
test-coverage:
name: 'Test Coverage'
runs-on: ubuntu-latest
needs:
- unit-tests
- functional-tests
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '17'
cache: 'gradle'
- uses: actions/download-artifact@v4
with:
merge-multiple: true
- uses: madrapps/[email protected]
with:
paths: "**/build/reports/jacoco/test/jacocoTestReport.xml"
token: ${{ secrets.GITHUB_TOKEN }}
min-coverage-overall: 70
min-coverage-changed-files: 85
title: "Coverage Report"
update-comment: true
continue-on-error: true
pass-emoji: "✅"
fail-emoji: "🚫"
debug-mode: true
fitness-check:
name: "Fitness Check"
runs-on: ubuntu-latest
needs:
- unit-tests
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '17'
cache: 'gradle'
- name: Performance Tests
run: |
./gradlew --quiet --console=plain ":packages:jetbrains-plugin:jmh"
- name: JMH Benchmark Action
uses: kitlangton/jmh-benchmark-action@main
with:
jmh-output-path: build/reports/jmh/results.json
github-token: ${{ secrets.GITHUB_TOKEN }}
verify-plugin:
name: "Verify Plugin"
runs-on: ubuntu-latest
needs:
- fitness-check
- test-coverage
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '17'
cache: 'gradle'
- name: Verify Plugin
run: |
./gradlew ":packages:jetbrains-plugin:verifyPlugin"