mirror of
https://github.com/fleetdm/fleet
synced 2026-04-21 13:37:30 +00:00
Fixes #40975. 8.0.32 (was running in Aurora managed cloud at the time) -> 8.0.39 (what we're running now) 8.0.36 -> 8.0.44 (latest 8.0.x version supported by Aurora; holding off on 8.0.45 until Aurora supports it) 8.4.7 -> 8.4.8 9.5.0 -> 9.6.0 Also bumped the supported Aurora version from 3.07.0 to 3.08.2 to match what we're running in managed cloud right now Fleet might work on older patch versions but we'll no longer dev/test on them. MySQL 9.x not testing previous minor versions matches with our previous approach for that version. Since these are all patch/minor bumps (and the overnight build cases are patch bumps/are covered by AWS envs) automated testing should be sufficient here.
151 lines
6.1 KiB
YAML
151 lines
6.1 KiB
YAML
name: Go tests (activity)
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- patch-*
|
|
- prepare-*
|
|
paths:
|
|
- 'server/activity/**.go'
|
|
- 'server/platform/**.go'
|
|
- 'server/contexts/**.go'
|
|
- 'server/ptr/**.go'
|
|
- 'go.mod'
|
|
- 'go.sum'
|
|
- '.github/workflows/test-go-activity.yaml'
|
|
- '.github/workflows/test-go-suite.yaml'
|
|
pull_request:
|
|
paths:
|
|
- 'server/activity/**.go'
|
|
- 'server/platform/**.go'
|
|
- 'server/contexts/**.go'
|
|
- 'server/ptr/**.go'
|
|
- 'go.mod'
|
|
- 'go.sum'
|
|
- '.github/workflows/test-go-activity.yaml'
|
|
- '.github/workflows/test-go-suite.yaml'
|
|
workflow_dispatch: # Manual
|
|
schedule:
|
|
- cron: '0 4 * * *'
|
|
|
|
# This allows a subsequently queued workflow run to interrupt previous runs
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id}}
|
|
cancel-in-progress: true
|
|
|
|
defaults:
|
|
run:
|
|
# fail-fast using bash -eo pipefail. See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference
|
|
shell: bash
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
# ──────────────────────────────────────────────────────────────────────────
|
|
# Activity suite: always-run versions (every push/PR + cron).
|
|
# make sure to update supported versions docs when MySQL versions change
|
|
# ──────────────────────────────────────────────────────────────────────────
|
|
test-go-activity:
|
|
strategy:
|
|
matrix:
|
|
mysql: ["mysql:8.0.44", "mysql:9.5.0"]
|
|
uses: ./.github/workflows/test-go-suite.yaml
|
|
with:
|
|
suite: activity
|
|
mysql: ${{ matrix.mysql }}
|
|
cover_pkg: 'github.com/fleetdm/fleet/v4/server/activity/...'
|
|
generate_go: false
|
|
is_cron: ${{ github.event_name == 'schedule' }}
|
|
secrets: inherit
|
|
|
|
# ──────────────────────────────────────────────────────────────────────────
|
|
# Extended MySQL coverage: only on the nightly cron schedule.
|
|
# Tests the same suite against older/intermediate versions.
|
|
# ──────────────────────────────────────────────────────────────────────────
|
|
test-go-activity-extended-mysql:
|
|
if: github.event_name == 'schedule'
|
|
strategy:
|
|
matrix:
|
|
mysql: ["mysql:8.0.39", "mysql:8.4.8"]
|
|
uses: ./.github/workflows/test-go-suite.yaml
|
|
with:
|
|
suite: activity
|
|
mysql: ${{ matrix.mysql }}
|
|
cover_pkg: 'github.com/fleetdm/fleet/v4/server/activity/...'
|
|
generate_go: false
|
|
is_cron: true
|
|
secrets: inherit
|
|
|
|
# We upload all backend coverage in one step so that we're less likely to end up with a partial coverage report.
|
|
upload-coverage:
|
|
needs: [test-go-activity, test-go-activity-extended-mysql]
|
|
# Run even if extended-mysql was skipped (non-cron) or individual suites failed.
|
|
if: always()
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Harden Runner
|
|
uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
|
|
with:
|
|
egress-policy: audit
|
|
|
|
- name: Checkout Code
|
|
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
|
- name: Download artifacts
|
|
uses: actions/download-artifact@9c19ed7fe5d278cd354c7dfd5d3b88589c7e2395 # v4.1.6
|
|
with:
|
|
pattern: '*-coverage'
|
|
- name: Upload to Codecov
|
|
uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # v4.5.0
|
|
with:
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
flags: backend-activity
|
|
|
|
# Our Go test suites are run with continue-on-error: true, so they don't contribute to the workflow pass/fail.
|
|
# This job explicitly checks if any Go test suites have failed and marks the overall workflow with the proper pass/fail status.
|
|
aggregate-result:
|
|
needs: [test-go-activity, test-go-activity-extended-mysql]
|
|
# Run even if extended-mysql was skipped (non-cron) or individual suites failed.
|
|
if: always()
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Harden Runner
|
|
uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
|
|
with:
|
|
egress-policy: audit
|
|
|
|
- name: Download artifacts
|
|
uses: actions/download-artifact@9c19ed7fe5d278cd354c7dfd5d3b88589c7e2395 # v4.1.6
|
|
with:
|
|
pattern: '*-status'
|
|
|
|
- name: Check for failures
|
|
run: |
|
|
failed_tests=""
|
|
status_count=0
|
|
# Find all status files (they are in directories like 'activity-mysql8.0.44-status/status')
|
|
for status_file in $(find ./ -type f -name 'status'); do
|
|
status_count=$((status_count + 1))
|
|
# Extract test name from parent directory (e.g., 'activity-mysql8.0.44-status')
|
|
test_dir=$(basename $(dirname "$status_file"))
|
|
# Remove '-status' suffix to get the test name
|
|
test_name="${test_dir%-status}"
|
|
status_content=$(cat "$status_file")
|
|
echo "Processing: $status_file (Test: $test_name) with status content: $status_content"
|
|
if grep -q "fail" "$status_file"; then
|
|
echo " ❌ Test failed: $test_name"
|
|
failed_tests="${failed_tests}${test_name}, "
|
|
else
|
|
echo " ✅ Test passed: $test_name"
|
|
fi
|
|
done
|
|
if [[ $status_count -eq 0 ]]; then
|
|
echo "❌ ERROR: No status files found! This indicates a workflow issue."
|
|
exit 1
|
|
fi
|
|
if [[ -n "$failed_tests" ]]; then
|
|
echo "❌ One or more test jobs failed: ${failed_tests%, }"
|
|
exit 1
|
|
fi
|
|
echo "✅ All test jobs succeeded."
|