From e17a3b90c583a03a6e51f518019078faece4974e Mon Sep 17 00:00:00 2001 From: Dmitriy Lukiyanchuk Date: Mon, 11 Mar 2024 14:53:24 +0300 Subject: [PATCH] Build and push image to DockerHub --- .github/workflows/build_and_push_image.yml | 64 ++++++++++++++++++++++ Dockerfile | 5 +- 2 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/build_and_push_image.yml diff --git a/.github/workflows/build_and_push_image.yml b/.github/workflows/build_and_push_image.yml new file mode 100644 index 0000000..45fb139 --- /dev/null +++ b/.github/workflows/build_and_push_image.yml @@ -0,0 +1,64 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +# GitHub recommends pinning actions to a commit SHA. +# To get a newer version, you will need to update the SHA. +# You can also reference a tag or branch, but the action may change without warning. + +name: Publish Docker image + +on: + release: + types: [published] + push: + branches: + - '**' +# FIXME + +jobs: + push_to_registry: + name: Push Docker image to Docker Hub + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Docker Hub + uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: sbermarkettech/grpc-wiremock + tags: | + type=semver,pattern={{version}} + type=sha + + - name: Export env for build-args + run: | + grep -v -E "^#.*|^$" .image-build-args | xargs -n1 >> $GITHUB_ENV + + - name: Build and push Docker image + uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 + with: + context: . + file: ./Dockerfile + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-args: | + GOLANG_IMAGE_REPO=${{ env.GOLANG_IMAGE_REPO }} + GOLANG_IMAGE_NAME=${{ env.GOLANG_IMAGE_NAME }} + GOLANG_IMAGE_TAG=${{ env.GOLANG_IMAGE_TAG }} + WIREMOCK_IMAGE_REPO=${{ env.WIREMOCK_IMAGE_REPO }} + WIREMOCK_IMAGE_NAME=${{ env.WIREMOCK_IMAGE_NAME }} + WIREMOCK_IMAGE_TAG=${{ env.WIREMOCK_IMAGE_TAG }} diff --git a/Dockerfile b/Dockerfile index a88eefe..858cce7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -108,5 +108,8 @@ RUN chown -R "${USER_UID}:${USER_UID}" ${SUPERVISORD_DIR} USER ${USERNAME} WORKDIR ${HOME} +LABEL org.opencontainers.image.source="https://github.com/SberMarket-Tech/grpc-wiremock" +LABEL org.opencontainers.image.description="WireMock for multiple APIs with support of gRPC and HTTP" +LABEL org.opencontainers.image.licenses="Apache 2.0" -ENTRYPOINT ["/scripts/init.sh"] \ No newline at end of file +ENTRYPOINT ["/scripts/init.sh"]