Skip to content

chore: refactor aggregation parsing logic into dedicated stage based … #810

chore: refactor aggregation parsing logic into dedicated stage based …

chore: refactor aggregation parsing logic into dedicated stage based … #810

name: Quality Check
on:
push:
branches:
- main
pull_request:
branches:
- main
permissions:
contents: write
pull-requests: write
checks: write
jobs:
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/checkstyle-github-action@50292990e18466f2c5d95d04ff5fab931254fa5f # 1.2.0
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: |
echo "Adding Docker official GPG key"
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "Adding the repository to APT sources"
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
echo "Installing docker"
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- name: Run Test Suite
run: |
./gradlew --stacktrace --console=plain check
- name: Publish Test Report
uses: mikepenz/action-junit-report@a427a90771729d8f85b6ab0cdaa1a5929cab985d # 5.0.0
if: success() || failure() # always run even if the previous step fails
with:
report_paths: "**/build/test-results/test/TEST-*.xml"
- uses: madrapps/jacoco-report@7c362aca34caf958e7b1c03464bd8781db9f8da7 # 1.7.1
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@b716ccb6645355dd9fcce8002ce460e5474f7f00 # v4
# 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@a427a90771729d8f85b6ab0cdaa1a5929cab985d # 5.0.0
# 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@e7255850c5248fe630d7b5ca4ec4f3671765a9c7 # 0.1.1
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
# Disabling functional tests while we're waiting for JB team to resolve our CI license issue
# - 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"