Skip to content

Commit

Permalink
build: use goreleaser for building cross-compiled binaries and add ri…
Browse files Browse the repository at this point in the history
…scv64 target (#2135)

* 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
  • Loading branch information
macabu committed Aug 20, 2024
1 parent bbdd974 commit c46c1a7
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 7 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/docker-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:
IMAGE_VERSION=${VERSION:1}
echo "IMAGE_VERSION: ${IMAGE_VERSION}"
PLATFORMS="linux/amd64,linux/ppc64le,linux/arm64"
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
Expand All @@ -60,7 +60,7 @@ jobs:
-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" \
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
- name: Cross compile
run: |
sudo apt-get install rhash -y
go install github.com/mitchellh/[email protected]
go install github.com/goreleaser/goreleaser/v2@latest
mkdir -p build
cp yq.1 build/yq.1
./scripts/xcompile.sh
Expand Down
46 changes: 46 additions & 0 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
version: 2

dist: build

builds:
- id: yq

binary: yq_{{ .Os }}_{{ .Arch }}

ldflags:
- -s -w

env:
- CGO_ENABLED=0

targets:
- darwin_amd64
- darwin_arm64
- freebsd_386
- freebsd_amd64
- freebsd_arm
- linux_386
- linux_amd64
- linux_arm
- linux_arm64
- linux_mips
- linux_mips64
- linux_mips64le
- linux_mipsle
- linux_ppc64
- linux_ppc64le
- linux_riscv64
- linux_s390x
- netbsd_386
- netbsd_amd64
- netbsd_arm
- openbsd_386
- openbsd_amd64
- windows_386
- windows_amd64

no_unique_dist_dir: true

release:
disable: true
skip_upload: true
17 changes: 13 additions & 4 deletions scripts/xcompile.sh
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
#!/bin/bash
set -e
# you may need to go install github.com/mitchellh/[email protected] first
echo $VERSION
CGO_ENABLED=0 gox -ldflags "-s -w ${LDFLAGS}" -output="build/yq_{{.OS}}_{{.Arch}}" --osarch="darwin/amd64 darwin/arm64 freebsd/386 freebsd/amd64 freebsd/arm linux/386 linux/amd64 linux/arm linux/arm64 linux/mips linux/mips64 linux/mips64le linux/mipsle linux/ppc64 linux/ppc64le linux/s390x netbsd/386 netbsd/amd64 netbsd/arm openbsd/386 openbsd/amd64 windows/386 windows/amd64"

set -eo pipefail

# You may need to go install github.com/goreleaser/goreleaser/v2@latest first
GORELEASER="goreleaser build --clean"
if [ -z "$CI" ]; then
GORELEASER+=" --snapshot"
fi

$GORELEASER

cd build

# Remove artifacts from goreleaser
rm artifacts.json config.yaml metadata.json

find . -executable -type f | xargs -I {} tar czvf {}.tar.gz {} yq.1 -C ../scripts install-man-page.sh
tar czvf yq_man_page_only.tar.gz yq.1 -C ../scripts install-man-page.sh

Expand Down
1 change: 1 addition & 0 deletions snap/snapcraft.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ architectures:
- build-on: armhf
- build-on: amd64
- build-on: i386
- build-on: riscv64
apps:
yq:
command: bin/yq
Expand Down

0 comments on commit c46c1a7

Please sign in to comment.