Skip to content

Commit 7a2334c

Browse files
committed
FEATURE-ci-v3-integration: execute VM archive staging as separate commands
Exercise the actual FreeBSD staging step with a selected descriptor, preserving newlines so the VM receives the archive inputs. Behavioral RED/GREEN and actionlint pass; focused contract total is 100.
1 parent 29a849e commit 7a2334c

3 files changed

Lines changed: 17 additions & 2 deletions

File tree

‎.github/workflows/v3-release-acceptance.yml‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,9 @@ jobs:
220220
persist-credentials: false
221221
- name: Download immutable selected archive
222222
run: python3 scripts/run-v3-release-ci.py download --artifact-id "$SELECTED_ID" --digest "$SELECTED_DIGEST" --output "$RUNNER_TEMP/selected"
223-
- run: mkdir -p build cp -R "$RUNNER_TEMP/selected" build/ci-selected-input
223+
- run: |
224+
mkdir -p build
225+
cp -R "$RUNNER_TEMP/selected" build/ci-selected-input
224226
- uses: vmactions/freebsd-vm@c9f815bc7aa0d34c9fdd0619b034a32d6ca7b57e
225227
with:
226228
release: '14.3'

‎scripts/test-v3-ci-workflows.py‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,19 @@ def workflow(name):
1717

1818

1919
class CIWorkflows(unittest.TestCase):
20+
def test_freebsd_stages_selected_archive_for_vm_transfer(self):
21+
steps = workflow('v3-release-acceptance.yml')['jobs']['freebsd']['steps']
22+
run = next(step['run'] for step in steps if 'ci-selected-input' in step.get('run', ''))
23+
with tempfile.TemporaryDirectory() as directory:
24+
root = Path(directory)
25+
selected = root / 'runner' / 'selected'
26+
selected.mkdir(parents=True)
27+
(selected / 'selected.json').write_text('selected archive identity')
28+
result = subprocess.run(['bash', '-e', '-c', run], cwd=root,
29+
env=dict(os.environ, RUNNER_TEMP=str(root / 'runner')), capture_output=True, text=True)
30+
self.assertEqual(result.returncode, 0, result.stderr)
31+
self.assertEqual((root / 'build/ci-selected-input/selected.json').read_text(), 'selected archive identity')
32+
2033
def test_release_request_resolver_emits_structured_commit_and_version(self):
2134
steps = workflow('v3-release-acceptance.yml')['jobs']['prepare']['steps']
2235
run = next(step['run'] for step in steps if step.get('id') == 'request')

‎specs/tasks/FEATURE-ci-v3-integration.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ are unchanged and cannot replace fresh evidence.
2929

3030
Local verification: native TLS-off/on suites (239/270 tests, two documented
3131
nonlocal backend skips in each), all eleven sanitizer fuzz targets, genuine
32-
Doxygen/Graphviz, GCC QUIC replay and 99 focused CI/release/fuzz contracts passed.
32+
Doxygen/Graphviz, GCC QUIC replay and 100 focused CI/release/fuzz contracts passed.
3333
The fresh Linux installed attempt passed TLS-off but failed TLS-on public TLS at
3434
unprivileged TCP443 binding. Its unsuccessful receipt remains unchanged. A fresh
3535
focused public TLS run using the existing isolated network path passed all four

0 commit comments

Comments
 (0)