Browse Source

chore(ci): Remove scheduled backend and acceptance testing jobs (#83749)

As we cutover to using new devservices in backend/acceptance tests, we
want to remove these scheduled jobs as they were used for testing
Hubert Deng 1 month ago
parent
commit
5a3924a4fe

+ 0 - 119
.github/actions/test-setup-sentry-devservices/action.yml

@@ -1,119 +0,0 @@
-# NOTE: Do not rely on `make` commands here as this action is used across different repos
-# where the Makefile will not be available
-name: 'Sentry Setup'
-description: 'Sets up a Sentry test environment'
-inputs:
-  workdir:
-    description: 'Directory where the sentry source is located'
-    required: false
-    default: '.'
-
-outputs:
-  yarn-cache-dir:
-    description: 'Path to yarn cache'
-    value: ${{ steps.config.outputs.yarn-cache-dir }}
-  matrix-instance-number:
-    description: 'The matrix instance number (starting at 1)'
-    value: ${{ steps.config.outputs.matrix-instance-number }}
-  matrix-instance-total:
-    description: 'Reexport of MATRIX_INSTANCE_TOTAL.'
-    value: ${{ steps.config.outputs.matrix-instance-total }}
-
-runs:
-  using: 'composite'
-  steps:
-    - name: Setup default environment variables
-      # the default for "bash" is:
-      #      bash --noprofile --norc -eo pipefail {0}
-      shell: bash --noprofile --norc -eo pipefail -ux {0}
-      env:
-        MATRIX_INSTANCE: ${{ matrix.instance }}
-        # XXX: We should be using something like len(strategy.matrix.instance) (not possible atm)
-        # If you have other things like python-version: [foo, bar, baz] then the sharding logic
-        # isn't right because job-total will be 3x larger and you'd never run 2/3 of the tests.
-        # MATRIX_INSTANCE_TOTAL: ${{ strategy.job-total }}
-      run: |
-        echo "PIP_DISABLE_PIP_VERSION_CHECK=on" >> $GITHUB_ENV
-        echo "PIP_INDEX_URL=https://pypi.devinfra.sentry.io/simple" >> $GITHUB_ENV
-        echo "SENTRY_SKIP_BACKEND_VALIDATION=1" >> $GITHUB_ENV
-
-        ### node configuration ###
-        echo "NODE_ENV=development" >> $GITHUB_ENV
-
-        ### pytest configuration ###
-        echo "PY_COLORS=1" >> "$GITHUB_ENV"
-        echo "PYTEST_ADDOPTS=--reruns=5 --durations=10 --fail-slow=60s" >> $GITHUB_ENV
-        echo "COVERAGE_CORE=sysmon" >> "$GITHUB_ENV"
-
-        ### pytest-sentry configuration ###
-        if [ "$GITHUB_REPOSITORY" = "getsentry/sentry" ]; then
-          echo "PYTEST_SENTRY_DSN=https://a748e1a557575821d36970353ef30c61@o1.ingest.us.sentry.io/4508264609415168" >> $GITHUB_ENV
-          echo "PYTEST_SENTRY_TRACES_SAMPLE_RATE=0" >> $GITHUB_ENV
-
-          # This records failures on master to sentry in order to detect flakey tests, as it's
-          # expected that people have failing tests on their PRs
-          if [ "$GITHUB_REF" = "refs/heads/master" ]; then
-            echo "PYTEST_SENTRY_ALWAYS_REPORT=1" >> $GITHUB_ENV
-          fi
-        fi
-
-        # Configure a different release version, otherwise it defaults to the
-        # commit sha which will conflict with our actual prod releases. This is a
-        # confusing experience because it looks like these are "empty" releases
-        # because no commits are attached and associates the release with our
-        # javascript + sentry projects.
-        echo "SENTRY_RELEASE=ci@$GITHUB_SHA" >> $GITHUB_ENV
-
-        # this handles pytest test sharding
-        if [ "$MATRIX_INSTANCE" ]; then
-          if ! [ "${MATRIX_INSTANCE_TOTAL:-}" ]; then
-            echo "MATRIX_INSTANCE_TOTAL is required."
-            exit 1
-          fi
-          echo "TEST_GROUP=$MATRIX_INSTANCE" >> $GITHUB_ENV
-          echo "TOTAL_TEST_GROUPS=$MATRIX_INSTANCE_TOTAL" >> $GITHUB_ENV
-        fi
-
-    - uses: getsentry/action-setup-venv@a133e6fd5fa6abd3f590a1c106abda344f5df69f # v2.1.0
-      with:
-        python-version: ${{ inputs.python-version }}
-        cache-dependency-path: ${{ inputs.workdir }}/requirements-dev-frozen.txt
-        install-cmd: cd ${{ inputs.workdir }} && pip install -r requirements-dev-frozen.txt
-
-    - name: Set up outputs
-      id: config
-      env:
-        MATRIX_INSTANCE: ${{ matrix.instance }}
-      shell: bash --noprofile --norc -eo pipefail -ux {0}
-      run: |
-        echo "yarn-cache-dir=$(yarn cache dir)" >> "$GITHUB_OUTPUT"
-        echo "matrix-instance-number=$(($MATRIX_INSTANCE+1))" >> "$GITHUB_OUTPUT"
-        echo "matrix-instance-total=$((${MATRIX_INSTANCE_TOTAL:-}))" >> "$GITHUB_OUTPUT"
-
-    - name: Install python dependencies
-      shell: bash --noprofile --norc -eo pipefail -ux {0}
-      env:
-        # This is necessary when other repositories (e.g. relay) want to take advantage of this workflow
-        # without needing to fork it. The path needed is the one where setup.py is located
-        WORKDIR: ${{ inputs.workdir }}
-      run: |
-        cd "$WORKDIR"
-        # We need to install editable otherwise things like check migration will fail.
-        python3 -m tools.fast_editable --path .
-
-    - name: Start devservices
-      shell: bash --noprofile --norc -eo pipefail -ux {0}
-      env:
-        WORKDIR: ${{ inputs.workdir }}
-        ENABLE_AUTORUN_MIGRATION_SEARCH_ISSUES: '1'
-      run: |
-        sentry init
-
-        # have tests listen on the docker gateway ip so loopback can occur
-        echo "DJANGO_LIVE_TEST_SERVER_ADDRESS=$(docker network inspect bridge --format='{{(index .IPAM.Config 0).Gateway}}')" >> "$GITHUB_ENV"
-
-        docker ps -a
-
-        # This is necessary when other repositories (e.g. relay) want to take advantage of this workflow
-        # without needing to fork it. The path needed is the one where tools are located
-        cd "$WORKDIR"

+ 0 - 141
.github/workflows/test_devservices_acceptance.yml

@@ -1,141 +0,0 @@
-# Also note that this name *MUST* match the filename because GHA
-# only provides the workflow name (https://docs.github.com/en/free-pro-team@latest/actions/reference/environment-variables#default-environment-variables)
-# and GH APIs only support querying by workflow *FILENAME* (https://developer.github.com/v3/actions/workflows/#get-a-workflow)
-name: test-devservices-acceptance
-on:
-  schedule:
-    - cron: '0 * * * *'
-
-# Cancel in progress workflows on pull_requests.
-# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value
-concurrency:
-  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
-  cancel-in-progress: true
-
-# hack for https://github.com/actions/cache/issues/810#issuecomment-1222550359
-env:
-  SEGMENT_DOWNLOAD_TIMEOUT_MINS: 3
-  NODE_OPTIONS: '--max-old-space-size=4096'
-  USE_NEW_DEVSERVICES: 1
-  IS_DEV: 1
-  CHARTCUTERIE_CONFIG_PATH: ${{ github.workspace }}/config/chartcuterie
-  SNUBA_NO_WORKERS: 1
-
-jobs:
-  devservices-acceptance:
-    name: devservices-acceptance
-    runs-on: ubuntu-24.04
-    timeout-minutes: 30
-    permissions:
-      contents: read
-      id-token: write
-    strategy:
-      # This helps not having to run multiple jobs because one fails, thus, reducing resource usage
-      # and reducing the risk that one of many runs would turn red again (read: intermittent tests)
-      fail-fast: false
-      matrix:
-        # XXX: When updating this, make sure you also update MATRIX_INSTANCE_TOTAL.
-        instance: [0, 1, 2, 3, 4]
-        pg-version: ['14']
-    env:
-      # XXX: MATRIX_INSTANCE_TOTAL must be hardcoded to the length of strategy.matrix.instance.
-      MATRIX_INSTANCE_TOTAL: 5
-      TEST_GROUP_STRATEGY: roundrobin
-
-    steps:
-      - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
-        name: Checkout sentry
-
-      - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4
-        id: setup-node
-        with:
-          node-version-file: '.volta.json'
-
-      - name: Step configurations
-        id: config
-        run: |
-          echo "webpack-path=.webpack_cache" >> "$GITHUB_OUTPUT"
-          echo "WEBPACK_CACHE_PATH=.webpack_cache" >> "$GITHUB_ENV"
-
-      - name: webpack cache
-        uses: actions/cache@v4.2.0
-        with:
-          path: ${{ steps.config.outputs.webpack-path }}
-          key: ${{ runner.os }}-v2-webpack-cache-${{ hashFiles('webpack.config.ts') }}
-
-      - name: node_modules cache
-        uses: actions/cache@v4.2.0
-        id: nodemodulescache
-        with:
-          path: node_modules
-          key: ${{ runner.os }}-node-modules-${{ hashFiles('yarn.lock', 'api-docs/yarn.lock', '.volta.json') }}
-
-      - name: Install Javascript Dependencies
-        if: steps.nodemodulescache.outputs.cache-hit != 'true'
-        run: yarn install --frozen-lockfile
-
-      - name: webpack
-        env:
-          # this is fine to not have for forks, it shouldn't fail
-          SENTRY_WEBPACK_WEBHOOK_SECRET: ${{ secrets.SENTRY_WEBPACK_WEBHOOK_SECRET }}
-          CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
-          # should set value either as `true` or `false`
-          CODECOV_ENABLE_BA: true
-          GH_COMMIT_SHA: ${{ github.event.pull_request.head.sha }}
-        run: |
-          yarn build-acceptance
-
-      - name: Build chartcuterie configuration module
-        run: |
-          make build-chartcuterie-config
-
-      - name: Setup sentry env
-        uses: ./.github/actions/test-setup-sentry-devservices
-        id: setup
-
-      - name: Bring up devservices
-        run: |
-          devservices up --mode acceptance-ci
-
-      - name: Run acceptance tests (#${{ steps.setup.outputs.matrix-instance-number }} of ${{ steps.setup.outputs.matrix-instance-total }})
-        run: make run-acceptance
-
-      - name: Collect test data
-        uses: ./.github/actions/collect-test-data
-        if: ${{ !cancelled() }}
-        with:
-          artifact_path: .artifacts/pytest.acceptance.json
-          gcs_bucket: ${{ secrets.COLLECT_TEST_DATA_GCS_BUCKET }}
-          gcp_project_id: ${{ secrets.COLLECT_TEST_DATA_GCP_PROJECT_ID }}
-          workload_identity_provider: ${{ secrets.SENTRY_GCP_DEV_WORKLOAD_IDENTITY_POOL }}
-          service_account_email: ${{ secrets.COLLECT_TEST_DATA_SERVICE_ACCOUNT_EMAIL }}
-          matrix_instance_number: ${{ steps.setup.outputs.matrix-instance-number }}
-
-      # This job runs when FE or BE changes happen, however, we only upload coverage data for
-      # BE changes since it conflicts with codecov's carry forward functionality
-      # Upload coverage data even if running the tests step fails since
-      # it reduces large coverage fluctuations
-      - name: Handle artifacts
-        uses: ./.github/actions/artifacts
-        if: ${{ always() }}
-        with:
-          token: ${{ secrets.CODECOV_TOKEN }}
-          commit_sha: ${{ github.event.pull_request.head.sha }}
-
-      - name: Inspect failure
-        if: failure()
-        run: |
-          devservices logs
-
-  devservices-acceptance-required-checks:
-    # this is a required check so we need this job to always run and report a status.
-    if: always()
-    name: Devservices Acceptance
-    needs: [devservices-acceptance]
-    runs-on: ubuntu-24.04
-    timeout-minutes: 3
-    steps:
-      - name: Check for failures
-        if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
-        run: |
-          echo "One of the dependent jobs have failed. You may need to re-run it." && exit 1

+ 0 - 273
.github/workflows/test_devservices_backend.yml

@@ -1,273 +0,0 @@
-name: test-devservices-backend
-
-on:
-  schedule:
-    - cron: '0 * * * *'
-# Cancel in progress workflows on pull_requests.
-# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value
-concurrency:
-  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
-  cancel-in-progress: true
-
-# hack for https://github.com/actions/cache/issues/810#issuecomment-1222550359
-env:
-  SEGMENT_DOWNLOAD_TIMEOUT_MINS: 3
-  USE_NEW_DEVSERVICES: 1
-  IS_DEV: 1
-  SNUBA_NO_WORKERS: 1
-
-jobs:
-  devservices-api-docs:
-    name: api docs test
-    runs-on: ubuntu-24.04
-    steps:
-      - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
-
-      - uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4
-        id: setup-node
-        with:
-          node-version-file: '.volta.json'
-
-      - name: Setup sentry python env
-        uses: ./.github/actions/test-setup-sentry-devservices
-        id: setup
-
-      - name: Bring up devservices
-        run: devservices up
-
-      - name: Run API docs tests
-        # install ts-node for ts build scripts to execute properly without potentially installing
-        # conflicting deps when running scripts locally
-        # see: https://github.com/getsentry/sentry/pull/32328/files
-        run: |
-          yarn add ts-node && make test-api-docs
-
-      - name: Inspect failure
-        if: failure()
-        run: devservices logs
-
-  devservices-backend-test:
-    name: backend test
-    runs-on: ubuntu-24.04
-    timeout-minutes: 60
-    permissions:
-      contents: read
-      id-token: write
-    strategy:
-      # This helps not having to run multiple jobs because one fails, thus, reducing resource usage
-      # and reducing the risk that one of many runs would turn red again (read: intermittent tests)
-      fail-fast: false
-      matrix:
-        # XXX: When updating this, make sure you also update MATRIX_INSTANCE_TOTAL.
-        instance: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
-        pg-version: ['14']
-
-    env:
-      # XXX: `MATRIX_INSTANCE_TOTAL` must be hardcoded to the length of `strategy.matrix.instance`.
-      # If this increases, make sure to also increase `flags.backend.after_n_builds` in `codecov.yml`.
-      MATRIX_INSTANCE_TOTAL: 11
-
-    steps:
-      - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
-
-      - name: Setup sentry env
-        id: setup
-        uses: ./.github/actions/test-setup-sentry-devservices
-
-      - name: Bring up devservices
-        run: devservices up --mode backend-ci
-
-      - name: Run backend test (${{ steps.setup.outputs.matrix-instance-number }} of ${{ steps.setup.outputs.matrix-instance-total }})
-        run: |
-          make test-python-ci
-
-      - name: Collect test data
-        uses: ./.github/actions/collect-test-data
-        if: ${{ !cancelled() }}
-        with:
-          artifact_path: .artifacts/pytest.json
-          gcs_bucket: ${{ secrets.COLLECT_TEST_DATA_GCS_BUCKET }}
-          gcp_project_id: ${{ secrets.COLLECT_TEST_DATA_GCP_PROJECT_ID }}
-          workload_identity_provider: ${{ secrets.SENTRY_GCP_DEV_WORKLOAD_IDENTITY_POOL }}
-          service_account_email: ${{ secrets.COLLECT_TEST_DATA_SERVICE_ACCOUNT_EMAIL }}
-          matrix_instance_number: ${{ steps.setup.outputs.matrix-instance-number }}
-
-      # Upload coverage data even if running the tests step fails since
-      # it reduces large coverage fluctuations
-      - name: Handle artifacts
-        if: ${{ always() }}
-        uses: ./.github/actions/artifacts
-        with:
-          token: ${{ secrets.CODECOV_TOKEN }}
-          commit_sha: ${{ github.event.pull_request.head.sha }}
-
-      - name: Inspect failure
-        if: failure()
-        run: devservices logs
-
-  devservices-backend-migration-tests:
-    name: backend migration tests
-    runs-on: ubuntu-24.04
-    timeout-minutes: 30
-    strategy:
-      matrix:
-        pg-version: ['14']
-
-    steps:
-      - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
-
-      - name: Setup sentry env
-        uses: ./.github/actions/test-setup-sentry-devservices
-        id: setup
-
-      - name: Bring up devservices
-        run: devservices up
-
-      - name: run tests
-        run: |
-          PYTEST_ADDOPTS="$PYTEST_ADDOPTS -m migrations --migrations --reruns 0" make test-python-ci
-
-      # Upload coverage data even if running the tests step fails since
-      # it reduces large coverage fluctuations
-      - name: Handle artifacts
-        if: ${{ always() }}
-        uses: ./.github/actions/artifacts
-        with:
-          token: ${{ secrets.CODECOV_TOKEN }}
-          commit_sha: ${{ github.event.pull_request.head.sha }}
-
-      - name: Inspect failure
-        if: failure()
-        run: devservices logs
-
-  devservices-cli:
-    name: cli test
-    runs-on: ubuntu-24.04
-    timeout-minutes: 10
-    strategy:
-      matrix:
-        pg-version: ['14']
-    steps:
-      - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
-
-      - name: Setup sentry env
-        uses: ./.github/actions/test-setup-sentry-devservices
-        id: setup
-
-      - name: Bring up devservices
-        run: devservices up --mode migrations
-
-      - name: Run test
-        run: |
-          make test-cli
-
-      # Upload coverage data even if running the tests step fails since
-      # it reduces large coverage fluctuations
-      - name: Handle artifacts
-        if: ${{ always() }}
-        uses: ./.github/actions/artifacts
-        with:
-          token: ${{ secrets.CODECOV_TOKEN }}
-          commit_sha: ${{ github.event.pull_request.head.sha }}
-
-      - name: Inspect failure
-        if: failure()
-        run: devservices logs
-
-  devservices-migration:
-    name: check migration
-    runs-on: ubuntu-24.04
-    strategy:
-      matrix:
-        pg-version: ['14']
-
-    steps:
-      - name: Checkout sentry
-        uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
-
-      - name: Setup sentry env
-        uses: ./.github/actions/test-setup-sentry-devservices
-        id: setup
-
-      - name: Bring up devservices
-        run: devservices up --mode migrations
-
-      - name: Migration & lockfile checks
-        env:
-          SENTRY_LOG_LEVEL: ERROR
-          PGPASSWORD: postgres
-        run: |
-          ./.github/workflows/scripts/migration-check.sh
-
-      - name: Inspect failure
-        if: failure()
-        run: devservices logs
-
-  devservices-monolith-dbs:
-    name: monolith-dbs test
-    runs-on: ubuntu-24.04
-    timeout-minutes: 20
-    permissions:
-      contents: read
-      id-token: write
-    steps:
-      - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
-
-      - name: Setup sentry env
-        uses: ./.github/actions/test-setup-sentry-devservices
-        id: setup
-
-      - name: Bring up devservices
-        run: devservices up --mode migrations
-
-      - name: Run test
-        run: |
-          make test-monolith-dbs
-
-      - name: Collect test data
-        uses: ./.github/actions/collect-test-data
-        if: ${{ !cancelled() }}
-        with:
-          artifact_path: .artifacts/pytest.monolith-dbs.json
-          gcs_bucket: ${{ secrets.COLLECT_TEST_DATA_GCS_BUCKET }}
-          gcp_project_id: ${{ secrets.COLLECT_TEST_DATA_GCP_PROJECT_ID }}
-          workload_identity_provider: ${{ secrets.SENTRY_GCP_DEV_WORKLOAD_IDENTITY_POOL }}
-          service_account_email: ${{ secrets.COLLECT_TEST_DATA_SERVICE_ACCOUNT_EMAIL }}
-
-      # Upload coverage data even if running the tests step fails since
-      # it reduces large coverage fluctuations
-      - name: Handle artifacts
-        if: ${{ always() }}
-        uses: ./.github/actions/artifacts
-        with:
-          token: ${{ secrets.CODECOV_TOKEN }}
-          commit_sha: ${{ github.event.pull_request.head.sha }}
-
-      - name: Inspect failure
-        if: failure()
-        run: devservices logs
-
-  # This check runs once all dependent jobs have passed
-  # It symbolizes that all required Backend checks have succesfully passed (Or skipped)
-  # This step is the only required backend check
-  devservices-backend-required-check:
-    needs:
-      [
-        devservices-api-docs,
-        devservices-backend-test,
-        devservices-backend-migration-tests,
-        devservices-cli,
-        devservices-migration,
-        devservices-monolith-dbs,
-      ]
-    name: Devservices Backend
-    # This is necessary since a failed/skipped dependent job would cause this job to be skipped
-    if: always()
-    runs-on: ubuntu-24.04
-    steps:
-      # If any jobs we depend on fail, we will fail since this is a required check
-      # NOTE: A timeout is considered a failure
-      - name: Check for failures
-        if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
-        run: |
-          echo "One of the dependent jobs have failed. You may need to re-run it." && exit 1