name: ci concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true on: pull_request: branches: - main jobs: semantic_pull_request: name: ✅ Semantic Pull Request uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/semantic_pull_request.yml@v1 changes: runs-on: ubuntu-latest permissions: pull-requests: read outputs: needs_dart_build: ${{ steps.needs_dart_build.outputs.changes }} needs_verify: ${{ steps.needs_verify.outputs.changes }} name: 👀 Detect Changes steps: - name: 📚 Git Checkout uses: actions/checkout@v3 - uses: dorny/paths-filter@v2 name: Build Detection id: needs_dart_build with: filters: | artifact_proxy: - ./.github/workflows/main.yaml - ./.github/actions/dart_package - packages/artifact_proxy/** cutler: - ./.github/workflows/main.yaml - ./.github/actions/dart_package - packages/cutler/** discord_gcp_alerts: - ./.github/workflows/main.yaml - ./.github/actions/dart_package - packages/discord_gcp_alerts/** shorebird_cli: - ./.github/workflows/main.yaml - ./.github/actions/dart_package - packages/shorebird_cli/** - packages/shorebird_code_push_client/** - packages/shorebird_code_push_protocol/** shorebird_code_push_client: - ./.github/workflows/main.yaml - ./.github/actions/dart_package - packages/shorebird_code_push_client/** - packages/shorebird_code_push_protocol/** shorebird_code_push_protocol: - ./.github/workflows/main.yaml - ./.github/actions/dart_package - packages/shorebird_code_push_protocol/** jwt: - ./.github/workflows/main.yaml - ./.github/actions/dart_package - packages/jwt/** - uses: dorny/paths-filter@v2 name: Verify Detection id: needs_verify with: filters: | shorebird_cli: - ./.github/workflows/main.yaml - ./.github/actions/dart_package - packages/shorebird_cli/** build_dart_packages: needs: changes if: ${{ needs.changes.outputs.needs_dart_build != '[]' }} strategy: matrix: package: ${{ fromJSON(needs.changes.outputs.needs_dart_build) }} runs-on: ubuntu-latest name: 🎯 Build ${{ matrix.package }} steps: - name: 📚 Git Checkout uses: actions/checkout@v3 - name: 🎯 Build ${{ matrix.package }} uses: ./.github/actions/dart_package with: working_directory: packages/${{ matrix.package }} min_coverage: ${{ matrix.package == 'cutler' && '10' || '100' }} verify_packages: needs: changes if: ${{ needs.changes.outputs.needs_verify != '[]' }} strategy: matrix: package: ${{ fromJSON(needs.changes.outputs.needs_verify) }} runs-on: ubuntu-latest name: 🔎 Verify ${{ matrix.package }} steps: - name: 📚 Git Checkout uses: actions/checkout@v3 - name: 🔎 Verify ${{ matrix.package }} uses: ./.github/actions/verify_version with: working_directory: packages/${{ matrix.package }} ci: needs: [semantic_pull_request, build_dart_packages, verify_packages] if: ${{ always() }} runs-on: ubuntu-latest steps: - name: ⛔️ exit(1) on failure if: ${{ contains(join(needs.*.result, ','), 'failure') }} run: exit 1