mirror of
https://github.com/gastownhall/beads.git
synced 2026-09-14 20:17:24 +08:00
789044b83e
- beads-release formula: drop the snapshot-docs step (ran the deleted scripts/snapshot-release-docs.sh on the critical needs-chain); stamp- changelog now needs update-vendorhash - update-versions.sh: remove the mangled --skip-docs/docs-snapshot logic and garbled usage text left by mid-line deletions - pre-push hook: drop the snapshot-script remediation hint - release.yml: collapse the prerelease branch; BEADS_REQUIRE_RELEASE_DOCS has no consumer since check-docs-version.sh was deleted - RELEASING.md / scripts/docs.md: describe the current pipeline (no --versioned, no website/ outputs, no check-docs-version.sh) - docs-mintlify.yml: paths filter now includes engdocs/** and the curated root markdown files the docsync guard validates - docs-render-check.sh: pin mint@4.2.687, fail closed when mint dies without producing a broken-links report, parse report lines only, drop dead extract_page_links(), fix the stale jq requirement; mint.sh pins the same version - nightly.yml: remove the deleted website measurement suite option - CODEOWNERS: init-safety ADR gate follows the file to engdocs/adr/ - beads-docs skill: align with settled decision 6 — no pointer stubs, moved pages get docs.json redirects; bd's printed paths are fixed at the source - CHANGELOG (edited line), FEDERATION-SETUP, README, examples, oracle-a, .buildflags, gh-issue-to-pr formula: retarget moved-file references; anchor the build/ gitignore pattern
105 lines
3.5 KiB
YAML
105 lines
3.5 KiB
YAML
name: Nightly Full Tests
|
|
|
|
on:
|
|
schedule:
|
|
# Run at 2am UTC daily
|
|
- cron: '0 2 * * *'
|
|
workflow_dispatch:
|
|
inputs:
|
|
suite:
|
|
description: "Nightly suite or measurement suite"
|
|
required: true
|
|
type: choice
|
|
default: full-test
|
|
options:
|
|
- full-test
|
|
- pr-linux
|
|
- macos-short
|
|
- macos-candidates
|
|
- linux-integration
|
|
- linux-integration-sharded
|
|
- linux-integration-hybrid-sharded
|
|
- linux-integration-hybrid-16-sharded
|
|
- linux-integration-hybrid-prebuilt-sharded
|
|
- linux-integration-coverage
|
|
- cross-version-smoke
|
|
- nix
|
|
- mcp-package
|
|
- npm-package
|
|
smoke_version:
|
|
description: "Optional previous release for cross-version-smoke"
|
|
required: false
|
|
default: ""
|
|
|
|
env:
|
|
BD_DISABLE_METRICS: "1"
|
|
BD_DISABLE_EVENT_FLUSH: "1"
|
|
|
|
jobs:
|
|
measure:
|
|
name: Measure selected CI suite
|
|
if: ${{ github.event_name == 'workflow_dispatch' && inputs.suite != 'full-test' }}
|
|
uses: ./.github/workflows/ci-measurements.yml
|
|
with:
|
|
suite: ${{ inputs.suite }}
|
|
smoke_version: ${{ inputs.smoke_version }}
|
|
|
|
full-test:
|
|
name: Full Test Suite
|
|
if: ${{ github.event_name == 'schedule' || inputs.suite == 'full-test' }}
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 45
|
|
steps:
|
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v6
|
|
|
|
- name: Set up Go
|
|
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6
|
|
with:
|
|
go-version-file: 'go.mod'
|
|
|
|
- name: Install Dolt
|
|
run: |
|
|
curl -L https://github.com/dolthub/dolt/releases/latest/download/install.sh | sudo bash
|
|
|
|
- name: Configure Git and Dolt identity
|
|
run: |
|
|
git config --global user.name "CI Bot"
|
|
git config --global user.email "ci@beads.test"
|
|
dolt config --global --add user.name "CI Bot"
|
|
dolt config --global --add user.email "ci@beads.test"
|
|
|
|
- name: Build
|
|
run: go build -v -tags gms_pure_go ./cmd/bd
|
|
|
|
- name: Full Test Suite (including integration tests)
|
|
env:
|
|
# Skip Docker-based Dolt testcontainer tests — they hang in
|
|
# GitHub Actions (known issue, see scripts/repro-dolt-hang/).
|
|
# Non-Docker integration tests still run via the installed dolt binary.
|
|
BEADS_TEST_SKIP: dolt
|
|
run: go test -v -race -tags=integration,gms_pure_go -coverprofile=coverage.out -timeout=30m ./...
|
|
|
|
- name: Check coverage threshold
|
|
run: |
|
|
COVERAGE=$(go tool cover -func=coverage.out | grep total | awk '{print $3}' | sed 's/%//')
|
|
echo "Coverage: $COVERAGE%"
|
|
# Threshold is lower (30%) because Docker-based Dolt integration
|
|
# tests are skipped in CI (BEADS_TEST_SKIP=dolt). With Docker
|
|
# tests included, coverage would be ~50%+.
|
|
if (( $(echo "$COVERAGE < 30" | bc -l) )); then
|
|
echo "❌ Coverage is below 30% threshold"
|
|
exit 1
|
|
elif (( $(echo "$COVERAGE < 40" | bc -l) )); then
|
|
echo "⚠️ Coverage is below 40% (warning threshold)"
|
|
else
|
|
echo "✅ Coverage meets threshold"
|
|
fi
|
|
|
|
- name: Upload coverage
|
|
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v6
|
|
if: success()
|
|
continue-on-error: true
|
|
with:
|
|
file: ./coverage.out
|
|
fail_ci_if_error: false
|