From df5f1a69f5054580ec5bd0c6674346c399cdc89f Mon Sep 17 00:00:00 2001 From: Zbigniew Malcherczyk Date: Mon, 18 Dec 2023 11:17:24 +0100 Subject: [PATCH] chore: improve docker release pipeline (#675) Co-authored-by: Lukasz Gornicki --- .github/workflows/release-docker.yml | 55 +++++++++++++++++++--------- Dockerfile | 6 ++- 2 files changed, 42 insertions(+), 19 deletions(-) diff --git a/.github/workflows/release-docker.yml b/.github/workflows/release-docker.yml index 24c62b9c7c4..21790e4bfb8 100644 --- a/.github/workflows/release-docker.yml +++ b/.github/workflows/release-docker.yml @@ -1,37 +1,58 @@ name: Release Docker Image -on: +on: release: - types: + types: - published + jobs: publish-docker: name: Generating Docker runs-on: ubuntu-latest steps: - - name: Checkout repository - uses: actions/checkout@v3 - name: Get version without v character id: version run: | - VERSION=${{github.event.release.tag_name}} + VERSION=${{ github.event.release.tag_name }} VERSION_WITHOUT_V=${VERSION:1} echo "value=${VERSION_WITHOUT_V}" >> $GITHUB_OUTPUT - - name: Release to Docker - run: | - echo ${{secrets.DOCKER_PASSWORD}} | docker login -u ${{secrets.DOCKER_USERNAME}} --password-stdin - npm run docker:build - docker tag asyncapi/cli:latest asyncapi/cli:${{ steps.version.outputs.value }} - docker push asyncapi/cli:${{ steps.version.outputs.value }} - docker push asyncapi/cli:latest - - - name : Sync README.md and Description to Docker Hub - uses: actions/checkout@master - + - name: Set Up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set Up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + # This workflow triggers on GitHub Release, but it may start before the npm package is published. + - name: Sleep for 30 sec + run: sleep 30s + + - name: Build Image + uses: docker/build-push-action@v4 + with: + push: true + load: false + build-args: | + ASYNCAPI_CLI_VERSION=${{ steps.version.outputs.value }} + tags: | + asyncapi/cli:${{ steps.version.outputs.value }} + asyncapi/cli:latest + platforms: linux/amd64,linux/arm64 + cache-from: type=gha + cache-to: type=gha + + - name: Sync README.md and Description to Docker Hub + uses: actions/checkout@v4.1.1 + - uses: meeDamian/sync-readme@v1.0.6 with: - user: ${{secrets.DOCKER_USERNAME}} + user: ${{ secrets.DOCKER_USERNAME }} pass: ${{ secrets.DOCKER_PASSWORD }} slug: asyncapi/cli description: CLI to work with your AsyncAPI files diff --git a/Dockerfile b/Dockerfile index 1e1ad3adc07..1e20d6aa50e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,7 @@ FROM node:16-alpine +ARG ASYNCAPI_CLI_VERSION=0.59.1 + # Create a non-root user RUN addgroup -S myuser && adduser -S myuser -G myuser @@ -16,9 +18,9 @@ RUN apk --update add git chromium && \ rm /var/cache/apk/* # Installing latest released npm package -RUN npm install --ignore-scripts -g @asyncapi/cli +RUN npm install --ignore-scripts -g @asyncapi/cli@"$ASYNCAPI_CLI_VERSION" # Switch to the non-root user USER myuser -ENTRYPOINT [ "asyncapi" ] \ No newline at end of file +ENTRYPOINT [ "asyncapi" ]