diff --git a/.github/workflows/release-docker.yml b/.github/workflows/release-docker.yml index 02651069d..0439ed126 100644 --- a/.github/workflows/release-docker.yml +++ b/.github/workflows/release-docker.yml @@ -1,7 +1,7 @@ name: Release Docker Image -on: +on: release: - types: + types: - published jobs: @@ -10,24 +10,47 @@ jobs: name: Docker build and push runs-on: ubuntu-latest steps: - - name: Checkout repository - uses: actions/checkout@v2 - with: - ref: master - name: Get version without v character id: version run: | VERSION=${{github.event.release.tag_name}} VERSION_WITHOUT_V=${VERSION:1} - echo "::set-output name=value::$(echo $VERSION_WITHOUT_V)" - - name: Release to Docker - run: | - echo ${{secrets.DOCKER_PASSWORD}} | docker login -u ${{secrets.DOCKER_USERNAME}} --password-stdin - sleep 1m #docker image installs generator from npm, this sleep protects this step from any delays on npm side - npm run docker:build - docker tag asyncapi/generator:latest asyncapi/generator:${{ steps.version.outputs.value }} - docker push asyncapi/generator:${{ steps.version.outputs.value }} - docker push asyncapi/generator:latest + echo "value=${VERSION_WITHOUT_V}" >> $GITHUB_OUTPUT + + - 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 1s seconds + run: sleep 1s + - name: Build Image + uses: docker/build-push-action@v4 + with: + push: true + load: false + build-args: | + ASYNCAPI_GENERATOR_VERSION=${{ steps.version.outputs.value }} + tags: | + asyncapi/generator:${{ steps.version.outputs.value }} + asyncapi/generator:latest + platforms: linux/amd64,linux/arm64 + cache-from: type=gha + cache-to: type=gha + + - name: Update Docker Hub Readme + uses: meeDamian/sync-readme@v1.0.6 + with: + user: ${{ secrets.DOCKER_USERNAME }} + pass: ${{ secrets.DOCKER_PASSWORD }} + slug: asyncapi/generator + description: Use your AsyncAPI definition to generate literally anything. Markdown documentation, Node.js code, HTML documentation, anything! diff --git a/Dockerfile b/Dockerfile index e6bd013fa..6ca463966 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,5 @@ +ARG ASYNCAPI_GENERATOR_VERSION=1.10.9 + FROM node:14-alpine WORKDIR /app @@ -14,6 +16,6 @@ RUN apk --update add git chromium && \ rm /var/cache/apk/* # Installing latest released npm package -RUN npm install -g @asyncapi/generator +RUN npm install -g @asyncapi/generator@$ASYNCAPI_GENERATOR_VERSION ENTRYPOINT [ "ag" ]