From e370b7aba386f061acb7ca1727da6dca6c48f9d7 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 31 Jul 2024 09:09:15 -0300 Subject: [PATCH] feat: refactor docker build and release into its own workflow BREAKING CHANGE: update tag regex to match semver pattern `v[0-9]+.[0-9]+.[0-9]+` This change separates the concerns of PyPI release and Docker image release into two separate workflows. The original `release.yml` file has been renamed to `PyPI Release` and now only handles the PyPI package release. A new `docker-release.yml` file has been created to handle the Docker image build and push. Both workflows are now triggered on tags matching the semver pattern `v[0-9]+.[0-9]+.[0-9]+`, which corresponds to tags like `vX.Y.Z`. The Docker-related steps have been moved from the original workflow to the new Docker-specific workflow. This change ensures that both PyPI and Docker releases are triggered on the same semver-compliant tag pattern, while separating the concerns of the two release processes. --- .github/workflows/docker-release.yml | 50 ++++++++++++++++++++++++++++ .github/workflows/release.yml | 38 ++------------------- 2 files changed, 52 insertions(+), 36 deletions(-) create mode 100644 .github/workflows/docker-release.yml diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml new file mode 100644 index 000000000..b9268de91 --- /dev/null +++ b/.github/workflows/docker-release.yml @@ -0,0 +1,50 @@ +name: Docker Release + +on: + workflow_dispatch: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + +jobs: + docker_build_and_push: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to DockerHub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Build and push Docker images + uses: docker/build-push-action@v5 + with: + context: . + file: ./docker/Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: | + ${{ secrets.DOCKERHUB_USERNAME }}/aider:${{ github.ref_name }} + ${{ secrets.DOCKERHUB_USERNAME }}/aider:latest + target: aider + + - name: Build and push Docker full image + uses: docker/build-push-action@v5 + with: + context: . + file: ./docker/Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: | + ${{ secrets.DOCKERHUB_USERNAME }}/aider-full:${{ github.ref_name }} + ${{ secrets.DOCKERHUB_USERNAME }}/aider-full:latest + target: aider-full diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b3178b881..70ea3402e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,10 +1,10 @@ -name: Release +name: PyPI Release on: workflow_dispatch: push: tags: - - 'v*' + - 'v[0-9]+.[0-9]+.[0-9]+' jobs: build_and_publish: @@ -30,37 +30,3 @@ jobs: run: | python setup.py sdist bdist_wheel twine upload dist/* - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Login to DockerHub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - name: Build and push Docker images - uses: docker/build-push-action@v5 - with: - context: . - file: ./docker/Dockerfile - platforms: linux/amd64,linux/arm64 - push: true - tags: | - ${{ secrets.DOCKERHUB_USERNAME }}/aider:${{ github.ref_name }} - ${{ secrets.DOCKERHUB_USERNAME }}/aider:latest - target: aider - - - name: Build and push Docker full image - uses: docker/build-push-action@v5 - with: - context: . - file: ./docker/Dockerfile - platforms: linux/amd64,linux/arm64 - push: true - tags: | - ${{ secrets.DOCKERHUB_USERNAME }}/aider-full:${{ github.ref_name }} - ${{ secrets.DOCKERHUB_USERNAME }}/aider-full:latest - target: aider-full