US08-05: Automate Container Deployment Acceptance (#100)
This commit was merged in pull request #100.
This commit is contained in:
@@ -49,3 +49,55 @@ jobs:
|
||||
|
||||
- name: Application suite
|
||||
run: work_item/scripts/python -m pytest tests -q
|
||||
|
||||
# The deployed container, verified the way the host application is (US08-05). It
|
||||
# runs on `main` only — a pull request has nothing published to upgrade *from*, and
|
||||
# building two images per push would pay for that on every commit. Deploy waits for
|
||||
# this whole workflow, so a red container gate is a deploy that does not happen.
|
||||
container:
|
||||
if: gitea.event_name == 'push'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
# The upgrade journey builds the previous commit's tree when no published
|
||||
# image is named, so the history has to be there.
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 2
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.12'
|
||||
|
||||
- name: Install the application and its test dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
python -m pip install -e '.[test]'
|
||||
python -m playwright install --with-deps chromium
|
||||
|
||||
- name: Container acceptance gate
|
||||
# One command: it builds the image, provisions the composition against a
|
||||
# temporary fixture library and an isolated volume, runs the phase_h journeys,
|
||||
# destroys the stack, and writes the evidence. Any skipped check fails it.
|
||||
env:
|
||||
# The fixture libraries are bind-mounted into the containers, so this path
|
||||
# has to be one the Docker daemon can see. On a runner that talks to a
|
||||
# sibling daemon, point it at a shared host path instead of the workspace —
|
||||
# an unshared path arrives as an empty mount and the journeys fail on the
|
||||
# scan, which is the symptom to recognise.
|
||||
PHOTO_PIPELINE_DATA_DIR: ${{ gitea.workspace }}/gate-data
|
||||
PHOTO_PIPELINE_LIBRARY_ROOTS: ${{ gitea.workspace }}/gate-library
|
||||
PHOTO_PIPELINE_TEST_MOUNT_BASE: ${{ gitea.workspace }}/gate-mounts
|
||||
run: |
|
||||
mkdir -p "$PHOTO_PIPELINE_LIBRARY_ROOTS" "$PHOTO_PIPELINE_TEST_MOUNT_BASE"
|
||||
python -m photo_pipeline container-gate --output gate-evidence
|
||||
|
||||
- name: Keep the evidence
|
||||
# Retained per run, and retained on failure especially: the logs are the only
|
||||
# account of what the containers did.
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: container-gate-${{ gitea.sha }}
|
||||
path: gate-evidence
|
||||
|
||||
Reference in New Issue
Block a user