Skip to content

feat: adds support for parsing Aggregates.sort stage INTELLIJ-127 #734

feat: adds support for parsing Aggregates.sort stage INTELLIJ-127

feat: adds support for parsing Aggregates.sort stage INTELLIJ-127 #734

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: 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: 'temurin'
java-version: '17'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
dependency-graph: 'generate-and-submit'
dependency-graph-continue-on-failure: false
gradle-home-cache-cleanup: true
- 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: 'temurin'
java-version: '17'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
gradle-home-cache-cleanup: true
- name: Run Linter
run: |
./gradlew --quiet --console=plain ktlintCheck
- name: Push Checkstyle report
uses: jwgmeligmeyling/[email protected]
if: success() || failure() # always run even if the previous step fails
with:
path: '**/*Check.xml'
unit-tests:
name: 'Unit and Integration Tests'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
gradle-home-cache-cleanup: true
- name: Setup Docker (for Test Containers)
run: |
sudo apt update -y
sudo apt install -y docker docker-compose
- name: Run Test Suite
run: |
./gradlew --stacktrace --console=plain check
- 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'
- uses: madrapps/[email protected]
if: success() || failure() # always run even if the previous step fails
with:
paths: "**/testCodeCoverageReport.xml"
token: ${{ secrets.GITHUB_TOKEN }}
min-coverage-overall: 70
min-coverage-changed-files: 70
title: "Coverage Report"
update-comment: true
continue-on-error: true
pass-emoji: "✅"
fail-emoji: "🚫"
functional-tests:
name: '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: 'temurin'
java-version: '17'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
gradle-home-cache-cleanup: true
- name: Restore IDEA Cached Indexes
uses: actions/cache/restore@v4
with:
key: 'intellij-indexes-cache'
path: |
packages/jetbrains-plugin/build/idea-sandbox/system-test/index
packages/jetbrains-plugin/build/idea-sandbox/system/index
- name: Prepare License Key
env:
JB_TEST_KEY: ${{ secrets.JB_TEST_KEY }}
run: |
mkdir -p packages/jetbrains-plugin/build/idea-sandbox/config-uiTest
echo "$JB_TEST_KEY" | base64 -d > packages/jetbrains-plugin/build/idea-sandbox/config-uiTest/idea.key
- name: Start UI Test Environment
run: |
export DISPLAY=:99.0
Xvfb -ac :99 -screen 0 1920x1080x24 &
sleep 10
mkdir -p packages/jetbrains-plugin/build/reports
./gradlew :packages:jetbrains-plugin:runIdeForUiTests > packages/jetbrains-plugin/build/reports/idea.log &
- name: Wait for IDE to start
uses: jtalk/url-health-check-action@v3
with:
url: "http://127.0.0.1:8082"
max-attempts: 15
retry-delay: 30s
- name: Run UI Tests
run: |
export DISPLAY=:99.0
./gradlew --quiet --console=plain :packages:jetbrains-plugin:uiTest
- uses: actions/upload-artifact@v4
name: Upload UI Test Failures
if: success() || failure() # always run even if the previous step fails
with:
name: ui-test-failures
path: |
**/build/reports/**/*.html
**/build/reports/**/*.log
**/build/reports/**/*.png
**/build/idea-sandbox/system/**/*.log
**/build/idea-sandbox/system-test/**/*.log
**/video/**/*.avi
- name: Cache IDEA Indexes
uses: actions/cache/save@v4
if: success() || failure() # always run even if the previous step fails
with:
key: 'intellij-indexes-cache'
path: |
packages/jetbrains-plugin/build/idea-sandbox/system-test/index
packages/jetbrains-plugin/build/idea-sandbox/system/index
- 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'
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: 'temurin'
java-version: '17'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
gradle-home-cache-cleanup: true
- 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 }}
fail-on-regression: true
# the typo is on purpose, it's like this in the plugin
failue-threshold: -5
verify-plugin:
name: "Verify Plugin"
runs-on: ubuntu-latest
needs:
- fitness-check
- functional-tests
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
gradle-home-cache-cleanup: true
- name: Verify Plugin
run: |
./gradlew ":packages:jetbrains-plugin:verifyPlugin"