Skip to content

Commit 79d7215

Browse files
Paul Whalenknecasov
authored andcommitted
ci: add e2e workflow to validate go-fdo-ci PRs
Add .github/workflows/e2e.yml with two jobs: - test-native: 15 native binary tests using test/ci/ scripts - test-container: 11 container tests using test/container/ scripts Both run as a matrix with fail-fast: false. Triggers: - pull_request: validates changes against server@main + client@main - workflow_dispatch: manual cross-repo testing with server-ref/client-ref inputs Assisted-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Paul Whalen <pwhalen@fedoraproject.org>
1 parent b53fa58 commit 79d7215

1 file changed

Lines changed: 171 additions & 0 deletions

File tree

.github/workflows/e2e.yml

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
name: E2E Testing
2+
3+
permissions:
4+
contents: read
5+
6+
on:
7+
pull_request:
8+
push:
9+
branches: [main]
10+
workflow_dispatch:
11+
inputs:
12+
server-ref:
13+
description: "go-fdo-server ref (branch, tag, or refs/pull/N/head)"
14+
default: "main"
15+
client-ref:
16+
description: "go-fdo-client ref (branch, tag, or refs/pull/N/head)"
17+
default: "main"
18+
19+
jobs:
20+
test-native:
21+
name: "Native: ${{ matrix.name }}"
22+
runs-on: ubuntu-latest
23+
strategy:
24+
fail-fast: false
25+
matrix:
26+
include:
27+
- test: test-onboarding
28+
name: Test FIDO device onboarding
29+
- test: test-onboarding-config
30+
name: Test FIDO device onboarding using a configuration file
31+
- test: test-onboarding-v2
32+
name: Test FIDO device onboarding (V2 API)
33+
- test: test-ov-verification
34+
name: Test Ownership Voucher verification
35+
- test: test-resale
36+
name: Test FIDO resale protocol
37+
- test: test-fsim-wget
38+
name: Test FSIM fdo.wget
39+
- test: test-fsim-upload
40+
name: Test FSIM fdo.upload
41+
- test: test-fsim-download
42+
name: Test FSIM fdo.download
43+
- test: test-fsim-command
44+
name: Test FSIM fdo.command
45+
- test: test-fsim-config
46+
name: Test a sequence of FSIM operations using a configuration file
47+
- test: test-device-ca-api
48+
name: Test Device CA API
49+
- test: test-device-ca-rendezvous-trust
50+
name: Test Device CA rendezvous trust verification
51+
- test: test-rv-bypass
52+
name: Test RV bypass
53+
- test: test-rv-bypass-v2
54+
name: Test RV bypass (V2 API)
55+
- test: test-rvinfo-apis-v2
56+
name: Test RVInfo API Lifecycle (V2 API)
57+
env:
58+
SERVER_LOCAL_PATH: ${{ github.workspace }}/server
59+
CLIENT_LOCAL_PATH: ${{ github.workspace }}/client
60+
steps:
61+
- name: Install golang
62+
uses: actions/setup-go@40f1582b2485089dde7abd97c1529aa768e1baff # v5
63+
with:
64+
go-version: "1.26"
65+
66+
- name: Check out go-fdo-ci
67+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
68+
69+
- name: Check out go-fdo-server
70+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
71+
with:
72+
repository: fido-device-onboard/go-fdo-server
73+
ref: ${{ inputs.server-ref || 'main' }}
74+
path: server
75+
76+
- name: Check out go-fdo-client
77+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
78+
with:
79+
repository: fido-device-onboard/go-fdo-client
80+
ref: ${{ inputs.client-ref || 'main' }}
81+
path: client
82+
83+
- name: ${{ matrix.name }}
84+
run: |
85+
source test/ci/${{ matrix.test }}.sh
86+
run_test
87+
88+
- name: Get Manufacturer, Rendezvous and Owner server logs
89+
if: always()
90+
run: |
91+
source test/ci/${{ matrix.test }}.sh
92+
get_logs
93+
94+
- name: Cleanup the environment
95+
if: always()
96+
run: |
97+
source test/ci/${{ matrix.test }}.sh
98+
cleanup
99+
100+
test-container:
101+
name: "Container: ${{ matrix.name }}"
102+
runs-on: ubuntu-latest
103+
strategy:
104+
fail-fast: false
105+
matrix:
106+
include:
107+
- test: test-onboarding
108+
name: Test FIDO device onboarding
109+
- test: test-onboarding-config
110+
name: Test FIDO device onboarding using a configuration file
111+
- test: test-onboarding-postgres
112+
name: Test FIDO device onboarding (PostgreSQL)
113+
- test: test-ov-verification
114+
name: Test Ownership Voucher verification
115+
- test: test-resale
116+
name: Test FIDO resale protocol
117+
- test: test-fsim-download
118+
name: Test FSIM fdo.download
119+
- test: test-fsim-upload
120+
name: Test FSIM fdo.upload
121+
- test: test-fsim-wget
122+
name: Test FSIM fdo.wget
123+
- test: test-device-ca-api
124+
name: Test Device CA API
125+
- test: test-device-ca-rendezvous-trust
126+
name: Test Device CA rendezvous trust verification
127+
- test: test-health-api-postgres
128+
name: Test Health API (PostgreSQL)
129+
env:
130+
SERVER_LOCAL_PATH: ${{ github.workspace }}/server
131+
CLIENT_LOCAL_PATH: ${{ github.workspace }}/client
132+
COMPOSE_DIR: server/deployments/compose
133+
steps:
134+
- name: Install golang
135+
uses: actions/setup-go@40f1582b2485089dde7abd97c1529aa768e1baff # v5
136+
with:
137+
go-version: "1.26"
138+
139+
- name: Check out go-fdo-ci
140+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
141+
142+
- name: Check out go-fdo-server
143+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
144+
with:
145+
repository: fido-device-onboard/go-fdo-server
146+
ref: ${{ inputs.server-ref || 'main' }}
147+
path: server
148+
149+
- name: Check out go-fdo-client
150+
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
151+
with:
152+
repository: fido-device-onboard/go-fdo-client
153+
ref: ${{ inputs.client-ref || 'main' }}
154+
path: client
155+
156+
- name: ${{ matrix.name }}
157+
run: |
158+
source test/container/${{ matrix.test }}.sh
159+
run_test
160+
161+
- name: Get Manufacturer, Rendezvous and Owner server logs
162+
if: always()
163+
run: |
164+
source test/container/${{ matrix.test }}.sh
165+
get_logs
166+
167+
- name: Cleanup the environment
168+
if: always()
169+
run: |
170+
source test/container/${{ matrix.test }}.sh
171+
cleanup

0 commit comments

Comments
 (0)