From c9832013bda2706c2da47eb96b1744a8f2a049b0 Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Sun, 16 Feb 2025 10:14:18 +0000 Subject: [PATCH 1/8] Split CI into 6 separate jobs --- .github/workflows/check.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 5d0b453..bb0ecc4 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -4,10 +4,20 @@ on: [push, pull_request] jobs: check: - name: run checks + strategy: + fail-fast: false + matrix: + tox-filter: + - "py3.8" + - "py3.9" + - "py3.10" + - "py3.11" + - "py3.12" + - "py3.13" + name: run checks ${{ matrix.tox-filter }} runs-on: ubuntu-latest steps: - name: checkout code uses: actions/checkout@v2 - name: run checks - run: docker compose run --rm django-pg-zero-downtime-migrations-tests tox + run: docker compose run --rm django-pg-zero-downtime-migrations-tests tox -f ${{ matrix.tox-filter }} From eaf17c960e634f4c1953033c05dd7d03b30e8f4c Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Sun, 16 Feb 2025 10:21:20 +0000 Subject: [PATCH 2/8] Split CI build/pull & run into separate steps --- .github/workflows/check.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index bb0ecc4..53fdea6 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -19,5 +19,9 @@ jobs: steps: - name: checkout code uses: actions/checkout@v2 + - name: build and pull images + run: | + docker compose build + docker compose pull --quiet - name: run checks run: docker compose run --rm django-pg-zero-downtime-migrations-tests tox -f ${{ matrix.tox-filter }} From e81804e4f98fe948ea2644b63e8af3b088ea0f4a Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Tue, 18 Feb 2025 18:22:46 +0000 Subject: [PATCH 3/8] Separate build and push in 2 jobs --- .github/workflows/check.yml | 18 ++++++++++++++---- docker-compose.yml | 1 + 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 53fdea6..bd4ca22 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -3,7 +3,19 @@ name: Check on: [push, pull_request] jobs: + build: + runs-on: ubuntu-latest + steps: + - name: checkout code + uses: actions/checkout@v2 + - name: build image + run: docker compose build + - name: push image + run: docker compose push + check: + needs: + - build strategy: fail-fast: false matrix: @@ -19,9 +31,7 @@ jobs: steps: - name: checkout code uses: actions/checkout@v2 - - name: build and pull images - run: | - docker compose build - docker compose pull --quiet + - name: pull images + run: docker compose pull --quiet - name: run checks run: docker compose run --rm django-pg-zero-downtime-migrations-tests tox -f ${{ matrix.tox-filter }} diff --git a/docker-compose.yml b/docker-compose.yml index 17a584a..c154ccc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -64,6 +64,7 @@ services: - ./docker_postgres_init.sql:/docker-entrypoint-initdb.d/docker_postgres_init.sql django-pg-zero-downtime-migrations-tests: + image: ghcr.io/browniebroke/django-pg-zero-downtime-migrations:latest build: . depends_on: - pg17 From 469390cc2133bb8e23bdb7454f8e9aebbe68f815 Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Tue, 18 Feb 2025 18:24:14 +0000 Subject: [PATCH 4/8] Add docker build cache --- docker-compose.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index c154ccc..41830c0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -65,7 +65,11 @@ services: django-pg-zero-downtime-migrations-tests: image: ghcr.io/browniebroke/django-pg-zero-downtime-migrations:latest - build: . + build: + context: . + dockerfile: Dockerfile + cache_from: + - ghcr.io/browniebroke/django-pg-zero-downtime-migrations:latest depends_on: - pg17 - pg16 From a1ea454b34b7305d492f50955ecfbe8dd1376714 Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Tue, 18 Feb 2025 18:31:34 +0000 Subject: [PATCH 5/8] Build and push using official actions --- .github/workflows/check.yml | 22 ++++++++++++++++++---- docker-compose.yml | 6 +----- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index bd4ca22..2f84ec8 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -8,10 +8,24 @@ jobs: steps: - name: checkout code uses: actions/checkout@v2 - - name: build image - run: docker compose build - - name: push image - run: docker compose push + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build and push + uses: docker/build-push-action@v6 + with: + platforms: linux/amd64 + push: true + tags: | + ghcr.io/${{ github.repository_owner }}/django-pg-zero-downtime-migrations:latest check: needs: diff --git a/docker-compose.yml b/docker-compose.yml index 41830c0..c154ccc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -65,11 +65,7 @@ services: django-pg-zero-downtime-migrations-tests: image: ghcr.io/browniebroke/django-pg-zero-downtime-migrations:latest - build: - context: . - dockerfile: Dockerfile - cache_from: - - ghcr.io/browniebroke/django-pg-zero-downtime-migrations:latest + build: . depends_on: - pg17 - pg16 From f2982abb92f8203980b37055bc680b4a325661c1 Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Tue, 18 Feb 2025 18:45:26 +0000 Subject: [PATCH 6/8] Bypass GH container registry and use upload/download-artifact --- .github/workflows/check.yml | 34 ++++++++++++++++++++++------------ docker-compose.yml | 2 +- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 2f84ec8..2c70435 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -9,23 +9,20 @@ jobs: - name: checkout code uses: actions/checkout@v2 - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build and push uses: docker/build-push-action@v6 with: - platforms: linux/amd64 - push: true - tags: | - ghcr.io/${{ github.repository_owner }}/django-pg-zero-downtime-migrations:latest + tags: django-pg-zero-downtime-migrations:latest + outputs: type=docker,dest=${{ runner.temp }}/main-image.tar + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: main-image + path: ${{ runner.temp }}/main-image.tar check: needs: @@ -45,7 +42,20 @@ jobs: steps: - name: checkout code uses: actions/checkout@v2 - - name: pull images + + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: main-image + path: ${{ runner.temp }} + + - name: Load image + run: | + docker load --input ${{ runner.temp }}/main-image.tar + docker image ls -a + + - name: Pull DB images run: docker compose pull --quiet + - name: run checks run: docker compose run --rm django-pg-zero-downtime-migrations-tests tox -f ${{ matrix.tox-filter }} diff --git a/docker-compose.yml b/docker-compose.yml index c154ccc..acad19e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -64,7 +64,7 @@ services: - ./docker_postgres_init.sql:/docker-entrypoint-initdb.d/docker_postgres_init.sql django-pg-zero-downtime-migrations-tests: - image: ghcr.io/browniebroke/django-pg-zero-downtime-migrations:latest + image: django-pg-zero-downtime-migrations:latest build: . depends_on: - pg17 From 417c665b100818862ee0957bcc0fcb8db0031ecc Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Tue, 18 Feb 2025 18:52:33 +0000 Subject: [PATCH 7/8] Only pull missing images --- .github/workflows/check.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 2c70435..0aa59c5 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -18,7 +18,7 @@ jobs: tags: django-pg-zero-downtime-migrations:latest outputs: type=docker,dest=${{ runner.temp }}/main-image.tar - - name: Upload artifact + - name: Upload image as artifact uses: actions/upload-artifact@v4 with: name: main-image @@ -43,7 +43,7 @@ jobs: - name: checkout code uses: actions/checkout@v2 - - name: Download artifact + - name: Download built image uses: actions/download-artifact@v4 with: name: main-image @@ -55,7 +55,7 @@ jobs: docker image ls -a - name: Pull DB images - run: docker compose pull --quiet + run: docker compose pull --quiet --policy missing - name: run checks run: docker compose run --rm django-pg-zero-downtime-migrations-tests tox -f ${{ matrix.tox-filter }} From cd262715737f63a436da5215b6f6428d30919105 Mon Sep 17 00:00:00 2001 From: Bruno Alla Date: Tue, 18 Feb 2025 19:00:01 +0000 Subject: [PATCH 8/8] Revert back to GH container registry --- .github/workflows/check.yml | 35 ++++++++++++----------------------- docker-compose.yml | 2 +- 2 files changed, 13 insertions(+), 24 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 0aa59c5..bbfbe39 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -9,20 +9,22 @@ jobs: - name: checkout code uses: actions/checkout@v2 + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build and push uses: docker/build-push-action@v6 with: - tags: django-pg-zero-downtime-migrations:latest - outputs: type=docker,dest=${{ runner.temp }}/main-image.tar - - - name: Upload image as artifact - uses: actions/upload-artifact@v4 - with: - name: main-image - path: ${{ runner.temp }}/main-image.tar + push: true + tags: | + ghcr.io/${{ github.repository_owner }}/django-pg-zero-downtime-migrations:latest check: needs: @@ -42,20 +44,7 @@ jobs: steps: - name: checkout code uses: actions/checkout@v2 - - - name: Download built image - uses: actions/download-artifact@v4 - with: - name: main-image - path: ${{ runner.temp }} - - - name: Load image - run: | - docker load --input ${{ runner.temp }}/main-image.tar - docker image ls -a - - - name: Pull DB images - run: docker compose pull --quiet --policy missing - + - name: pull images + run: docker compose pull --quiet - name: run checks run: docker compose run --rm django-pg-zero-downtime-migrations-tests tox -f ${{ matrix.tox-filter }} diff --git a/docker-compose.yml b/docker-compose.yml index acad19e..cfd370f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -64,7 +64,7 @@ services: - ./docker_postgres_init.sql:/docker-entrypoint-initdb.d/docker_postgres_init.sql django-pg-zero-downtime-migrations-tests: - image: django-pg-zero-downtime-migrations:latest + image: ghcr.io/${GITHUB_REPOSITORY_OWNER:-tbicr}/django-pg-zero-downtime-migrations:latest build: . depends_on: - pg17