Skip to content

Commit f7366cb

Browse files
author
Cole Kennedy
committed
.
1 parent 6099e58 commit f7366cb

File tree

2 files changed

+824
-200
lines changed

2 files changed

+824
-200
lines changed

.github/workflows/test.yml

+144-30
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1-
name: Test Action Wrapper
1+
name: Test Witness Action Wrapper
22

33
on:
44
push:
5-
branches:
6-
- main
5+
branches: [ main ]
76
pull_request:
8-
branches:
9-
- main
10-
workflow_dispatch:
7+
branches: [ main ]
8+
9+
permissions:
10+
id-token: write # This is required for requesting the JWT
11+
contents: read # This is required for actions/checkout
1112

1213
jobs:
1314
test-basic:
@@ -20,31 +21,33 @@ jobs:
2021
uses: actions/setup-node@v3
2122
with:
2223
node-version: '16'
23-
24+
2425
- name: Install dependencies
2526
run: npm ci
2627

27-
- name: Run basic hello-world test
28+
- name: Test wrapper with basic attestation
29+
id: attestation
2830
uses: ./
29-
id: hello-test
3031
with:
31-
action-ref: "actions/[email protected]"
32-
who-to-greet: "Hello World"
32+
# Action to run
33+
action-ref: "actions/hello-world-javascript-action@main"
34+
input-who-to-greet: "World"
35+
36+
# Witness configuration
3337
step: "hello-world"
34-
attestations: "command environment"
35-
outfile: "./hello-world.json"
38+
attestations: "command"
3639

37-
- name: Verify hello-world action ran
40+
- name: Check attestation file
3841
run: |
39-
if [[ -f "./hello-world.json" ]]; then
40-
echo "Hello world attestation created successfully"
41-
jq . "./hello-world.json" | head -n 20
42+
if [[ -f "/tmp/hello-world-attestation.json" ]]; then
43+
echo "Attestation created successfully"
44+
jq . "/tmp/hello-world-attestation.json" | head -n 20
4245
else
43-
echo "Hello world attestation file not found!"
46+
echo "Attestation file not found!"
4447
exit 1
4548
fi
4649
47-
test-input-forwarding:
50+
test-multi-attestors:
4851
runs-on: ubuntu-latest
4952
steps:
5053
- name: Checkout repository
@@ -54,26 +57,137 @@ jobs:
5457
uses: actions/setup-node@v3
5558
with:
5659
node-version: '16'
60+
61+
- name: Install dependencies
62+
run: npm ci
63+
64+
- name: Test wrapper with multiple attestors
65+
id: multi-attestation
66+
uses: ./
67+
with:
68+
# Action to run
69+
action-ref: "actions/hello-world-javascript-action@main"
70+
input-who-to-greet: "Witness"
5771

72+
# Witness configuration
73+
step: "hello-world-multi"
74+
attestations: "command attestor.git attestor.sbom"
75+
attestor-sbom-export: "true"
76+
outfile: "./multi-attestation.json"
77+
78+
- name: Check attestation file
79+
run: |
80+
if [[ -f "./multi-attestation.json" ]]; then
81+
echo "Multi-attestation created successfully"
82+
jq . "./multi-attestation.json" | head -n 20
83+
else
84+
echo "Multi-attestation file not found!"
85+
exit 1
86+
fi
87+
88+
- name: Upload attestation as artifact
89+
uses: actions/upload-artifact@v4
90+
with:
91+
name: attestation-files
92+
path: ./multi-attestation.json
93+
94+
test-sigstore-archivista:
95+
runs-on: ubuntu-latest
96+
steps:
97+
- name: Checkout repository
98+
uses: actions/checkout@v3
99+
100+
- name: Setup Node.js
101+
uses: actions/setup-node@v3
102+
with:
103+
node-version: '16'
104+
58105
- name: Install dependencies
59106
run: npm ci
107+
108+
- name: Test with Sigstore and Archivista
109+
id: sigstore-attestation
110+
uses: ./
111+
with:
112+
# Action to run
113+
action-ref: "actions/hello-world-javascript-action@main"
114+
input-who-to-greet: "Sigstore"
115+
116+
# Witness configuration
117+
step: test-sigstore
118+
attestations: "environment git github slsa"
119+
attestor-slsa-export: "true"
120+
enable-sigstore: "true"
121+
enable-archivista: "true"
122+
outfile: "./sigstore-attestation.json"
123+
124+
- name: Check GitOID output
125+
run: |
126+
if [[ -n "${{ steps.sigstore-attestation.outputs.git_oid }}" ]]; then
127+
echo "GitOID: ${{ steps.sigstore-attestation.outputs.git_oid }}"
128+
echo "Attestation succeeded with Sigstore and Archivista"
129+
else
130+
echo "No GitOID returned - this might be expected in PR builds without proper credentials"
131+
fi
132+
133+
- name: Check attestation file
134+
run: |
135+
if [[ -f "./sigstore-attestation.json" ]]; then
136+
echo "Sigstore attestation created successfully"
137+
jq . "./sigstore-attestation.json" | head -n 20
138+
else
139+
echo "Sigstore attestation file not found!"
140+
exit 1
141+
fi
142+
143+
- name: Upload sigstore attestation as artifact
144+
uses: actions/upload-artifact@v4
145+
with:
146+
name: sigstore-attestation
147+
path: ./sigstore-attestation.json
148+
149+
test-direct-command:
150+
runs-on: ubuntu-latest
151+
steps:
152+
- name: Checkout repository
153+
uses: actions/checkout@v3
60154

61-
- name: Run input forwarding test
155+
- name: Setup Node.js
156+
uses: actions/setup-node@v3
157+
with:
158+
node-version: '16'
159+
160+
- name: Install dependencies
161+
run: npm ci
162+
163+
- name: Test direct command
164+
id: direct-command
62165
uses: ./
63-
id: input-test
64166
with:
65-
action-ref: "actions/[email protected]"
66-
who-to-greet: "Input Forwarding"
67-
step: "input-forwarding"
167+
# Direct command to run
168+
command: "echo hello > hello.txt"
169+
170+
# Witness configuration
171+
step: "direct-command"
68172
attestations: "command environment"
69-
outfile: "./input-forward.json"
173+
outfile: "./direct-command.json"
174+
175+
- name: Check command output
176+
run: |
177+
if [ -f "hello.txt" ]; then
178+
echo "Command output:"
179+
cat hello.txt
180+
else
181+
echo "Command output file not found!"
182+
exit 1
183+
fi
70184
71-
- name: Verify input forwarding
185+
- name: Check attestation file
72186
run: |
73-
if [[ -f "./input-forward.json" ]]; then
74-
echo "Input forwarding attestation created successfully"
75-
jq . "./input-forward.json" | head -n 20
187+
if [[ -f "./direct-command.json" ]]; then
188+
echo "Direct command attestation created successfully"
189+
jq . "./direct-command.json" | head -n 20
76190
else
77-
echo "Input forwarding attestation file not found!"
191+
echo "Direct command attestation file not found!"
78192
exit 1
79193
fi

0 commit comments

Comments
 (0)