Build #170
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: Build | |
on: | |
pull_request: | |
workflow_call: | |
outputs: | |
metadata-artifact: | |
description: The name of the artifact containing the result of the metadata task | |
value: metadata | |
build-artifact: | |
description: The name of the artifact containing the build result | |
value: build-result | |
workflow_dispatch: | |
jobs: | |
gradle-wrapper-validation: | |
name: Validate Gradle Wrapper | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Validate Gradle Wrapper | |
uses: gradle/actions/wrapper-validation@v3 | |
build: | |
name: Build Plugin | |
runs-on: ubuntu-latest | |
needs: gradle-wrapper-validation | |
outputs: | |
idea-releases: ${{ steps.metadata.outputs.products-releases }} | |
steps: | |
# Setup environment | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up build tools | |
uses: ./.github/actions/setup-tools | |
with: | |
publish-caches: true | |
# Collect metadata | |
- name: Collect metadata for upcoming steps and jobs | |
id: metadata | |
run: | | |
./gradlew --stacktrace metadata | |
echo "products-releases=$(./gradlew -q printProductsReleases | jq -Rnc '[inputs]')" >> "$GITHUB_OUTPUT" | |
# Build | |
- name: Build project | |
run: ./gradlew --stacktrace assemble buildPlugin | |
- name: Verify plugin | |
run: ./gradlew --stacktrace verifyPluginStructure | |
- name: Run linters and tests | |
run: ./gradlew --stacktrace check | |
# Upload artifacts | |
- name: Upload build reports | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build-reports | |
path: build/reports/ | |
if-no-files-found: ignore | |
- name: Upload build result | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build-result | |
path: build/distributions/ | |
if-no-files-found: error | |
- name: Upload metadata | |
uses: actions/upload-artifact@v4 | |
with: | |
name: metadata | |
path: build/metadata/ | |
if-no-files-found: error | |
check-compatibility: | |
name: Test Plugin Compatibility (${{ matrix.idea-release }}) | |
runs-on: ubuntu-latest | |
needs: build | |
strategy: | |
fail-fast: false | |
matrix: | |
idea-release: ${{ fromJSON(needs.build.outputs.idea-releases) }} | |
steps: | |
# Setup environment | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up build tools | |
uses: ./.github/actions/setup-tools | |
# Setup caches for Plugin Verifier | |
- name: Set up cache for IntelliJ Plugin Verifier | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cache/pluginVerifier/ides | |
key: pluginVerifier-${{ matrix.idea-release }}-${{ runner.os }} | |
# Run checks | |
- name: Check plugin compatibility | |
run: ./gradlew --stacktrace -PverifierIdeVersionOverride="${{ matrix.idea-release }}" verifyPlugin | |
# Upload artifacts | |
- name: Upload build reports | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: compatibility-reports-${{ matrix.idea-release }} | |
path: build/reports/ | |
if-no-files-found: ignore |