Dump stacktraces from goroutines on timeouts for inspection #620
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Ghostferry Tests | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| # Prevent Go from auto-activating vendor mode when a stale vendor/ directory | |
| # exists in the workspace. Actions/checkout does not always remove previously | |
| # tracked files that were deleted in a later commit, so a checkout of a commit | |
| # that removed vendor/ may still find the directory on disk, causing | |
| # "inconsistent vendoring" build failures. | |
| env: | |
| GOFLAGS: "-mod=mod" | |
| jobs: | |
| gh-285: | |
| strategy: | |
| matrix: | |
| mysql: ["5.7", "8.0", "8.4"] | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| timeout-minutes: 15 | |
| env: | |
| CI: "true" | |
| MYSQL_VERSION: ${{ matrix.mysql }} | |
| steps: | |
| - uses: actions/checkout@v6.0.2 | |
| - uses: actions/setup-go@v6.4.0 | |
| with: | |
| go-version: "1.26.2" | |
| - name: Starting up MySQL | |
| run: .github/workflows/start-mysql.sh | |
| - name: Running GH-285 test | |
| run: ./examples/gh-285/bugreport.sh | |
| go-test: | |
| strategy: | |
| matrix: | |
| mysql: ["5.7", "8.0", "8.4"] | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| continue-on-error: true | |
| env: | |
| CI: "true" | |
| MYSQL_VERSION: ${{ matrix.mysql }} | |
| # Emit full goroutine stacks (all goroutines, not just the crashing one) | |
| # when the test binary panics or times out. This is the primary | |
| # diagnostic for stuck / deadlocked tests. | |
| GOTRACEBACK: all | |
| steps: | |
| - uses: actions/checkout@v6.0.2 | |
| - uses: actions/setup-go@v6.4.0 | |
| with: | |
| go-version: "1.26.2" | |
| - name: Starting up MySQL | |
| run: .github/workflows/start-mysql.sh | |
| - name: Running Golang tests | |
| run: make test-go | |
| ruby-test: | |
| strategy: | |
| matrix: | |
| mysql: ["5.7", "8.0", "8.4"] | |
| log_backend: ["logrus"] | |
| include: | |
| - mysql: "8.4" | |
| log_backend: "zerolog" | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| continue-on-error: true | |
| env: | |
| CI: "true" | |
| BUNDLE_WITHOUT: "development" | |
| MYSQL_VERSION: ${{ matrix.mysql }} | |
| GHOSTFERRY_LOG_BACKEND: ${{ matrix.log_backend }} | |
| steps: | |
| - uses: actions/checkout@v6.0.2 | |
| - uses: actions/setup-go@v6.4.0 | |
| with: | |
| go-version: "1.26.2" | |
| - uses: ruby/setup-ruby@v1 | |
| with: | |
| bundler-cache: true | |
| - name: Starting up MySQL | |
| run: .github/workflows/start-mysql.sh | |
| - name: Running Ruby tests | |
| run: bundle exec rake test | |
| build-debs: | |
| strategy: | |
| matrix: | |
| runner: [ubuntu-latest, shopify-ubuntu-arm64] | |
| runs-on: ${{ matrix.runner }} | |
| steps: | |
| - uses: actions/checkout@v6.0.2 | |
| - uses: actions/setup-go@v6.4.0 | |
| with: | |
| go-version: "1.26.2" | |
| - name: Building Ghostferry | |
| run: .github/workflows/build-deb.sh --tagged-only | |
| - name: Upload debs | |
| uses: actions/upload-artifact@v7.0.1 | |
| with: | |
| name: debs-${{ github.sha }}-${{ matrix.runner }} | |
| path: build/ghostferry* |