name: docker-ci on: push: tags: - "v*" jobs: docker-ci: runs-on: ubuntu-20.04 steps: - name: Checkout uses: actions/checkout@v2 - name: Generate build-args id: build-args run: | # Declare vars for internal use VERSION=$(git describe --abbrev=0 --tags) GIT_HEAD_COMMIT=$(git rev-parse --short HEAD) GIT_TAG_COMMIT=$(git rev-parse --short $VERSION) GIT_MODIFIED_1=$(git diff $GIT_HEAD_COMMIT $GIT_TAG_COMMIT --quiet && echo "" || echo ".dev") GIT_MODIFIED_2=$(git diff --quiet && echo "" || echo ".dirty") # Export to GH_ENV echo "GIT_LAST_TAG=$VERSION" >> $GITHUB_ENV echo "GIT_HEAD_COMMIT=$GIT_HEAD_COMMIT" >> $GITHUB_ENV echo "GIT_TAG_COMMIT=$GIT_TAG_COMMIT" >> $GITHUB_ENV echo "GIT_MODIFIED=$(echo "$GIT_MODIFIED_1""$GIT_MODIFIED_2")" >> $GITHUB_ENV echo "GIT_REPO=$(git config --get remote.origin.url)" >> $GITHUB_ENV echo "BUILD_DATE=$(git log -1 --format="%at" | xargs -I{} date -d @{} +%Y-%m-%dT%H:%M:%S)" >> $GITHUB_ENV - name: Docker meta id: meta uses: docker/metadata-action@v3 with: images: | quay.io/${{ github.repository }} docker.io/${{ github.repository }} tags: | type=semver,pattern={{raw}} flavor: | latest=false - name: Set up QEMU id: qemu uses: docker/setup-qemu-action@v1 with: platforms: arm64,arm - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v1 with: install: true - name: Inspect builder run: | echo "Name: ${{ steps.buildx.outputs.name }}" echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}" echo "Status: ${{ steps.buildx.outputs.status }}" echo "Flags: ${{ steps.buildx.outputs.flags }}" echo "Platforms: ${{ steps.buildx.outputs.platforms }}" - name: Login to quay.io Container Registry uses: docker/login-action@v1 with: registry: quay.io username: ${{ github.repository_owner }}+github password: ${{ secrets.BOT_QUAY_IO }} - name: Login to docker.io Container Registry uses: docker/login-action@v1 with: registry: docker.io username: ${{ secrets.USER_DOCKER_IO }} password: ${{ secrets.BOT_DOCKER_IO }} - name: Build and push id: build-release uses: docker/build-push-action@v2 with: file: Dockerfile context: . platforms: linux/amd64,linux/arm64,linux/arm push: true tags: ${{ steps.meta.outputs.tags }} build-args: | GIT_HEAD_COMMIT=${{ env.GIT_HEAD_COMMIT }} GIT_TAG_COMMIT=${{ env.GIT_TAG_COMMIT }} GIT_REPO=${{ env.GIT_REPO }} GIT_LAST_TAG=${{ env.GIT_LAST_TAG }} GIT_MODIFIED=${{ env.GIT_MODIFIED }} BUILD_DATE=${{ env.BUILD_DATE }} - name: Image digest run: echo ${{ steps.build-release.outputs.digest }}