Skip to content

Commit

Permalink
Merge pull request #1 from coderbirju/make-binaries-static
Browse files Browse the repository at this point in the history
fix: Add static binaries to release
  • Loading branch information
coderbirju committed Oct 2, 2024
2 parents a97a89a + 6057cc4 commit e64aa79
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 12 deletions.
23 changes: 13 additions & 10 deletions .github/workflows/release-automation.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
uses: "WyriHaximus/github-action-get-previous-tag@04e8485ecb6487243907e330d522ff60f02283ce" # v1.4.0
generate-artifacts:
needs: get-latest-tag
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
env:
# Set during setup.
RELEASE_TAG: ${{ needs.get-latest-tag.outputs.tag }}
Expand All @@ -32,33 +32,36 @@ jobs:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-tags: true
- uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
with:
go-version: ${{ env.GO_VERSION }}
cache: false
- name: 'Echo RELEASE_TAG ENV'
run: echo ${{ env.RELEASE_TAG }}
- name: Setup variables and release directories
run: |
export release_tag=${{ env.RELEASE_TAG }}
export release_version=${release_tag/v/} # Remove v from tag name
echo "DYNAMIC_BINARY_NAME=finch-daemon-${release_version}-linux-amd64.tar.gz" >> $GITHUB_ENV
echo "STATIC_BINARY_NAME=finch-daemon-${release_version}-linux-amd64-static.tar.gz" >> $GITHUB_ENV
mkdir release
- name: Install Go licenses
run: go install github.com/google/go-licenses@latest
- name: Create Third Party Licences File
run: make licenses
- name: setup static dependecies
run: |
sudo apt-get update
sudo apt-get install libc6-dev -f
- name: Create release binaries
run: make RELEASE_TAG=${{ env.RELEASE_TAG }} release
- name: Verify Release version
run: |
mkdir output
tar -xzf release/${{ env.DYNAMIC_BINARY_NAME }} -C ./output
BINARY_VERSION=$(./output/finch-daemon --version | grep -oP '\d+\.\d+\.\d+')
mkdir -p output/static output/dynamic
tar -xzf release/${{ env.DYNAMIC_BINARY_NAME }} -C ./output/dynamic
tar -xzf release/${{ env.STATIC_BINARY_NAME }} -C ./output/static
DYNAMIC_BINARY_VERSION=$(./output/dynamic/finch-daemon --version | grep -oP '\d+\.\d+\.\d+')
STATIC_BINARY_VERSION=$(./output/static/finch-daemon --version | grep -oP '\d+\.\d+\.\d+')
export release_tag=${{ env.RELEASE_TAG }}
export release_version=${release_tag/v/}
if ["$BINARY_VERSION" != "$release_version"]; then
if ["$STATIC_BINARY_VERSION" != "$release_version"] || ["$DYNAMIC_BINARY_VERSION" != "$release_version"]; then
echo "Version mismatch"
exit 1
fi
Expand Down Expand Up @@ -95,6 +98,6 @@ jobs:
tag_name: ${{ needs.generate-artifacts.outputs.release_tag }}
prerelease: false
generate_release_notes: false
files: |
files: |-
${{ needs.generate-artifacts.outputs.dynamic_binary_name }}
${{ needs.generate-artifacts.outputs.dynamic_binary_name }}.sha256sum
9 changes: 8 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,15 @@ build:
$(eval PACKAGE := github.com/runfinch/finch-daemon)
$(eval VERSION ?= $(shell git describe --match 'v[0-9]*' --dirty='.modified' --always --tags))
$(eval GITCOMMIT := $(shell git rev-parse HEAD)$(shell if ! git diff --no-ext-diff --quiet --exit-code; then echo .m; fi))
ifneq ($(STATIC),)
$(eval GO_BUILDTAGS := osusergo netgo)
$(eval LDFLAGS := "-X $(PACKAGE)/version.Version=$(VERSION) -X $(PACKAGE)/version.GitCommit=$(GITCOMMIT) -extldflags '-static'")
@echo "Building Static Binary"
else
@echo "Building Dynamic Binary"
$(eval LDFLAGS := "-X $(PACKAGE)/version.Version=$(VERSION) -X $(PACKAGE)/version.GitCommit=$(GITCOMMIT)")
GOOS=linux go build -ldflags $(LDFLAGS) -v -o $(BINARY) $(PACKAGE)/cmd/finch-daemon
endif
GOOS=linux go build $(if $(GO_BUILDTAGS), -tags "$(GO_BUILDTAGS)") -ldflags $(LDFLAGS) $(if $(STATIC), ) -v -o $(BINARY) $(PACKAGE)/cmd/finch-daemon

.PHONY: linux
linux:
Expand Down
9 changes: 9 additions & 0 deletions scripts/create-releases.sh
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ fi

release_version=${1/v/} # Remove v from tag name
dynamic_binary_name=finch-daemon-${release_version}-linux-${ARCH}.tar.gz
static_binary_name=finch-daemon-${release_version}-linux-${ARCH}-static.tar.gz

make build
cp "$LICENSE_FILE" "${OUT_DIR}"
Expand All @@ -62,6 +63,14 @@ tar -czvf "$RELEASE_DIR"/"$dynamic_binary_name" -- *
popd
rm -rf "{$OUT_DIR:?}"/*

STATIC=1 make build
cp "$LICENSE_FILE" "${OUT_DIR}"
pushd "$OUT_DIR"
tar -czvf "$RELEASE_DIR"/"$static_binary_name" -- *
popd
rm -rf "{$OUT_DIR:?}"/*

pushd "$RELEASE_DIR"
sha256sum "$dynamic_binary_name" > "$RELEASE_DIR"/"$dynamic_binary_name".sha256sum
sha256sum "$static_binary_name" > "$RELEASE_DIR"/"$static_binary_name".sha256sum
popd
2 changes: 1 addition & 1 deletion scripts/verify-release-artifacts.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ release_tag=$1
release_version=${release_tag/v/}

pushd "$release_dir" || exit 1
tarballs=("finch-daemon-${release_version}-linux-${arch}.tar.gz")
tarballs=("finch-daemon-${release_version}-linux-${arch}.tar.gz" "finch-daemon-${release_version}-linux-${arch}-static.tar.gz")
expected_contents=("finch-daemon" "THIRD_PARTY_LICENSES")
release_is_valid=true

Expand Down

0 comments on commit e64aa79

Please sign in to comment.