chore: CI/CD and basic infrastructure for the IntelliJ Plugin #30
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: Checkout | |
uses: actions/checkout@v4 | |
- name: remove label not matching title - fix | |
if: | | |
startsWith(github.event.pull_request.title, 'fix:') || | |
startsWith(github.event.pull_request.title, 'fix(') | |
uses: actions-ecosystem/action-remove-labels@v1 | |
with: | |
labels: feat | |
- name: remove label not matching title - feat | |
if: | | |
startsWith(github.event.pull_request.title, 'feat:') || | |
startsWith(github.event.pull_request.title, 'feat(') | |
uses: actions-ecosystem/action-remove-labels@v1 | |
with: | |
labels: fix | |
- name: add label based on title - fix | |
if: | | |
startsWith(github.event.pull_request.title, 'fix:') || | |
startsWith(github.event.pull_request.title, 'fix(') | |
uses: actions-ecosystem/action-add-labels@v1 | |
with: | |
labels: fix | |
- name: add label based on title - feat | |
if: | | |
startsWith(github.event.pull_request.title, 'feat:') || | |
startsWith(github.event.pull_request.title, 'feat(') | |
uses: actions-ecosystem/action-add-labels@v1 | |
with: | |
labels: feature | |
- name: add label based on title - chore | |
if: | | |
startsWith(github.event.pull_request.title, 'chore:') || | |
startsWith(github.event.pull_request.title, 'chore(') | |
uses: actions-ecosystem/action-add-labels@v1 | |
with: | |
labels: no release notes | |
- 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" "unitTest" | |
- 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" |