Add Docker build and cache cleanup steps in CI, prevent redundant builds in Swarm E2E tests
- Updated GitHub workflow to include Docker cache cleanup and image build steps. - Modified Swarm E2E test logic to skip Docker image build if it already exists, optimizing CI performance.
This commit is contained in:
parent
3fd0fe0d46
commit
3710b08995
2 changed files with 21 additions and 2 deletions
8
.github/workflows/build.yml
vendored
8
.github/workflows/build.yml
vendored
|
|
@ -148,6 +148,14 @@ jobs:
|
|||
export PATH="$HOME/.local/bin:$PATH"
|
||||
uv sync --group dev
|
||||
|
||||
- name: Clean Docker build cache
|
||||
run: docker builder prune -af
|
||||
|
||||
- name: Build Docker image
|
||||
env:
|
||||
DOCKER_BUILDKIT: "0"
|
||||
run: docker build -t byjg/easy-haproxy:local -f deploy/docker/Dockerfile .
|
||||
|
||||
- name: Run Swarm E2E tests
|
||||
run: |
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
|
|
|
|||
|
|
@ -60,14 +60,25 @@ _cloudflare_config_created = False
|
|||
def ensure_haproxy_image():
|
||||
"""Build byjg/easy-haproxy:local from source at the start of the test session.
|
||||
|
||||
Always builds on the first call so tests run against the current codebase,
|
||||
never a stale image left over from a previous session or docker compose run.
|
||||
If the image already exists (e.g. pre-built by a CI step), the build is
|
||||
skipped so that CI can control how/when the image is built without the
|
||||
pytest session re-triggering a potentially slow or hanging `docker build`.
|
||||
Subsequent calls within the same session are no-ops (image already built).
|
||||
"""
|
||||
global _swarm_image_built
|
||||
if _swarm_image_built:
|
||||
return
|
||||
|
||||
# Skip build if image already exists (e.g. pre-built in CI)
|
||||
inspect = subprocess.run(
|
||||
["docker", "image", "inspect", "byjg/easy-haproxy:local"],
|
||||
capture_output=True,
|
||||
)
|
||||
if inspect.returncode == 0:
|
||||
print("\n ✓ byjg/easy-haproxy:local already exists, skipping build")
|
||||
_swarm_image_built = True
|
||||
return
|
||||
|
||||
project_root = BASE_DIR.parent
|
||||
print("\n → Building byjg/easy-haproxy:local from source...")
|
||||
subprocess.run(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue