diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index f18a401..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,241 +0,0 @@ -# GitHub Actions Workflow created for testing and preparing the plugin release in following steps: -# - validate Gradle Wrapper, -# - run test and verifyPlugin tasks, -# - run buildPlugin task and prepare artifact for the further tests, -# - run IntelliJ Plugin Verifier, -# - create a draft release. -# -# Workflow is triggered on push and pull_request events. -# -# Docs: -# - GitHub Actions: https://help.github.com/en/actions -# - IntelliJ Plugin Verifier GitHub Action: https://github.com/ChrisCarini/intellij-platform-plugin-verifier-action - -name: Build -on: [push, pull_request] -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 - - # Validate wrapper - - name: Gradle Wrapper Validation - uses: gradle/wrapper-validation-action@v1.0.3 - - # Run verifyPlugin and test Gradle tasks - test: - name: Test - needs: gradleValidation - runs-on: ubuntu-latest - steps: - # Setup Java 11 environment for the next steps - - name: Setup Java - uses: actions/setup-java@v2 - with: - distribution: 'zulu' - java-version: '11' - - # Check out current repository - - name: Fetch Sources - uses: actions/checkout@v2 - - # Cache Gradle dependencies - - name: Setup Gradle Dependencies Cache - uses: actions/cache@v2 - with: - path: ~/.gradle/caches - key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts', 'gradle.properties') }} - - # Cache Gradle Wrapper - - name: Setup Gradle Wrapper Cache - uses: actions/cache@v2 - with: - path: ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }} - - # Run detekt, ktlint and tests - - name: Run Linters and Test - run: ./gradlew check - - # Run verifyPlugin Gradle task - - name: Verify Plugin - run: ./gradlew verifyPlugin - - # Build plugin with buildPlugin Gradle task and provide the artifact for the next workflow jobs - # Requires test job to be passed - build: - name: Build - needs: test - runs-on: ubuntu-latest - outputs: - name: ${{ steps.properties.outputs.name }} - version: ${{ steps.properties.outputs.version }} - changelog: ${{ steps.properties.outputs.changelog }} - artifact: ${{ steps.properties.outputs.artifact }} - steps: - # Setup Java 11 environment for the next steps - - name: Setup Java - uses: actions/setup-java@v2 - with: - distribution: 'zulu' - java-version: '11' - - # Check out current repository - - name: Fetch Sources - uses: actions/checkout@v2 - - # Cache Gradle Dependencies - - name: Setup Gradle Dependencies Cache - uses: actions/cache@v2 - with: - path: ~/.gradle/caches - key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts', 'gradle.properties') }} - - # Cache Gradle Wrapper - - name: Setup Gradle Wrapper Cache - uses: actions/cache@v2 - with: - path: ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }} - - # Set environment variables - - name: Export Properties - id: properties - shell: bash - run: | - PROPERTIES="$(./gradlew properties --console=plain -q)" - VERSION="$(echo "$PROPERTIES" | grep "^version:" | cut -f2- -d ' ')" - NAME="$(echo "$PROPERTIES" | grep "^pluginName:" | cut -f2- -d ' ')" - CHANGELOG="$(./gradlew getChangelog --unreleased --no-header --console=plain -q)" - CHANGELOG="${CHANGELOG//'%'/'%25'}" - CHANGELOG="${CHANGELOG//$'\n'/'%0A'}" - CHANGELOG="${CHANGELOG//$'\r'/'%0D'}" - ARTIFACT="${NAME}-${VERSION}.zip" - - echo "::set-output name=version::$VERSION" - echo "::set-output name=name::$NAME" - echo "::set-output name=changelog::$CHANGELOG" - echo "::set-output name=artifact::$ARTIFACT" - - # Build artifact using buildPlugin Gradle task - - name: Build Plugin - run: ./gradlew buildPlugin - - # Upload plugin artifact to make it available in the next jobs - - name: Upload artifact - uses: actions/upload-artifact@v1 - with: - name: plugin-artifact - path: ./build/distributions/${{ steps.properties.outputs.artifact }} - - # Verify built plugin using IntelliJ Plugin Verifier tool - # Requires build job to be passed - verify: - name: Verify - needs: build - runs-on: ubuntu-latest - steps: - # Setup Java 11 environment for the next steps - - name: Setup Java - uses: actions/setup-java@v2 - with: - distribution: 'zulu' - java-version: '11' - - # Check out current repository - - name: Fetch Sources - uses: actions/checkout@v2 - - # Cache Gradle Dependencies - - name: Setup Gradle Dependencies Cache - uses: actions/cache@v2 - with: - path: ~/.gradle/caches - key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts', 'gradle.properties') }} - - # Cache Gradle Wrapper - - name: Setup Gradle Wrapper Cache - uses: actions/cache@v2 - with: - path: ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }} - - # 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 - with: - path: ${{ steps.properties.outputs.pluginVerifierHomeDir }}/ides - key: ${{ runner.os }}-plugin-verifier-${{ steps.properties.outputs.ideVersions }} - - # Run IntelliJ Plugin Verifier action using GitHub Action - - name: Verify Plugin - run: ./gradlew runPluginVerifier -Pplugin.verifier.home.dir=${{ steps.properties.outputs.pluginVerifierHomeDir }} - - # 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' - needs: [build, verify] - runs-on: ubuntu-latest - steps: - # Check out current repository - - name: Fetch Sources - uses: actions/checkout@v2 - - # Remove old release drafts by using the curl request for the available releases with draft flag - - name: Remove Old Release Drafts - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - curl -H "Authorization: Bearer $GITHUB_TOKEN" https://api.github.com/repos/$GITHUB_REPOSITORY/releases \ - | tr '\r\n' ' ' \ - | jq '.[] | select(.draft == true) | .id' \ - | xargs -I '{}' \ - curl -X DELETE -H "Authorization: Bearer $GITHUB_TOKEN" https://api.github.com/repos/$GITHUB_REPOSITORY/releases/{} - - # Create new release draft - which is not publicly visible and requires manual acceptance - - name: Create Release Draft - id: createDraft - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: v${{ needs.build.outputs.version }} - release_name: v${{ needs.build.outputs.version }} - body: ${{ needs.build.outputs.changelog }} - draft: true - - # Download plugin artifact provided by the previous job - - name: Download Artifact - uses: actions/download-artifact@v2 - with: - name: plugin-artifact - - # Upload artifact as a release asset - - name: Upload Release Asset - id: upload-release-asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.createDraft.outputs.upload_url }} - asset_path: ./${{ needs.build.outputs.artifact }} - asset_name: ${{ needs.build.outputs.artifact }} - asset_content_type: application/zip