mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
This should be the last PR to get this working Looks like the `nightly-gauntlet` is working as expected, and this is a clone of that. --------- Signed-off-by: Danny Kopping <danny@coder.com>
123 lines
3.7 KiB
YAML
123 lines
3.7 KiB
YAML
# The nightly-gauntlet runs tests that are either too flaky or too slow to block
|
|
# every PR.
|
|
name: nightly-gauntlet
|
|
on:
|
|
schedule:
|
|
# Every day at midnight
|
|
- cron: "0 0 * * *"
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
go-race:
|
|
# While GitHub's toaster runners are likelier to flake, we want consistency
|
|
# between this environment and the regular test environment for DataDog
|
|
# statistics and to only show real workflow threats.
|
|
runs-on: ${{ github.repository_owner == 'coder' && 'depot-ubuntu-22.04-8' || 'ubuntu-latest' }}
|
|
# This runner costs 0.016 USD per minute,
|
|
# so 0.016 * 240 = 3.84 USD per run.
|
|
timeout-minutes: 240
|
|
steps:
|
|
- name: Harden Runner
|
|
uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2
|
|
with:
|
|
egress-policy: audit
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
|
|
|
|
- name: Setup Go
|
|
uses: ./.github/actions/setup-go
|
|
|
|
- name: Setup Terraform
|
|
uses: ./.github/actions/setup-tf
|
|
|
|
- name: Run Tests
|
|
run: |
|
|
# -race is likeliest to catch flaky tests
|
|
# due to correctness detection and its performance
|
|
# impact.
|
|
gotestsum --junitfile="gotests.xml" -- -timeout=240m -count=10 -race ./...
|
|
|
|
- name: Upload test results to DataDog
|
|
uses: ./.github/actions/upload-datadog
|
|
if: always()
|
|
with:
|
|
api-key: ${{ secrets.DATADOG_API_KEY }}
|
|
|
|
go-timing:
|
|
# We run these tests with p=1 so we don't need a lot of compute.
|
|
runs-on: ${{ github.repository_owner == 'coder' && 'depot-ubuntu-22.04' || 'ubuntu-latest' }}
|
|
timeout-minutes: 10
|
|
steps:
|
|
- name: Harden Runner
|
|
uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2
|
|
with:
|
|
egress-policy: audit
|
|
|
|
- name: Checkout
|
|
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
|
|
|
|
- name: Setup Go
|
|
uses: ./.github/actions/setup-go
|
|
|
|
- name: Run Tests
|
|
run: |
|
|
gotestsum --junitfile="gotests.xml" -- --tags="timing" -p=1 -run='_Timing/' ./...
|
|
|
|
- name: Upload test results to DataDog
|
|
uses: ./.github/actions/upload-datadog
|
|
if: always()
|
|
with:
|
|
api-key: ${{ secrets.DATADOG_API_KEY }}
|
|
|
|
notify-slack-on-failure:
|
|
needs:
|
|
- go-race
|
|
- go-timing
|
|
runs-on: ubuntu-latest
|
|
if: failure()
|
|
|
|
steps:
|
|
- name: Send Slack notification
|
|
run: |
|
|
curl -X POST -H 'Content-type: application/json' \
|
|
--data '{
|
|
"blocks": [
|
|
{
|
|
"type": "header",
|
|
"text": {
|
|
"type": "plain_text",
|
|
"text": "❌ Nightly gauntlet failed",
|
|
"emoji": true
|
|
}
|
|
},
|
|
{
|
|
"type": "section",
|
|
"fields": [
|
|
{
|
|
"type": "mrkdwn",
|
|
"text": "*Workflow:*\n${{ github.workflow }}"
|
|
},
|
|
{
|
|
"type": "mrkdwn",
|
|
"text": "*Committer:*\n${{ github.actor }}"
|
|
},
|
|
{
|
|
"type": "mrkdwn",
|
|
"text": "*Commit:*\n${{ github.sha }}"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "section",
|
|
"text": {
|
|
"type": "mrkdwn",
|
|
"text": "*View failure:* <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|Click here>"
|
|
}
|
|
}
|
|
]
|
|
}' ${{ secrets.CI_FAILURE_SLACK_WEBHOOK }}
|