mirror of
https://github.com/mikefarah/yq.git
synced 2024-11-14 07:08:06 +00:00
c46c1a7128
* build: use goreleaser to cross-compile binaries for all platforms and archs The main motivation behind it is because "gox" is unmaintained and archived and it does not support "linux/riscv64" as a target. Right now, goreleaser is only building the binaries, and I've tried to replicate the exact same way the old script does. In the future, if so desired, goreleaser could be used to further automate the build and release pipeline by creating the release in GitHub. * build: create binaries and OCI image for linux/riscv64
83 lines
3.4 KiB
YAML
83 lines
3.4 KiB
YAML
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@v4
|
|
|
|
- name: Set up QEMU
|
|
uses: docker/setup-qemu-action@v3
|
|
with:
|
|
platforms: all
|
|
|
|
- name: Set up Docker Buildx
|
|
id: buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
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,linux/riscv64"
|
|
|
|
echo "Building and pushing version ${IMAGE_VERSION} of image ${IMAGE_NAME}"
|
|
echo '${{ secrets.DOCKER_PASSWORD }}' | docker login -u '${{ secrets.DOCKER_USERNAME }}' --password-stdin
|
|
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 data file 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}" \
|
|
-t "${IMAGE_NAME}:4" \
|
|
-t "${IMAGE_NAME}:latest" \
|
|
.
|
|
|
|
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 data file 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" \
|
|
.
|