Skip to content

Commit 415d36d

Browse files
Merge pull request #995 from ArmDeveloperEcosystem/prod-smoke-final
Prepare smoke tests for production promotion
2 parents feaa95f + 9abe5b6 commit 415d36d

11 files changed

Lines changed: 338 additions & 1764 deletions

.github/workflows-disabled/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
These workflows are intentionally archived outside `.github/workflows` so GitHub Actions will not discover or run them.
22

33
Current offboarded packages:
4+
- `curve`
45
- `kettle`
56
- `mesos`
67

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# Archived: Curve is marked works_on_arm: false and is not part of active batch orchestration.
12
name: Test Curve on Arm64
23

34
on:

.github/workflows/test-all-packages-batch6.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@ on:
66

77
jobs:
88

9-
test-garden-runc-release:
10-
uses: ./.github/workflows/test-garden-runc-release.yml
11-
129
test-perf:
1310
uses: ./.github/workflows/test-perf.yml
1411

@@ -147,7 +144,6 @@ jobs:
147144
summary:
148145
needs:
149146
[
150-
test-garden-runc-release,
151147
test-perf,
152148
test-cni,
153149
test-kube-bench,

.github/workflows/test-all-packages-orchestrator.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ permissions:
1010

1111
on:
1212
workflow_dispatch:
13+
schedule:
14+
# Weekly main-branch validation run: Friday night in US Central time.
15+
# 03:00 UTC Saturday is 10 PM CDT / 9 PM CST Friday.
16+
- cron: '0 3 * * 6'
1317
push:
1418
branches:
1519
- main

.github/workflows/test-garden-runc-release.yml

Lines changed: 0 additions & 420 deletions
This file was deleted.

ARCHITECTURE_DIAGRAMS.md

Lines changed: 158 additions & 357 deletions
Large diffs are not rendered by default.

EXECUTIVE_SUMMARY.md

Lines changed: 45 additions & 196 deletions
Original file line numberDiff line numberDiff line change
@@ -1,219 +1,68 @@
1-
# Testing Infrastructure - Executive Summary
1+
# Smoke-Test Executive Summary
22

3-
**Branch**: `smoke_tests`
4-
**Status**: ✅ Ready for Production
5-
**Impact**: Zero Breaking Changes
3+
Current as of 2026-05-14.
64

7-
---
5+
## Summary
86

9-
## What Was Built
7+
The Arm Ecosystem Dashboard now has a production-ready smoke-test pipeline for Open Source Linux packages. The pipeline runs package-level checks on native Arm64 GitHub runners, publishes canonical JSON results, and displays concise status badges plus detailed test rows on the dashboard.
108

11-
A fully automated testing system for Arm Ecosystem Dashboard packages that:
12-
- Runs functional tests on native Arm64 GitHub runners
13-
- Displays test results as badges on the dashboard
14-
- Scales easily from 2 to 20+ packages
15-
- Requires zero manual maintenance
9+
The current result set contains 960 active package smoke tests. All 960 are badge-passing in the local generated artifacts:
1610

17-
---
11+
| Status | Count | Meaning |
12+
|---|---:|---|
13+
| `6/6` | 920 | Baseline checks and Test 6 completed as counted passing checks. |
14+
| `5/5` | 40 | Baseline checks passed; Test 6 is explicitly skipped/deferred/not applicable and is not counted as failure. |
15+
| Red / failing | 0 | No current package result is publishing as failed in the local artifact set. |
1816

19-
## Current Results
17+
## What We Built
2018

21-
### ✅ nginx
22-
- 5 tests passing
23-
- Version: 1.24.0
24-
- Tests: binary, version, config, service, HTTP response
19+
- Native Arm64 package validation using `ubuntu-24.04-arm` runners.
20+
- Reusable package workflow contract version `2.0`.
21+
- 21 batch workflows to keep the full test set manageable.
22+
- A global summary workflow that publishes `data/test-results/*.json` and `data/test-results-index.json`.
23+
- Dashboard support for top-level badge counts and expandable per-test details.
24+
- A weekly orchestrator schedule on `main`.
25+
- A production promotion model where production deploys validated main results rather than rerunning the full suite.
2526

26-
### ✅ Envoy
27-
- 4 tests passing
28-
- Version: 1.30.0
29-
- Tests: binary, version, help, configuration
27+
## Customer-Facing Interpretation
3028

31-
---
29+
The dashboard is intentionally honest about validation depth.
3230

33-
## Key Files Added
31+
For packages with full runtime smoke coverage, the result proves a representative Arm runtime path such as install, version, architecture check, service start, API request, CLI execution, or tiny workload.
3432

35-
### Infrastructure (3 workflows)
36-
- `test-nginx.yml` - nginx testing workflow (370 lines, 5 tests)
37-
- `test-envoy.yml` - Envoy testing workflow (295 lines, 4 tests)
38-
- `template-package-test.yml` - **Template file to copy for new packages**
39-
- `test-all-packages.yml` - **Orchestrator** (runs all tests daily)
33+
For scoped Arm preflight packages, the result proves a real Arm-compatible surface but not necessarily the full production environment. Examples include GPU packages without live GPU execution, Kubernetes operators without a live cluster, GUI packages without a real desktop session, and cloud packages without authenticated cloud operations.
4034

41-
### Data
42-
- `data/test-results/nginx.json` - Auto-generated test results
43-
- `data/test-results/envoy.json` - Auto-generated test results
35+
## Regression / Test 6 Policy
4436

45-
### Documentation (3 guides)
46-
- `tests/README.md` - Navigation hub and quick start
47-
- `tests/COMPLETE_GUIDE.md` - Comprehensive documentation
48-
- `tests/PIPELINE_REFERENCE.md` - Advanced technical reference
37+
Test 6 is used to make the result future-facing when meaningful:
4938

50-
---
39+
- next-version install or build validation
40+
- next-release binary or bundle validation
41+
- limited CPU-side validation for accelerator-heavy packages
42+
- explicit no-newer-version or not-applicable decision when a real next-version check is not meaningful
5143

52-
## How It Works
44+
Skipped or deferred Test 6 decisions are not treated as package failures if Tests 1-5 passed and the workflow explains the reason.
5345

54-
```
55-
1. GitHub Actions (ubuntu-24.04-arm runner) runs daily at 2 AM UTC
56-
2. Installs package and runs tests
57-
3. Generates JSON results
58-
4. Auto-commits to repository
59-
5. Hugo displays badge on dashboard
60-
```
46+
## Branch And Production Policy
6147

62-
**Badge appears**: Package expanded view → "Arm64 Tests: X passing"
48+
Team-agreed operating model:
6349

64-
---
50+
- Run the full smoke-test orchestrator weekly on `main`.
51+
- Review the main/staging results.
52+
- Merge the validated results to `production`.
53+
- Production should deploy the site and point back to main-run evidence.
54+
- Production should not rerun the full 21-batch smoke suite unless the team intentionally changes that policy.
6555

66-
## Adding More Packages
56+
## Current Cleanup State
6757

68-
**Time required**: 15-20 minutes per package
58+
Before production promotion, we checked for accidental dead files and mismatches:
6959

70-
**Steps**:
71-
1. Copy `template-package-test.yml``test-<package>.yml`
72-
2. Search/replace `<PACKAGE>` and `<package>` placeholders
73-
3. Customize: installation, version detection, tests
74-
4. Add to `test-all-packages.yml` orchestrator
75-
5. Commit and run → badge appears automatically
60+
- Active package workflows match batch references: 960 to 960.
61+
- No active orphan package workflows remain.
62+
- No generated result points to a missing Open Source package page.
63+
- Unsupported/offboarded workflows are archived outside `.github/workflows`.
64+
- Stale onboarding docs have been rewritten to match the current production design.
7665

77-
**Example**: Adding Redis (simplified from template)
78-
```yaml
79-
- name: Install Redis
80-
run: |
81-
sudo apt-get update
82-
sudo apt-get install -y redis-server
66+
## Package Metadata Boundary
8367

84-
- name: Get Redis version
85-
run: |
86-
VERSION=$(redis-server --version | grep -oP '[0-9.]+' | head -1)
87-
88-
- name: Test - Check redis-server binary exists
89-
run: command -v redis-server
90-
91-
- name: Test - Check redis-cli binary exists
92-
run: command -v redis-cli
93-
```
94-
95-
---
96-
97-
## Architecture Highlights
98-
99-
### Simple and Scalable Design
100-
- ✅ Template-based workflow creation
101-
- ✅ Copy/customize pattern - no unnecessary abstraction
102-
- ✅ Parallel execution of all tests
103-
- ✅ Auto-conflict resolution for concurrent runs
104-
105-
### Robust Implementation
106-
- ✅ 5 retry attempts with exponential backoff
107-
- ✅ Automatic git conflict resolution (--ours strategy)
108-
- ✅ Graceful failure handling
109-
- ✅ No breaking changes to existing code
110-
111-
### Quality Assurance
112-
- ✅ Multiple refinement iterations
113-
- ✅ All tests passing
114-
- ✅ Hugo builds successfully
115-
- ✅ Documentation complete
116-
117-
---
118-
119-
## Merge Impact
120-
121-
### What Changes
122-
- ✅ New badge field on package pages (only when tests exist)
123-
- ✅ New GitHub workflows (run automatically)
124-
- ✅ New documentation in `tests/` directory
125-
126-
### What Doesn't Change
127-
- ✅ Existing package content
128-
- ✅ Hugo build process
129-
- ✅ User experience (no breaking changes)
130-
- ✅ Dashboard appearance (purely additive)
131-
132-
---
133-
134-
## Post-Merge Plan
135-
136-
### Week 1
137-
- Verify automated daily runs work
138-
- Monitor badge display on dashboard
139-
- Add 3-5 high-priority packages
140-
141-
### Month 1
142-
- Expand to 10-15 packages
143-
- Gather feedback from team
144-
- Iterate on test coverage
145-
146-
### Month 3
147-
- Cover 20+ packages
148-
- Implement advanced features (performance benchmarks, trend tracking)
149-
- Consider matrix testing for multiple versions
150-
151-
---
152-
153-
## Success Metrics
154-
155-
Current (2 packages):
156-
- ✅ 100% test pass rate
157-
- ✅ 0 manual interventions required
158-
- ✅ ~3 min average test duration
159-
- ✅ Zero Hugo build errors
160-
161-
Projected (20 packages):
162-
- 🎯 95%+ test pass rate
163-
- 🎯 Fully automated (zero manual work)
164-
- 🎯 <60 min total execution time (parallel)
165-
- 🎯 100% package coverage for top priorities
166-
167-
---
168-
169-
## Technical Stats
170-
171-
- **Lines of code added**: ~1,500
172-
- **Documentation pages**: 8
173-
- **Commits**: 36
174-
- **Files added**: 17
175-
- **Files modified**: 2
176-
- **Test coverage**: 2 packages (nginx, envoy)
177-
- **Pass rate**: 100% (9/9 tests passing)
178-
179-
---
180-
181-
## Risk Assessment
182-
183-
### Low Risk ✅
184-
- No breaking changes
185-
- Purely additive functionality
186-
- Graceful degradation (missing tests = no badge)
187-
- Extensively tested (36 commits of refinement)
188-
189-
### Medium Risk ⚠️
190-
- Concurrent workflow runs (mitigated: auto-conflict resolution)
191-
- Git push failures (mitigated: 5 retry attempts with backoff)
192-
193-
### No Risk 🚫
194-
- Hugo build breakage (already tested)
195-
- User experience impact (badges optional)
196-
- Data loss (results stored in git)
197-
198-
---
199-
200-
## Recommendation
201-
202-
✅ **READY TO MERGE**
203-
204-
This branch delivers production-ready infrastructure that:
205-
1. Adds significant value (automated testing + visibility)
206-
2. Requires zero maintenance (fully automated)
207-
3. Scales easily (15-20 min to add each package using template)
208-
4. Has zero breaking changes (purely additive)
209-
5. Is thoroughly documented (3 comprehensive guides)
210-
211-
**Next steps**:
212-
1. Merge `smoke_tests` → `main`
213-
2. Trigger initial workflow run
214-
3. Begin adding 5-10 more packages
215-
4. Monitor automated daily runs
216-
217-
---
218-
219-
*For detailed information, see `SMOKE_TESTS_BRANCH_SUMMARY.md`*
68+
Smoke-test workflows should not create new dashboard package entries by themselves. If a generated result points to a package page that does not exist, either the owning content team should add the package metadata, or the workflow/result should be removed from the active smoke-test set before production.

0 commit comments

Comments
 (0)