diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ee3d24db79..81ad192330 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,31 @@ env: ${{ github.workspace }}/dist-serverless jobs: + changes: + runs-on: ubuntu-22.04 + outputs: + has_code_changes: ${{ steps.changes.outputs.has_code_changes }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + with: + filters: | + has_code_changes: + - 'sentry_sdk/**' + - 'tests/**' + - 'scripts/**' + - '**/*.py' + - '**/*.cfg' + - '**/*.toml' + - '**/*.ini' + - 'Makefile' + - 'requirements*.txt' + - '.github/workflows/**' + lint: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: Lint Sources runs-on: ubuntu-latest timeout-minutes: 10 @@ -33,6 +57,8 @@ jobs: tox -e linters build_lambda_layer: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: Build Package runs-on: ubuntu-latest timeout-minutes: 10 @@ -62,6 +88,8 @@ jobs: if-no-files-found: 'error' docs: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: Build SDK API Doc runs-on: ubuntu-latest timeout-minutes: 10 @@ -82,3 +110,18 @@ jobs: path: | docs/_build/gh-pages.zip if-no-files-found: 'error' + + check_required_ci: + name: All CI checks passed + needs: [changes, lint, build_lambda_layer, docs] + if: always() + runs-on: ubuntu-22.04 + steps: + - name: Check for failures + if: | + needs.changes.result == 'failure' || needs.changes.result == 'cancelled' || + needs.lint.result == 'failure' || needs.lint.result == 'cancelled' || + needs.build_lambda_layer.result == 'failure' || needs.build_lambda_layer.result == 'cancelled' || + needs.docs.result == 'failure' || needs.docs.result == 'cancelled' + run: | + echo "One of the dependent jobs has failed. You may need to re-run it." && exit 1 diff --git a/.github/workflows/test-integrations-agents.yml b/.github/workflows/test-integrations-agents.yml index fbb983ef03..3019e3255b 100644 --- a/.github/workflows/test-integrations-agents.yml +++ b/.github/workflows/test-integrations-agents.yml @@ -25,7 +25,30 @@ env: CACHED_BUILD_PATHS: | ${{ github.workspace }}/dist-serverless jobs: + changes: + runs-on: ubuntu-22.04 + outputs: + has_code_changes: ${{ steps.changes.outputs.has_code_changes }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + with: + filters: | + has_code_changes: + - 'sentry_sdk/**' + - 'tests/**' + - 'scripts/**' + - '**/*.py' + - '**/*.cfg' + - '**/*.toml' + - '**/*.ini' + - 'Makefile' + - 'requirements*.txt' + - '.github/workflows/**' test-agents: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: Agents timeout-minutes: 30 runs-on: ${{ matrix.os }} @@ -82,12 +105,14 @@ jobs: verbose: true check_required_tests: name: All Agents tests passed - needs: test-agents + needs: [changes, test-agents] # Always run this, even if a dependent job failed if: always() runs-on: ubuntu-22.04 steps: - name: Check for failures - if: needs.test-agents.result != 'success' + if: | + needs.changes.result == 'failure' || needs.changes.result == 'cancelled' || + needs.test-agents.result == 'failure' || needs.test-agents.result == 'cancelled' run: | echo "One of the dependent jobs has failed. You may need to re-run it." && exit 1 diff --git a/.github/workflows/test-integrations-ai-workflow.yml b/.github/workflows/test-integrations-ai-workflow.yml index a3e2bf5c0e..8b5540305f 100644 --- a/.github/workflows/test-integrations-ai-workflow.yml +++ b/.github/workflows/test-integrations-ai-workflow.yml @@ -25,7 +25,30 @@ env: CACHED_BUILD_PATHS: | ${{ github.workspace }}/dist-serverless jobs: + changes: + runs-on: ubuntu-22.04 + outputs: + has_code_changes: ${{ steps.changes.outputs.has_code_changes }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + with: + filters: | + has_code_changes: + - 'sentry_sdk/**' + - 'tests/**' + - 'scripts/**' + - '**/*.py' + - '**/*.cfg' + - '**/*.toml' + - '**/*.ini' + - 'Makefile' + - 'requirements*.txt' + - '.github/workflows/**' test-ai_workflow: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: AI Workflow timeout-minutes: 30 runs-on: ${{ matrix.os }} @@ -86,12 +109,14 @@ jobs: verbose: true check_required_tests: name: All AI Workflow tests passed - needs: test-ai_workflow + needs: [changes, test-ai_workflow] # Always run this, even if a dependent job failed if: always() runs-on: ubuntu-22.04 steps: - name: Check for failures - if: needs.test-ai_workflow.result != 'success' + if: | + needs.changes.result == 'failure' || needs.changes.result == 'cancelled' || + needs.test-ai_workflow.result == 'failure' || needs.test-ai_workflow.result == 'cancelled' run: | echo "One of the dependent jobs has failed. You may need to re-run it." && exit 1 diff --git a/.github/workflows/test-integrations-ai.yml b/.github/workflows/test-integrations-ai.yml index 5559a72f34..01b9261146 100644 --- a/.github/workflows/test-integrations-ai.yml +++ b/.github/workflows/test-integrations-ai.yml @@ -25,7 +25,30 @@ env: CACHED_BUILD_PATHS: | ${{ github.workspace }}/dist-serverless jobs: + changes: + runs-on: ubuntu-22.04 + outputs: + has_code_changes: ${{ steps.changes.outputs.has_code_changes }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + with: + filters: | + has_code_changes: + - 'sentry_sdk/**' + - 'tests/**' + - 'scripts/**' + - '**/*.py' + - '**/*.cfg' + - '**/*.toml' + - '**/*.ini' + - 'Makefile' + - 'requirements*.txt' + - '.github/workflows/**' test-ai: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: AI timeout-minutes: 30 runs-on: ${{ matrix.os }} @@ -102,12 +125,14 @@ jobs: verbose: true check_required_tests: name: All AI tests passed - needs: test-ai + needs: [changes, test-ai] # Always run this, even if a dependent job failed if: always() runs-on: ubuntu-22.04 steps: - name: Check for failures - if: needs.test-ai.result != 'success' + if: | + needs.changes.result == 'failure' || needs.changes.result == 'cancelled' || + needs.test-ai.result == 'failure' || needs.test-ai.result == 'cancelled' run: | echo "One of the dependent jobs has failed. You may need to re-run it." && exit 1 diff --git a/.github/workflows/test-integrations-cloud.yml b/.github/workflows/test-integrations-cloud.yml index 97aed9e30b..8324872919 100644 --- a/.github/workflows/test-integrations-cloud.yml +++ b/.github/workflows/test-integrations-cloud.yml @@ -25,7 +25,30 @@ env: CACHED_BUILD_PATHS: | ${{ github.workspace }}/dist-serverless jobs: + changes: + runs-on: ubuntu-22.04 + outputs: + has_code_changes: ${{ steps.changes.outputs.has_code_changes }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + with: + filters: | + has_code_changes: + - 'sentry_sdk/**' + - 'tests/**' + - 'scripts/**' + - '**/*.py' + - '**/*.cfg' + - '**/*.toml' + - '**/*.ini' + - 'Makefile' + - 'requirements*.txt' + - '.github/workflows/**' test-cloud: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: Cloud timeout-minutes: 30 runs-on: ${{ matrix.os }} @@ -98,12 +121,14 @@ jobs: verbose: true check_required_tests: name: All Cloud tests passed - needs: test-cloud + needs: [changes, test-cloud] # Always run this, even if a dependent job failed if: always() runs-on: ubuntu-22.04 steps: - name: Check for failures - if: needs.test-cloud.result != 'success' + if: | + needs.changes.result == 'failure' || needs.changes.result == 'cancelled' || + needs.test-cloud.result == 'failure' || needs.test-cloud.result == 'cancelled' run: | echo "One of the dependent jobs has failed. You may need to re-run it." && exit 1 diff --git a/.github/workflows/test-integrations-common.yml b/.github/workflows/test-integrations-common.yml index 6523ce084e..bd5aba091f 100644 --- a/.github/workflows/test-integrations-common.yml +++ b/.github/workflows/test-integrations-common.yml @@ -25,7 +25,30 @@ env: CACHED_BUILD_PATHS: | ${{ github.workspace }}/dist-serverless jobs: + changes: + runs-on: ubuntu-22.04 + outputs: + has_code_changes: ${{ steps.changes.outputs.has_code_changes }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + with: + filters: | + has_code_changes: + - 'sentry_sdk/**' + - 'tests/**' + - 'scripts/**' + - '**/*.py' + - '**/*.cfg' + - '**/*.toml' + - '**/*.ini' + - 'Makefile' + - 'requirements*.txt' + - '.github/workflows/**' test-common: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: Common timeout-minutes: 30 runs-on: ${{ matrix.os }} @@ -78,12 +101,14 @@ jobs: verbose: true check_required_tests: name: All Common tests passed - needs: test-common + needs: [changes, test-common] # Always run this, even if a dependent job failed if: always() runs-on: ubuntu-22.04 steps: - name: Check for failures - if: needs.test-common.result != 'success' + if: | + needs.changes.result == 'failure' || needs.changes.result == 'cancelled' || + needs.test-common.result == 'failure' || needs.test-common.result == 'cancelled' run: | echo "One of the dependent jobs has failed. You may need to re-run it." && exit 1 diff --git a/.github/workflows/test-integrations-dbs.yml b/.github/workflows/test-integrations-dbs.yml index 380ded2f80..bea8329d2e 100644 --- a/.github/workflows/test-integrations-dbs.yml +++ b/.github/workflows/test-integrations-dbs.yml @@ -25,7 +25,30 @@ env: CACHED_BUILD_PATHS: | ${{ github.workspace }}/dist-serverless jobs: + changes: + runs-on: ubuntu-22.04 + outputs: + has_code_changes: ${{ steps.changes.outputs.has_code_changes }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + with: + filters: | + has_code_changes: + - 'sentry_sdk/**' + - 'tests/**' + - 'scripts/**' + - '**/*.py' + - '**/*.cfg' + - '**/*.toml' + - '**/*.ini' + - 'Makefile' + - 'requirements*.txt' + - '.github/workflows/**' test-dbs: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: DBs timeout-minutes: 30 runs-on: ${{ matrix.os }} @@ -118,12 +141,14 @@ jobs: verbose: true check_required_tests: name: All DBs tests passed - needs: test-dbs + needs: [changes, test-dbs] # Always run this, even if a dependent job failed if: always() runs-on: ubuntu-22.04 steps: - name: Check for failures - if: needs.test-dbs.result != 'success' + if: | + needs.changes.result == 'failure' || needs.changes.result == 'cancelled' || + needs.test-dbs.result == 'failure' || needs.test-dbs.result == 'cancelled' run: | echo "One of the dependent jobs has failed. You may need to re-run it." && exit 1 diff --git a/.github/workflows/test-integrations-flags.yml b/.github/workflows/test-integrations-flags.yml index 13897537af..72981ac7f4 100644 --- a/.github/workflows/test-integrations-flags.yml +++ b/.github/workflows/test-integrations-flags.yml @@ -25,7 +25,30 @@ env: CACHED_BUILD_PATHS: | ${{ github.workspace }}/dist-serverless jobs: + changes: + runs-on: ubuntu-22.04 + outputs: + has_code_changes: ${{ steps.changes.outputs.has_code_changes }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + with: + filters: | + has_code_changes: + - 'sentry_sdk/**' + - 'tests/**' + - 'scripts/**' + - '**/*.py' + - '**/*.cfg' + - '**/*.toml' + - '**/*.ini' + - 'Makefile' + - 'requirements*.txt' + - '.github/workflows/**' test-flags: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: Flags timeout-minutes: 30 runs-on: ${{ matrix.os }} @@ -90,12 +113,14 @@ jobs: verbose: true check_required_tests: name: All Flags tests passed - needs: test-flags + needs: [changes, test-flags] # Always run this, even if a dependent job failed if: always() runs-on: ubuntu-22.04 steps: - name: Check for failures - if: needs.test-flags.result != 'success' + if: | + needs.changes.result == 'failure' || needs.changes.result == 'cancelled' || + needs.test-flags.result == 'failure' || needs.test-flags.result == 'cancelled' run: | echo "One of the dependent jobs has failed. You may need to re-run it." && exit 1 diff --git a/.github/workflows/test-integrations-gevent.yml b/.github/workflows/test-integrations-gevent.yml index 934498b96c..59d3d2e9f0 100644 --- a/.github/workflows/test-integrations-gevent.yml +++ b/.github/workflows/test-integrations-gevent.yml @@ -25,7 +25,30 @@ env: CACHED_BUILD_PATHS: | ${{ github.workspace }}/dist-serverless jobs: + changes: + runs-on: ubuntu-22.04 + outputs: + has_code_changes: ${{ steps.changes.outputs.has_code_changes }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + with: + filters: | + has_code_changes: + - 'sentry_sdk/**' + - 'tests/**' + - 'scripts/**' + - '**/*.py' + - '**/*.cfg' + - '**/*.toml' + - '**/*.ini' + - 'Makefile' + - 'requirements*.txt' + - '.github/workflows/**' test-gevent: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: Gevent timeout-minutes: 30 runs-on: ${{ matrix.os }} @@ -78,12 +101,14 @@ jobs: verbose: true check_required_tests: name: All Gevent tests passed - needs: test-gevent + needs: [changes, test-gevent] # Always run this, even if a dependent job failed if: always() runs-on: ubuntu-22.04 steps: - name: Check for failures - if: needs.test-gevent.result != 'success' + if: | + needs.changes.result == 'failure' || needs.changes.result == 'cancelled' || + needs.test-gevent.result == 'failure' || needs.test-gevent.result == 'cancelled' run: | echo "One of the dependent jobs has failed. You may need to re-run it." && exit 1 diff --git a/.github/workflows/test-integrations-graphql.yml b/.github/workflows/test-integrations-graphql.yml index d26b4a422a..665e9236cd 100644 --- a/.github/workflows/test-integrations-graphql.yml +++ b/.github/workflows/test-integrations-graphql.yml @@ -25,7 +25,30 @@ env: CACHED_BUILD_PATHS: | ${{ github.workspace }}/dist-serverless jobs: + changes: + runs-on: ubuntu-22.04 + outputs: + has_code_changes: ${{ steps.changes.outputs.has_code_changes }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + with: + filters: | + has_code_changes: + - 'sentry_sdk/**' + - 'tests/**' + - 'scripts/**' + - '**/*.py' + - '**/*.cfg' + - '**/*.toml' + - '**/*.ini' + - 'Makefile' + - 'requirements*.txt' + - '.github/workflows/**' test-graphql: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: GraphQL timeout-minutes: 30 runs-on: ${{ matrix.os }} @@ -90,12 +113,14 @@ jobs: verbose: true check_required_tests: name: All GraphQL tests passed - needs: test-graphql + needs: [changes, test-graphql] # Always run this, even if a dependent job failed if: always() runs-on: ubuntu-22.04 steps: - name: Check for failures - if: needs.test-graphql.result != 'success' + if: | + needs.changes.result == 'failure' || needs.changes.result == 'cancelled' || + needs.test-graphql.result == 'failure' || needs.test-graphql.result == 'cancelled' run: | echo "One of the dependent jobs has failed. You may need to re-run it." && exit 1 diff --git a/.github/workflows/test-integrations-mcp.yml b/.github/workflows/test-integrations-mcp.yml index 0611f9a249..33ae20806e 100644 --- a/.github/workflows/test-integrations-mcp.yml +++ b/.github/workflows/test-integrations-mcp.yml @@ -25,7 +25,30 @@ env: CACHED_BUILD_PATHS: | ${{ github.workspace }}/dist-serverless jobs: + changes: + runs-on: ubuntu-22.04 + outputs: + has_code_changes: ${{ steps.changes.outputs.has_code_changes }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + with: + filters: | + has_code_changes: + - 'sentry_sdk/**' + - 'tests/**' + - 'scripts/**' + - '**/*.py' + - '**/*.cfg' + - '**/*.toml' + - '**/*.ini' + - 'Makefile' + - 'requirements*.txt' + - '.github/workflows/**' test-mcp: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: MCP timeout-minutes: 30 runs-on: ${{ matrix.os }} @@ -82,12 +105,14 @@ jobs: verbose: true check_required_tests: name: All MCP tests passed - needs: test-mcp + needs: [changes, test-mcp] # Always run this, even if a dependent job failed if: always() runs-on: ubuntu-22.04 steps: - name: Check for failures - if: needs.test-mcp.result != 'success' + if: | + needs.changes.result == 'failure' || needs.changes.result == 'cancelled' || + needs.test-mcp.result == 'failure' || needs.test-mcp.result == 'cancelled' run: | echo "One of the dependent jobs has failed. You may need to re-run it." && exit 1 diff --git a/.github/workflows/test-integrations-misc.yml b/.github/workflows/test-integrations-misc.yml index 8787acb8ca..8a2fad4506 100644 --- a/.github/workflows/test-integrations-misc.yml +++ b/.github/workflows/test-integrations-misc.yml @@ -25,7 +25,30 @@ env: CACHED_BUILD_PATHS: | ${{ github.workspace }}/dist-serverless jobs: + changes: + runs-on: ubuntu-22.04 + outputs: + has_code_changes: ${{ steps.changes.outputs.has_code_changes }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + with: + filters: | + has_code_changes: + - 'sentry_sdk/**' + - 'tests/**' + - 'scripts/**' + - '**/*.py' + - '**/*.cfg' + - '**/*.toml' + - '**/*.ini' + - 'Makefile' + - 'requirements*.txt' + - '.github/workflows/**' test-misc: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: Misc timeout-minutes: 30 runs-on: ${{ matrix.os }} @@ -110,12 +133,14 @@ jobs: verbose: true check_required_tests: name: All Misc tests passed - needs: test-misc + needs: [changes, test-misc] # Always run this, even if a dependent job failed if: always() runs-on: ubuntu-22.04 steps: - name: Check for failures - if: needs.test-misc.result != 'success' + if: | + needs.changes.result == 'failure' || needs.changes.result == 'cancelled' || + needs.test-misc.result == 'failure' || needs.test-misc.result == 'cancelled' run: | echo "One of the dependent jobs has failed. You may need to re-run it." && exit 1 diff --git a/.github/workflows/test-integrations-network.yml b/.github/workflows/test-integrations-network.yml index 6bdb2e99ed..d45e658e92 100644 --- a/.github/workflows/test-integrations-network.yml +++ b/.github/workflows/test-integrations-network.yml @@ -25,7 +25,30 @@ env: CACHED_BUILD_PATHS: | ${{ github.workspace }}/dist-serverless jobs: + changes: + runs-on: ubuntu-22.04 + outputs: + has_code_changes: ${{ steps.changes.outputs.has_code_changes }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + with: + filters: | + has_code_changes: + - 'sentry_sdk/**' + - 'tests/**' + - 'scripts/**' + - '**/*.py' + - '**/*.cfg' + - '**/*.toml' + - '**/*.ini' + - 'Makefile' + - 'requirements*.txt' + - '.github/workflows/**' test-network: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: Network timeout-minutes: 30 runs-on: ${{ matrix.os }} @@ -86,12 +109,14 @@ jobs: verbose: true check_required_tests: name: All Network tests passed - needs: test-network + needs: [changes, test-network] # Always run this, even if a dependent job failed if: always() runs-on: ubuntu-22.04 steps: - name: Check for failures - if: needs.test-network.result != 'success' + if: | + needs.changes.result == 'failure' || needs.changes.result == 'cancelled' || + needs.test-network.result == 'failure' || needs.test-network.result == 'cancelled' run: | echo "One of the dependent jobs has failed. You may need to re-run it." && exit 1 diff --git a/.github/workflows/test-integrations-tasks.yml b/.github/workflows/test-integrations-tasks.yml index 085714d756..014737d502 100644 --- a/.github/workflows/test-integrations-tasks.yml +++ b/.github/workflows/test-integrations-tasks.yml @@ -25,7 +25,30 @@ env: CACHED_BUILD_PATHS: | ${{ github.workspace }}/dist-serverless jobs: + changes: + runs-on: ubuntu-22.04 + outputs: + has_code_changes: ${{ steps.changes.outputs.has_code_changes }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + with: + filters: | + has_code_changes: + - 'sentry_sdk/**' + - 'tests/**' + - 'scripts/**' + - '**/*.py' + - '**/*.cfg' + - '**/*.toml' + - '**/*.ini' + - 'Makefile' + - 'requirements*.txt' + - '.github/workflows/**' test-tasks: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: Tasks timeout-minutes: 30 runs-on: ${{ matrix.os }} @@ -113,12 +136,14 @@ jobs: verbose: true check_required_tests: name: All Tasks tests passed - needs: test-tasks + needs: [changes, test-tasks] # Always run this, even if a dependent job failed if: always() runs-on: ubuntu-22.04 steps: - name: Check for failures - if: needs.test-tasks.result != 'success' + if: | + needs.changes.result == 'failure' || needs.changes.result == 'cancelled' || + needs.test-tasks.result == 'failure' || needs.test-tasks.result == 'cancelled' run: | echo "One of the dependent jobs has failed. You may need to re-run it." && exit 1 diff --git a/.github/workflows/test-integrations-web-1.yml b/.github/workflows/test-integrations-web-1.yml index 48797f5dcf..b569c6afcc 100644 --- a/.github/workflows/test-integrations-web-1.yml +++ b/.github/workflows/test-integrations-web-1.yml @@ -25,7 +25,30 @@ env: CACHED_BUILD_PATHS: | ${{ github.workspace }}/dist-serverless jobs: + changes: + runs-on: ubuntu-22.04 + outputs: + has_code_changes: ${{ steps.changes.outputs.has_code_changes }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + with: + filters: | + has_code_changes: + - 'sentry_sdk/**' + - 'tests/**' + - 'scripts/**' + - '**/*.py' + - '**/*.cfg' + - '**/*.toml' + - '**/*.ini' + - 'Makefile' + - 'requirements*.txt' + - '.github/workflows/**' test-web_1: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: Web 1 timeout-minutes: 30 runs-on: ${{ matrix.os }} @@ -108,12 +131,14 @@ jobs: verbose: true check_required_tests: name: All Web 1 tests passed - needs: test-web_1 + needs: [changes, test-web_1] # Always run this, even if a dependent job failed if: always() runs-on: ubuntu-22.04 steps: - name: Check for failures - if: needs.test-web_1.result != 'success' + if: | + needs.changes.result == 'failure' || needs.changes.result == 'cancelled' || + needs.test-web_1.result == 'failure' || needs.test-web_1.result == 'cancelled' run: | echo "One of the dependent jobs has failed. You may need to re-run it." && exit 1 diff --git a/.github/workflows/test-integrations-web-2.yml b/.github/workflows/test-integrations-web-2.yml index 87f69d36bd..ff395bfb70 100644 --- a/.github/workflows/test-integrations-web-2.yml +++ b/.github/workflows/test-integrations-web-2.yml @@ -25,7 +25,30 @@ env: CACHED_BUILD_PATHS: | ${{ github.workspace }}/dist-serverless jobs: + changes: + runs-on: ubuntu-22.04 + outputs: + has_code_changes: ${{ steps.changes.outputs.has_code_changes }} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + with: + filters: | + has_code_changes: + - 'sentry_sdk/**' + - 'tests/**' + - 'scripts/**' + - '**/*.py' + - '**/*.cfg' + - '**/*.toml' + - '**/*.ini' + - 'Makefile' + - 'requirements*.txt' + - '.github/workflows/**' test-web_2: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: Web 2 timeout-minutes: 30 runs-on: ${{ matrix.os }} @@ -114,12 +137,14 @@ jobs: verbose: true check_required_tests: name: All Web 2 tests passed - needs: test-web_2 + needs: [changes, test-web_2] # Always run this, even if a dependent job failed if: always() runs-on: ubuntu-22.04 steps: - name: Check for failures - if: needs.test-web_2.result != 'success' + if: | + needs.changes.result == 'failure' || needs.changes.result == 'cancelled' || + needs.test-web_2.result == 'failure' || needs.test-web_2.result == 'cancelled' run: | echo "One of the dependent jobs has failed. You may need to re-run it." && exit 1 diff --git a/scripts/split_tox_gh_actions/templates/base.jinja b/scripts/split_tox_gh_actions/templates/base.jinja index c3bc528a7c..171acfa04e 100644 --- a/scripts/split_tox_gh_actions/templates/base.jinja +++ b/scripts/split_tox_gh_actions/templates/base.jinja @@ -33,6 +33,28 @@ env: {% raw %}${{ github.workspace }}/dist-serverless{% endraw %} jobs: + changes: + runs-on: ubuntu-22.04 + outputs: + has_code_changes: {% raw %}${{ steps.changes.outputs.has_code_changes }}{% endraw %} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: changes + with: + filters: | + has_code_changes: + - 'sentry_sdk/**' + - 'tests/**' + - 'scripts/**' + - '**/*.py' + - '**/*.cfg' + - '**/*.toml' + - '**/*.ini' + - 'Makefile' + - 'requirements*.txt' + - '.github/workflows/**' + {% include "test_group.jinja" %} {% include "check_required.jinja" %} {% endwith %} diff --git a/scripts/split_tox_gh_actions/templates/check_required.jinja b/scripts/split_tox_gh_actions/templates/check_required.jinja index 37d4f8fd78..36bc5f2945 100644 --- a/scripts/split_tox_gh_actions/templates/check_required.jinja +++ b/scripts/split_tox_gh_actions/templates/check_required.jinja @@ -1,11 +1,13 @@ check_required_tests: name: All {{ group }} tests passed - needs: test-{{ group | replace(" ", "_") | lower }} + needs: [changes, test-{{ group | replace(" ", "_") | lower }}] # Always run this, even if a dependent job failed if: always() runs-on: ubuntu-22.04 steps: - name: Check for failures - if: needs.test-{{ lowercase_group }}.result != 'success' + if: | + needs.changes.result == 'failure' || needs.changes.result == 'cancelled' || + needs.test-{{ lowercase_group }}.result == 'failure' || needs.test-{{ lowercase_group }}.result == 'cancelled' run: | echo "One of the dependent jobs has failed. You may need to re-run it." && exit 1 diff --git a/scripts/split_tox_gh_actions/templates/test_group.jinja b/scripts/split_tox_gh_actions/templates/test_group.jinja index fa6d31c55f..cb72b85425 100644 --- a/scripts/split_tox_gh_actions/templates/test_group.jinja +++ b/scripts/split_tox_gh_actions/templates/test_group.jinja @@ -1,4 +1,6 @@ test-{{ lowercase_group }}: + needs: changes + if: needs.changes.outputs.has_code_changes == 'true' name: {{ group }} timeout-minutes: 30 runs-on: {% raw %}${{ matrix.os }}{% endraw %}