name: Code Samples on: push: branches: [ main ] paths: [ 'code_samples/**','.github/workflows/code-samples.yml' ] pull_request: paths: [ 'code_samples/**','.github/workflows/code-samples.yml' ] env: PLUGIN_VERIFIER_IDE_VERSIONS: '2021.2.4 2021.3.3 2022.1' jobs: gradleValidation: name: Gradle Wrappers runs-on: ubuntu-latest steps: - name: Fetch Sources uses: actions/checkout@v3 - name: Gradle Wrapper Validation uses: gradle/wrapper-validation-action@v1.0.4 samples: name: Code Samples / ${{ matrix.plugin }} needs: gradleValidation runs-on: ubuntu-latest strategy: fail-fast: false matrix: plugin: - action_basics - comparing_references_inspection - conditional_operator_intention - editor_basics - facet_basics - framework_basics - inspection_basics - kotlin_demo - live_templates - max_opened_projects - module - project_model - project_view_pane - project_wizard - psi_demo - run_configuration - simple_language_plugin - tool_window - tree_structure_provider steps: - name: Fetch Sources uses: actions/checkout@v3 - name: Setup Java uses: actions/setup-java@v3 with: distribution: zulu java-version: 11 cache: gradle - name: Verify Plugin run: (cd code_samples/${{ matrix.plugin }}; ./gradlew verifyPlugin) - name: Test Plugin run: (cd code_samples/${{ matrix.plugin }}; ./gradlew test) - name: Export Properties id: properties shell: bash run: | echo "::set-output name=ideVersions::${PLUGIN_VERIFIER_IDE_VERSIONS// /-}" echo "::set-output name=pluginVerifierHomeDir::~/.pluginVerifier" - name: Setup Plugin Verifier IDEs Cache uses: actions/cache@v3 with: path: ${{ steps.properties.outputs.pluginVerifierHomeDir }}/ides key: plugin-verifier-${{ steps.properties.outputs.ideVersions }} - name: Run Plugin Verifier run: | echo " tasks { runPluginVerifier { ideVersions.set("\"$PLUGIN_VERIFIER_IDE_VERSIONS\"".split(' ').toList()) } } " >> code_samples/${{ matrix.plugin }}/build.gradle.kts cd code_samples/${{ matrix.plugin }} ./gradlew runPluginVerifier -Pplugin.verifier.home.dir=${{ steps.properties.outputs.pluginVerifierHomeDir }} - name: Collect Plugin Verifier Result if: ${{ always() }} uses: actions/upload-artifact@v3 with: name: ${{ matrix.plugin }}-pluginVerifier-result path: ${{ github.workspace }}/code_samples/${{ matrix.plugin }}/build/reports/pluginVerifier mirror: name: Code Samples Mirror if: github.ref == 'refs/heads/main' && github.repository == 'JetBrains/intellij-sdk-docs' needs: samples runs-on: ubuntu-latest steps: - name: Install SSH key uses: shimataro/ssh-key-action@v2 with: key: ${{ secrets.SSH_KEY }} known_hosts: ${{ secrets.KNOWN_HOSTS }} - name: Prepare Mirror run: | git clone --bare git@github.com:JetBrains/intellij-sdk-docs.git . git branch | grep -v "main" | xargs -r git branch -D git filter-branch --prune-empty --subdirectory-filter code_samples main git push --mirror git@github.com:JetBrains/intellij-sdk-code-samples.git