diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7018855..15d4e4d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,99 +23,10 @@ on: jobs: # Run Gradle Wrapper Validation Action to verify the wrapper's checksum - gradleValidation: - name: Gradle Wrapper - runs-on: ubuntu-latest - steps: - - # Check out current repository - - name: Fetch Sources - uses: actions/checkout@v2.3.4 - - # Validate wrapper - - name: Gradle Wrapper Validation - uses: gradle/wrapper-validation-action@v1.0.4 - # Run verifyPlugin and test Gradle tasks - test: - name: Test - needs: gradleValidation - runs-on: ubuntu-latest - steps: - - # Check out current repository - - name: Fetch Sources - uses: actions/checkout@v2.3.4 - - # Setup Java 11 environment for the next steps - - name: Setup Java - uses: actions/setup-java@v2 - with: - distribution: zulu - java-version: 11 - cache: gradle - - # Set environment variables - - name: Export Properties - id: properties - shell: bash - run: | - PROPERTIES="$(./gradlew properties --console=plain -q)" - IDE_VERSIONS="$(echo "$PROPERTIES" | grep "^pluginVerifierIdeVersions:" | base64)" - - echo "::set-output name=ideVersions::$IDE_VERSIONS" - echo "::set-output name=pluginVerifierHomeDir::~/.pluginVerifier" - - # Cache Plugin Verifier IDEs - - name: Setup Plugin Verifier IDEs Cache - uses: actions/cache@v2.1.6 - with: - path: ${{ steps.properties.outputs.pluginVerifierHomeDir }}/ides - key: plugin-verifier-${{ steps.properties.outputs.ideVersions }} - - # Run Qodana inspections - - name: Qodana - Code Inspection - uses: JetBrains/qodana-action@v2.1-eap - - # Collect Qodana Result - - uses: actions/upload-artifact@v2 - with: - name: qodana-result - path: ${{ github.workspace }}/qodana - - # Run tests - - name: Run Tests - run: ./gradlew test - - # Collect Tests Result of failed tests - - name: Collect Tests Result - if: ${{ failure() }} - uses: actions/upload-artifact@v2 - with: - name: tests-result - path: ${{ github.workspace }}/build/reports/tests - - # Run verifyPlugin Gradle task - - name: Verify Plugin - run: ./gradlew verifyPlugin - - # Run IntelliJ Plugin Verifier action using GitHub Action - - name: Run Plugin Verifier - run: ./gradlew runPluginVerifier -Pplugin.verifier.home.dir=${{ steps.properties.outputs.pluginVerifierHomeDir }} - - # Collect Plugin Verifier Result - - name: Collect Plugin Verifier Result - if: ${{ always() }} - uses: actions/upload-artifact@v2 - with: - name: pluginVerifier-result - path: ${{ github.workspace }}/build/reports/pluginVerifier - - # Build plugin with buildPlugin Gradle task and provide the artifact for the next workflow jobs - # Requires test job to be passed + # Build plugin and provide the artifact for the next workflow jobs build: name: Build - needs: test runs-on: ubuntu-latest outputs: version: ${{ steps.properties.outputs.version }} @@ -126,6 +37,10 @@ jobs: - name: Fetch Sources uses: actions/checkout@v2.3.4 + # Validate wrapper + - name: Gradle Wrapper Validation + uses: gradle/wrapper-validation-action@v1.0.4 + # Setup Java 11 environment for the next steps - name: Setup Java uses: actions/setup-java@v2 @@ -150,16 +65,55 @@ jobs: echo "::set-output name=version::$VERSION" echo "::set-output name=name::$NAME" echo "::set-output name=changelog::$CHANGELOG" + echo "::set-output name=pluginVerifierHomeDir::~/.pluginVerifier" - # Build artifact using buildPlugin Gradle task - - name: Build Plugin - run: ./gradlew buildPlugin + ./gradlew listProductsReleases # prepare list of IDEs for Plugin Verifier - # Store built plugin as an artifact for downloading + # Run tests + - name: Run Tests + run: ./gradlew test + + # Collect Tests Result of failed tests + - name: Collect Tests Result + if: ${{ failure() }} + uses: actions/upload-artifact@v2 + with: + name: tests-result + path: ${{ github.workspace }}/build/reports/tests + + # Cache Plugin Verifier IDEs + - name: Setup Plugin Verifier IDEs Cache + uses: actions/cache@v2.1.6 + with: + path: ${{ steps.properties.outputs.pluginVerifierHomeDir }}/ides + key: plugin-verifier-${{ hashFiles("build/listProductsReleases.txt") }} + + # Run Verify Plugin task and IntelliJ Plugin Verifier tool + - name: Run Plugin Verification tasks + run: ./gradlew runPluginVerifier -Pplugin.verifier.home.dir=${{ steps.properties.outputs.pluginVerifierHomeDir }} + + # Collect Plugin Verifier Result + - name: Collect Plugin Verifier Result + if: ${{ always() }} + uses: actions/upload-artifact@v2 + with: + name: pluginVerifier-result + path: ${{ github.workspace }}/build/reports/pluginVerifier + + # Run Qodana inspections + - name: Qodana - Code Inspection + uses: JetBrains/qodana-action@v2.1-eap + + # Collect Qodana Result + - uses: actions/upload-artifact@v2 + with: + name: qodana-result + path: ${{ github.workspace }}/qodana + + # Store already-built plugin as an artifact for downloading - name: Upload artifacts uses: actions/upload-artifact@v2.2.4 with: - name: "${{ steps.properties.outputs.name }} - ${{ steps.properties.outputs.version }}" path: ./build/distributions/* # Prepare a draft release for GitHub Releases page for the manual verification @@ -171,10 +125,6 @@ jobs: runs-on: ubuntu-latest steps: - # Check out current repository - - name: Fetch Sources - uses: actions/checkout@v2.3.4 - # Remove old release drafts by using the curl request for the available releases with draft flag - name: Remove Old Release Drafts env: diff --git a/CHANGELOG.md b/CHANGELOG.md index cd0bb7f..ccca36d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,10 @@ ### Changed - Dependencies - upgrade `org.jetbrains.intellij` to `1.2.0` -- Update `pluginVerifierIdeVersions` to `2021.2.2` +- GitHub Actions general performance refactoring + +### Removed +- Removed the `pluginVerifierIdeVersions` configuration to use default IDEs list provided by the `listProductsReleases` task for `runPluginVerifier` ## [1.0.0] ### Added