diff --git a/.github/workflows/build_and_push_image.yml b/.github/workflows/build_and_push_image.yml new file mode 100644 index 0000000..6023062 --- /dev/null +++ b/.github/workflows/build_and_push_image.yml @@ -0,0 +1,60 @@ +# 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] + +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: ${{ vars.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"] diff --git a/README.md b/README.md index 6963941..ead022b 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,11 @@ To develop golang code -d '{"uuid": "1234", "message": "foo"}' \ 127.0.0.1:3009 push_sender.PushSender/Notify ``` +## Release process +To release new version + +1. Create [new release on github](https://github.com/SberMarket-Tech/grpc-wiremock/releases/new) in semver format, i. e. `v1.1.4`. +2. [GitHub actions](https://github.com/SberMarket-Tech/grpc-wiremock/actions) will build docker image and upload it to [DockerHub SberMarket-Tech grpc-wiremock](https://hub.docker.com/r/sbermarkettech/grpc-wiremock). ### License **grpc-wiremock** is under the Apache License, Version 2.0. See the LICENSE file for details.