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"
|
export PATH="$HOME/.local/bin:$PATH"
|
||||||
uv sync --group dev
|
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
|
- name: Run Swarm E2E tests
|
||||||
run: |
|
run: |
|
||||||
export PATH="$HOME/.local/bin:$PATH"
|
export PATH="$HOME/.local/bin:$PATH"
|
||||||
|
|
|
||||||
|
|
@ -60,14 +60,25 @@ _cloudflare_config_created = False
|
||||||
def ensure_haproxy_image():
|
def ensure_haproxy_image():
|
||||||
"""Build byjg/easy-haproxy:local from source at the start of the test session.
|
"""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,
|
If the image already exists (e.g. pre-built by a CI step), the build is
|
||||||
never a stale image left over from a previous session or docker compose run.
|
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).
|
Subsequent calls within the same session are no-ops (image already built).
|
||||||
"""
|
"""
|
||||||
global _swarm_image_built
|
global _swarm_image_built
|
||||||
if _swarm_image_built:
|
if _swarm_image_built:
|
||||||
return
|
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
|
project_root = BASE_DIR.parent
|
||||||
print("\n → Building byjg/easy-haproxy:local from source...")
|
print("\n → Building byjg/easy-haproxy:local from source...")
|
||||||
subprocess.run(
|
subprocess.run(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue