diff --git a/.github/workflows/docker-release-github-action.yml b/.github/workflows/docker-release-github-action.yml new file mode 100644 index 00000000..bba59f9e --- /dev/null +++ b/.github/workflows/docker-release-github-action.yml @@ -0,0 +1,63 @@ +name: Release Docker + +on: + release: + types: [released] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + publishDocker: + environment: dockerhub + env: + IMAGE_NAME: mikefarah/yq + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + with: + platforms: all + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v2 + with: + version: latest + + - name: Available platforms + run: echo ${{ steps.buildx.outputs.platforms }} && docker version + + - name: Build and push image + run: | + echo "GithubRef: ${GITHUB_REF}" + VERSION=${GITHUB_REF##*/} + echo "VERSION: ${VERSION}" + IMAGE_VERSION=${VERSION:1} + echo "IMAGE_VERSION: ${IMAGE_VERSION}" + + PLATFORMS="linux/amd64,linux/ppc64le,linux/arm64" + + echo "Building and pushing version ${IMAGE_VERSION} of image ${IMAGE_NAME}" + echo '${{ secrets.DOCKER_PASSWORD }}' | docker login -u '${{ secrets.DOCKER_USERNAME }}' --password-stdin + cd github-action + docker buildx build \ + --label "org.opencontainers.image.authors=https://github.com/mikefarah/yq/graphs/contributors" \ + --label "org.opencontainers.image.created=$(date --rfc-3339=seconds)" \ + --label "org.opencontainers.image.description=yq is a portable command-line YAML processor" \ + --label "org.opencontainers.image.documentation=https://mikefarah.gitbook.io/yq/" \ + --label "org.opencontainers.image.licenses=MIT" \ + --label "org.opencontainers.image.revision=$(git rev-parse HEAD)" \ + --label "org.opencontainers.image.source=https://github.com/mikefarah/yq" \ + --label "org.opencontainers.image.title=yq" \ + --label "org.opencontainers.image.url=https://mikefarah.gitbook.io/yq/" \ + --label "org.opencontainers.image.version=${IMAGE_VERSION}" \ + --platform "${PLATFORMS}" \ + --pull \ + --push \ + -t "${IMAGE_NAME}:${IMAGE_VERSION}-githubaction" \ + -t "${IMAGE_NAME}:4-githubaction" \ + -t "${IMAGE_NAME}:latest-githubaction" \ + .