From 51615db230f9bc9853014aae38ed03c65327f1d7 Mon Sep 17 00:00:00 2001 From: Juansecu <43616657+Juansecu@users.noreply.github.com> Date: Wed, 15 May 2024 10:17:33 -0500 Subject: [PATCH] CD - Add GitHub Action to push Docker image to Docker Hub (#275) * CD - Add GitHub Action to push Docker image to Docker Hub * BUILD - Reduce size of image by using slim version of Debian * CI - Modify Push Docker Image action to build and push Docker image to linux/amd64 and linux/arm64 architectures --- .github/workflows/push-docker-image.yml | 38 +++++++++++++++++++++++++ Dockerfile | 4 +-- 2 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/push-docker-image.yml diff --git a/.github/workflows/push-docker-image.yml b/.github/workflows/push-docker-image.yml new file mode 100644 index 0000000..13c749c --- /dev/null +++ b/.github/workflows/push-docker-image.yml @@ -0,0 +1,38 @@ +name: Push Docker Image + +on: + release: + types: [published] + +jobs: + push-docker-image: + name: Push Docker Image + runs-on: ubuntu-latest + permissions: + contents: read + strategy: + matrix: + platforms: + - linux/amd64 + - linux/arm64 + steps: + - uses: actions/checkout@v4 + - name: Retrieve major version + uses: winterjung/split@v2 + id: split + with: + msg: ${{ github.ref_name }} + separator: . + - name: Log in to registry + uses: docker/login-action@v3 + with: + password: ${{ secrets.DOCKERHUB_TOKEN }} + username: ${{ secrets.DOCKERHUB_USERNAME }} + - name: Build and push the Docker image + uses: docker/build-push-action@v5 + with: + context: . + file: ./Dockerfile + platforms: ${{ matrix.platforms }} + push: true + tags: ${{ secrets.DOCKERHUB_REPOSITORY }}:${{ github.ref_name }},${{ secrets.DOCKERHUB_REPOSITORY }}:${{ steps.split.outputs._0 }},${{ secrets.DOCKERHUB_REPOSITORY }}:latest diff --git a/Dockerfile b/Dockerfile index 5038d8d..9e5eb52 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # build -FROM debian:latest as build +FROM debian:stable-slim as build WORKDIR /usr/src/app @@ -17,7 +17,7 @@ COPY Makefile CMakeLists.txt version.h.in ./ RUN make -j8 # prod -FROM debian:latest +FROM debian:stable-slim WORKDIR /usr/src/app