diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7ceb7c2..a5f0dd6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,30 +1,11 @@ -# GitHub Actions Workflow is created for testing and preparing the plugin release in the following steps: -# - validate Gradle Wrapper, -# - run 'test' and 'verifyPlugin' tasks, -# - run Qodana inspections, -# - run 'buildPlugin' task and prepare artifact for the further tests, -# - run 'runPluginVerifier' task, -# - create a draft release. -# -# Workflow is triggered on push and pull_request events. -# -# GitHub Actions reference: https://help.github.com/en/actions -# -## JBIJPPTPL - name: Build on: - # Trigger the workflow on pushes to only the 'main' branch (this avoids duplicate checks being run e.g. for dependabot pull requests) push: branches: [main] - # Trigger the workflow on any pull request pull_request: jobs: - # Run Gradle Wrapper Validation Action to verify the wrapper's checksum - # Run verifyPlugin, IntelliJ Plugin Verifier, and test Gradle tasks - # Build plugin and provide the artifact for the next workflow jobs build: name: Build runs-on: ubuntu-latest @@ -33,29 +14,28 @@ jobs: changelog: ${{ steps.properties.outputs.changelog }} steps: - # Free GitHub Actions Environment Disk Space - name: Maximize Build Space run: | sudo rm -rf /usr/share/dotnet sudo rm -rf /usr/local/lib/android sudo rm -rf /opt/ghc - # Check out current repository - name: Fetch Sources uses: actions/checkout@v3 - # Validate wrapper - name: Gradle Wrapper Validation uses: gradle/wrapper-validation-action@v1.0.6 - # Setup Java 11 environment for the next steps - name: Setup Java uses: actions/setup-java@v3 with: distribution: zulu java-version: 11 - # Set environment variables + # Grant execute permission for gradlew + - name: Grant execute permission for gradlew + run: chmod +x ./gradlew + - name: Export Properties id: properties shell: bash @@ -73,14 +53,11 @@ jobs: echo "$CHANGELOG" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT - chmod +x ./gradlew ./gradlew listProductsReleases # prepare list of IDEs for Plugin Verifier - # Run tests - name: Run Tests run: ./gradlew check - # Collect Tests Result of failed tests - name: Collect Tests Result if: ${{ failure() }} uses: actions/upload-artifact@v3 @@ -88,24 +65,20 @@ jobs: name: tests-result path: ${{ github.workspace }}/build/reports/tests - # Upload Kover report to CodeCov - name: Upload Code Coverage Report uses: codecov/codecov-action@v3 with: files: ${{ github.workspace }}/build/reports/kover/xml/report.xml - # Cache Plugin Verifier IDEs - name: Setup Plugin Verifier IDEs Cache uses: actions/cache@v3 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 -Dplugin.verifier.home.dir=${{ steps.properties.outputs.pluginVerifierHomeDir }} - # Collect Plugin Verifier Result - name: Collect Plugin Verifier Result if: ${{ always() }} uses: actions/upload-artifact@v3 @@ -113,11 +86,9 @@ jobs: name: pluginVerifier-result path: ${{ github.workspace }}/build/reports/pluginVerifier - # Run Qodana inspections - name: Qodana - Code Inspection uses: JetBrains/qodana-action@v2022.3.4 - # Prepare plugin archive content for creating artifact - name: Prepare Plugin Artifact id: artifact shell: bash @@ -128,15 +99,12 @@ jobs: echo "filename=${FILENAME:0:-4}" >> $GITHUB_OUTPUT - # Store already-built plugin as an artifact for downloading - name: Upload artifact uses: actions/upload-artifact@v3 with: name: ${{ steps.artifact.outputs.filename }} path: ./build/distributions/content/*/* - # Prepare a draft release for GitHub Releases page for the manual verification - # If accepted and published, release workflow would be triggered releaseDraft: name: Release Draft if: github.event_name != 'pull_request' @@ -146,11 +114,9 @@ jobs: contents: write steps: - # Check out current repository - name: Fetch Sources uses: actions/checkout@v3 - # Remove old release drafts by using the curl request for the available releases with a draft flag - name: Remove Old Release Drafts env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -159,7 +125,6 @@ jobs: --jq '.[] | select(.draft == true) | .id' \ | xargs -I '{}' gh api -X DELETE repos/{owner}/{repo}/releases/{} - # Create a new release draft which is not publicly visible and requires manual acceptance - name: Create Release Draft env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}