# Docker Hub CI/CD for Multi Arch Images... name: buildx on: pull_request: branches: - master - releases/* - actions push: branches: - master - releases/* - actions tags: jobs: buildx: runs-on: ubuntu-latest steps: - name: Prepare id: prepare run: | if [[ $GITHUB_REF == refs/tags/* ]]; then echo ::set-output name=version::${GITHUB_REF#refs/tags/v} 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/arm/v6,linux/arm/v7,linux/arm64,linux/386 - name: Checkout uses: actions/checkout@v1 - name: Set up Docker Buildx id: buildx uses: crazy-max/ghaction-docker-buildx@v1 with: version: latest - name: Available platforms run: echo ${{ steps.buildx.outputs.platforms }} - name: Run Buildx (Build only - Won't push if build fails...) 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 }}" \ --file Dockerfile . - name: Docker Login if: success() env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} run: | echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin - name: Run Buildx (Push to Docker Hub) 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 }}" \ --file Dockerfile . - name: Clear if: always() run: | rm -f ${HOME}/.docker/config.json