Stress #29
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: Stress | |
| # The bulk issuance stress test is separated from CI because it is slow | |
| # relative to the rest of the suite and its value is in repetition: a | |
| # sequencing race that survives one run may not survive fifty. So it runs | |
| # nightly and on demand rather than on every push, and CI stays fast. | |
| # | |
| # It still runs on pull requests that touch the issuance path, since that | |
| # is where a regression it could catch would come from. | |
| on: | |
| schedule: | |
| # 04:17 UTC daily. Off the hour to avoid the scheduling stampede. | |
| - cron: '17 4 * * *' | |
| workflow_dispatch: | |
| inputs: | |
| certs: | |
| description: 'Number of certificates to issue' | |
| required: false | |
| default: '800' | |
| concurrency: | |
| description: 'Certificates in flight' | |
| required: false | |
| default: '64' | |
| pull_request: | |
| paths: | |
| - 'log/**' | |
| - 'ca/**' | |
| - 'acme/**' | |
| - 'cert/**' | |
| - 'tlogx/**' | |
| - 'integration/stress_test.go' | |
| - '.github/workflows/stress.yml' | |
| permissions: | |
| contents: read | |
| # See .github/workflows/ci.yml for why this pins a 1.27 release | |
| # candidate. Keep GO_VERSION in sync with that workflow. | |
| env: | |
| GO_VERSION: '1.27.0-rc.2' | |
| GOTOOLCHAIN: local | |
| jobs: | |
| stress: | |
| runs-on: ubuntu-latest | |
| # Generous: the default 800-cert run takes seconds, but a | |
| # workflow_dispatch soak can be given a much larger size. | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| # setup-go caches the module and build caches itself, keyed on | |
| # go.sum, so no separate actions/cache step is needed. | |
| - name: Install Go | |
| uses: actions/setup-go@v7 | |
| with: | |
| go-version: ${{ env.GO_VERSION }} | |
| - name: Toolchain version | |
| run: go version | |
| # `make stress` runs under -race, which is the point: the | |
| # assertions this test makes about index assignment are exactly the | |
| # kind of thing the race detector corroborates. | |
| # | |
| # A manual run can override the size; the scheduled and | |
| # pull_request runs take the test's own defaults (800 / 64). | |
| - name: Bulk issuance stress test (race) | |
| env: | |
| CACTUS_STRESS_CERTS: ${{ inputs.certs }} | |
| CACTUS_STRESS_CONCURRENCY: ${{ inputs.concurrency }} | |
| run: make GO=go stress |