小草林(田梓萱)
90db12dfc0
Some checks failed
Lock closed issues/PRs / lock (push) Has been cancelled
Test / Sentry self-hosted end-to-end tests (push) Has been cancelled
Test / unit tests (push) Has been cancelled
Test / Sentry upgrade test (push) Has been cancelled
Test / integration test v2.19.0 - customizations disabled (push) Has been cancelled
Test / integration test v2.19.0 - customizations enabled (push) Has been cancelled
Test / integration test v2.26.0 - customizations disabled (push) Has been cancelled
Test / integration test v2.26.0 - customizations enabled (push) Has been cancelled
Signed-off-by: 小草林(田梓萱) <xcl@xuegao-tzx.top>
160 lines
5.4 KiB
YAML
160 lines
5.4 KiB
YAML
name: Test
|
|
on:
|
|
# Run CI on all pushes to the master and release/** branches, and on all new
|
|
# pull requests, and on all pushes to pull requests (even if a pull request
|
|
# is not against master).
|
|
push:
|
|
branches:
|
|
- "master"
|
|
- "release/**"
|
|
pull_request:
|
|
schedule:
|
|
- cron: "0 0,12 * * *"
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
jobs:
|
|
e2e-test:
|
|
if: github.repository_owner == 'getsentry'
|
|
runs-on: ubuntu-22.04
|
|
name: "Sentry self-hosted end-to-end tests"
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
path: self-hosted
|
|
|
|
- name: End to end tests
|
|
uses: getsentry/action-self-hosted-e2e-tests@main
|
|
with:
|
|
project_name: self-hosted
|
|
|
|
unit-test:
|
|
if: github.repository_owner == 'getsentry'
|
|
runs-on: ubuntu-22.04
|
|
name: "unit tests"
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Unit Tests
|
|
run: ./unit-test.sh
|
|
|
|
upgrade-test:
|
|
if: github.repository_owner == 'getsentry'
|
|
runs-on: ubuntu-22.04
|
|
name: "Sentry upgrade test"
|
|
env:
|
|
REPORT_SELF_HOSTED_ISSUES: 0
|
|
steps:
|
|
- name: Get latest self-hosted release version
|
|
run: |
|
|
LATEST_TAG=$(curl -s https://api.github.com/repos/getsentry/self-hosted/releases/latest | jq -r '.tag_name')
|
|
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV
|
|
|
|
- name: Checkout latest release
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ env.LATEST_TAG }}
|
|
|
|
- name: Get Compose
|
|
run: |
|
|
# Docker Compose v1 is installed here, remove it
|
|
sudo rm -f "/usr/local/bin/docker-compose"
|
|
sudo rm -f "/usr/local/lib/docker/cli-plugins/docker-compose"
|
|
sudo mkdir -p "/usr/local/lib/docker/cli-plugins"
|
|
sudo curl -L https://github.com/docker/compose/releases/download/v2.26.0/docker-compose-`uname -s`-`uname -m` -o "/usr/local/lib/docker/cli-plugins/docker-compose"
|
|
sudo chmod +x "/usr/local/lib/docker/cli-plugins/docker-compose"
|
|
|
|
- name: Install ${{ env.LATEST_TAG }}
|
|
run: ./install.sh
|
|
|
|
- name: Checkout current ref
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install current ref
|
|
run: ./install.sh
|
|
|
|
integration-test:
|
|
if: github.repository_owner == 'getsentry'
|
|
runs-on: ubuntu-22.04
|
|
name: integration test ${{ matrix.compose_version }} - customizations ${{ matrix.customizations }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
customizations: ["disabled", "enabled"]
|
|
compose_version: ["v2.19.0", "v2.26.0"]
|
|
include:
|
|
- compose_version: "v2.19.0"
|
|
compose_path: "/usr/local/lib/docker/cli-plugins"
|
|
- compose_version: "v2.26.0"
|
|
compose_path: "/usr/local/lib/docker/cli-plugins"
|
|
env:
|
|
COMPOSE_PROJECT_NAME: self-hosted-${{ strategy.job-index }}
|
|
REPORT_SELF_HOSTED_ISSUES: 0
|
|
SELF_HOSTED_TESTING_DSN: ${{ vars.SELF_HOSTED_TESTING_DSN }}
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup dev environment
|
|
run: |
|
|
pip install -r requirements-dev.txt
|
|
echo "PY_COLORS=1" >> "$GITHUB_ENV"
|
|
### pytest-sentry configuration ###
|
|
if [ "$GITHUB_REPOSITORY" = "getsentry/self-hosted" ]; then
|
|
echo "PYTEST_SENTRY_DSN=$SELF_HOSTED_TESTING_DSN" >> $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
|
|
|
|
- name: Get Compose
|
|
run: |
|
|
# Always remove `docker compose` support as that's the newer version
|
|
# and comes installed by default nowadays.
|
|
sudo rm -f "/usr/local/lib/docker/cli-plugins/docker-compose"
|
|
# Docker Compose v1 is installed here, remove it
|
|
sudo rm -f "/usr/local/bin/docker-compose"
|
|
sudo rm -f "${{ matrix.compose_path }}/docker-compose"
|
|
sudo mkdir -p "${{ matrix.compose_path }}"
|
|
sudo curl -L https://github.com/docker/compose/releases/download/${{ matrix.compose_version }}/docker-compose-`uname -s`-`uname -m` -o "${{ matrix.compose_path }}/docker-compose"
|
|
sudo chmod +x "${{ matrix.compose_path }}/docker-compose"
|
|
|
|
- name: Install self-hosted
|
|
uses: nick-fields/retry@v3
|
|
with:
|
|
timeout_minutes: 10
|
|
max_attempts: 3
|
|
command: ./install.sh
|
|
|
|
- name: Integration Test
|
|
run: |
|
|
if [ "${{ matrix.compose_version }}" = "v2.19.0" ]; then
|
|
pytest --reruns 3 --cov --junitxml=junit.xml _integration-test/ --customizations=${{ matrix.customizations }}
|
|
else
|
|
pytest --cov --junitxml=junit.xml _integration-test/ --customizations=${{ matrix.customizations }}
|
|
fi
|
|
|
|
- name: Inspect failure
|
|
if: failure()
|
|
run: |
|
|
docker compose ps
|
|
docker compose logs
|
|
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@v5
|
|
with:
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
slug: getsentry/self-hosted
|
|
|
|
- name: Upload test results to Codecov
|
|
if: ${{ !cancelled() }}
|
|
uses: codecov/test-results-action@v1
|
|
with:
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|