# Bdd Container Update

Update the BDD test container image when its dependencies or runtime change.

- Repository: https://github.com/NVIDIA-AI-Blueprints/video-search-and-summarization (1959 stars)
- Category: Testing
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add NVIDIA-AI-Blueprints/video-search-and-summarization --skill bdd-container-update -g -a claude-code -y`
Codex: `npx skills add NVIDIA-AI-Blueprints/video-search-and-summarization --skill bdd-container-update -g -a codex -y`
Cursor: `npx skills add NVIDIA-AI-Blueprints/video-search-and-summarization --skill bdd-container-update -g -a cursor -y`
Gemini CLI: `npx skills add NVIDIA-AI-Blueprints/video-search-and-summarization --skill bdd-container-update -g -a gemini-cli -y`

## Description

Update the BDD test container image when its dependencies or runtime change. Determines version bump (major vs minor vs patch), rebuilds the Docker image, pushes to GitLab registry, and updates the image tag in start_test.sh. Test source (tests/, features/, scripts/, data/, conftest.py) is bind-mounted from the host repo at runtime, so pure test code changes do NOT require a container rebuild. Use only when files that the container bakes in are modified: Dockerfile, docker-entrypoint.sh, pyproject.toml, poetry.lock.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# BDD Test Container Update

The BDD test container runs `bdd_test` from
`<INTERNAL_REGISTRY>/bdd_tests:<TAG>`. Since the CI
runner bind-mounts the host repo's test source into `/app/`, the image only
needs to be rebuilt when the things it bakes in change.

## When to rebuild

**Rebuild required** -- files baked into the image:

- `test/bdd_tests/Dockerfile`
- `test/bdd_tests/docker-entrypoint.sh`
- `test/bdd_tests/pyproject.toml` (any change -- deps or pytest config)
- `test/bdd_tests/poetry.lock`
- `test/bdd_tests/test_videos/*` (sample clips baked to `/app/test_videos`)

> **Note on `test_videos/`:** the clip binaries are **gitignored** -- they are
> NOT in the repo, only baked into the published image. The pushed image is the
> source of truth. Before rebuilding you must repopulate
> `test/bdd_tests/test_videos/` from the current published image (or a backup);
> see `test/bdd_tests/test_videos/README.md`. A rebuild from a clean checkout
> without these files would bake an empty `/app/test_videos`.

**Rebuild NOT required** -- bind-mounted at runtime by
`cicd_files/docker-compose-test/start_test.sh`:

- `test/bdd_tests/tests/**`
- `test/bdd_tests/features/**`
- `test/bdd_tests/scripts/**`
- `test/bdd_tests/data/**`
- `test/bdd_tests/conftest.py`
- `test/bdd_tests/config.json`

If a change touches only files in the second list, stop here -- no container
work is needed and `start_test.sh` is unchanged.

## 1. Identify the current image tag

The image tag lives in `cicd_files/docker-compose-test/start_test.sh` inside
the `update_docker_compose()` function, on the line that sets the `test`
service image:

```
image: <INTERNAL_REGISTRY>/bdd_tests:v<MAJOR>.<MINOR>.<PATCH>_x86
```

Extract the current `MAJOR`, `MINOR`, and `PATCH` numbers.

## 2. Determine version bump

Classify the changes made under `test/bdd_tests/`:

The rest: https://github.com/NVIDIA-AI-Blueprints/video-search-and-summarization/blob/HEAD/services/vios/.cursor/skills/bdd-container-update/SKILL.md
