name: build on: push: branches: 'master' tags: '*' paths: - '.github/workflows/build.yml' - 'Dockerfile' - 'entrypoint.sh' jobs: build: runs-on: ubuntu-latest steps: - name: Prepare id: prepare run: | if [[ $GITHUB_REF == refs/tags/* ]]; then TAG=${GITHUB_REF#refs/tags/} echo ::set-output name=tag_name::${TAG} echo ::set-output name=version::${TAG%-*} else echo ::set-output name=version::snapshot fi echo ::set-output name=build_date::$(date -u +'%Y-%m-%dT%H:%M:%SZ') echo ::set-output name=docker_platforms::linux/amd64,linux/arm64,linux/ppc64le,linux/s390x echo ::set-output name=docker_username::crazymax echo ::set-output name=docker_image::crazymax/jetbrains-license-server - # https://github.com/crazy-max/ghaction-docker-buildx name: Set up Docker Buildx uses: crazy-max/ghaction-docker-buildx@v1 with: version: latest - # https://github.com/actions/checkout name: Checkout uses: actions/checkout@v1 - name: Docker Buildx (no push) run: | docker buildx build --platform ${{ steps.prepare.outputs.docker_platforms }} \ --output "type=image,push=false" \ --build-arg "BUILD_DATE=${{ steps.prepare.outputs.build_date }}" \ --build-arg "VCS_REF=${GITHUB_SHA::8}" \ --build-arg "VERSION=${{ steps.prepare.outputs.version }}" \ --tag "${{ steps.prepare.outputs.docker_image }}:latest" \ --tag "${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}" \ --file Dockerfile . - name: Docker Login if: success() && startsWith(github.ref, 'refs/tags/') env: DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} run: | echo "${DOCKER_PASSWORD}" | docker login --username "${{ steps.prepare.outputs.docker_username }}" --password-stdin - name: Docker Buildx (push) if: success() && startsWith(github.ref, 'refs/tags/') run: | docker buildx build --platform ${{ steps.prepare.outputs.docker_platforms }} \ --output "type=image,push=true" \ --build-arg "BUILD_DATE=${{ steps.prepare.outputs.build_date }}" \ --build-arg "VCS_REF=${GITHUB_SHA::8}" \ --build-arg "VERSION=${{ steps.prepare.outputs.version }}" \ --tag "${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}" \ --tag "${{ steps.prepare.outputs.docker_image }}:latest" \ --file Dockerfile . - name: Docker Check Manifest if: always() && startsWith(github.ref, 'refs/tags/') run: | docker run --rm mplatform/mquery ${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }} - name: Clear if: always() && startsWith(github.ref, 'refs/tags/') run: | rm -f ${HOME}/.docker/config.json