Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,14 @@ jobs:
go-version-file: "go.mod"
cache: false

- name: Build multi-arch release artifacts
- name: Build amd64 release artifacts
env:
GOARCH: amd64
run: make release

- name: Build arm64 release artifacts
env:
GOARCH: arm64
run: make release

- name: Upload artifacts
Expand Down
54 changes: 24 additions & 30 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ RELEASE_VERSION := $(shell git describe --all | cut -d/ -f2)
RELEASE_REVISION := $(shell git rev-parse --short HEAD )
BUILDINFO_PKG ?= go.opentelemetry.io/obi/pkg/buildinfo
TEST_OUTPUT ?= ./testoutput
RELEASE_DIR ?= ./dist

IMG_REGISTRY ?= docker.io
# Set your registry username. CI will set 'otel' but you mustn't use it for manual pushing.
Expand Down Expand Up @@ -529,47 +530,40 @@ artifact: docker-generate compile compile-cache java-docker-build
tar -C $$STAGING_DIR -czf bin/obi-$(RELEASE_VERSION)-$(GOOS)-$(GOARCH).tar.gz $(CMD) $(CACHE_CMD) $(JAVA_AGENT) LICENSE NOTICE NOTICES

.PHONY: release
release: clean-release-dir
@echo "### Building multi-architecture release artifacts"
$(MAKE) artifact GOARCH=amd64
$(MAKE) artifact GOARCH=arm64
@echo "### Moving artifacts to dist/ directory"
mkdir -p dist
mv bin/obi-$(RELEASE_VERSION)-$(GOOS)-amd64.tar.gz dist/
mv bin/obi-$(RELEASE_VERSION)-$(GOOS)-arm64.tar.gz dist/
@echo "### Verifying archive contents"
@for arch in amd64 arm64; do \
echo "Verifying obi-$(RELEASE_VERSION)-$(GOOS)-$$arch.tar.gz..."; \
mkdir -p dist/verify-$$arch; \
tar -xzf dist/obi-$(RELEASE_VERSION)-$(GOOS)-$$arch.tar.gz -C dist/verify-$$arch; \
if [ ! -f dist/verify-$$arch/$(CMD) ]; then echo "ERROR: $(CMD) binary missing in $$arch archive"; exit 1; fi; \
if [ ! -f dist/verify-$$arch/$(CACHE_CMD) ]; then echo "ERROR: $(CACHE_CMD) binary missing in $$arch archive"; exit 1; fi; \
if [ ! -f dist/verify-$$arch/$(JAVA_AGENT) ]; then echo "ERROR: $(JAVA_AGENT) missing in $$arch archive"; exit 1; fi; \
if [ ! -f dist/verify-$$arch/LICENSE ]; then echo "ERROR: LICENSE missing in $$arch archive"; exit 1; fi; \
if [ ! -f dist/verify-$$arch/NOTICE ]; then echo "ERROR: NOTICE missing in $$arch archive"; exit 1; fi; \
if [ ! -d dist/verify-$$arch/NOTICES ]; then echo "ERROR: NOTICES directory missing in $$arch archive"; exit 1; fi; \
if [ ! -x dist/verify-$$arch/$(CMD) ]; then echo "ERROR: $(CMD) binary not executable in $$arch archive"; exit 1; fi; \
if [ ! -x dist/verify-$$arch/$(CACHE_CMD) ]; then echo "ERROR: $(CACHE_CMD) binary not executable in $$arch archive"; exit 1; fi; \
echo "✓ Archive $$arch verified successfully"; \
rm -rf dist/verify-$$arch; \
done
release: artifact
@echo "### Moving artifacts to $(RELEASE_DIR) directory"
mkdir -p $(RELEASE_DIR)
mv bin/obi-$(RELEASE_VERSION)-$(GOOS)-$(GOARCH).tar.gz $(RELEASE_DIR)/
@echo "Verifying obi-$(RELEASE_VERSION)-$(GOOS)-$(GOARCH).tar.gz..."
@mkdir -p $(RELEASE_DIR)/verify-$(GOARCH)
@tar -xzf $(RELEASE_DIR)/obi-$(RELEASE_VERSION)-$(GOOS)-$(GOARCH).tar.gz -C $(RELEASE_DIR)/verify-$(GOARCH)
@if [ ! -f $(RELEASE_DIR)/verify-$(GOARCH)/$(CMD) ]; then echo "ERROR: $(CMD) binary missing in $(GOARCH) archive"; exit 1; fi
@if [ ! -f $(RELEASE_DIR)/verify-$(GOARCH)/$(CACHE_CMD) ]; then echo "ERROR: $(CACHE_CMD) binary missing in $(GOARCH) archive"; exit 1; fi
@if [ ! -f $(RELEASE_DIR)/verify-$(GOARCH)/$(JAVA_AGENT) ]; then echo "ERROR: $(JAVA_AGENT) missing in $(GOARCH) archive"; exit 1; fi
@if [ ! -f $(RELEASE_DIR)/verify-$(GOARCH)/LICENSE ]; then echo "ERROR: LICENSE missing in $(GOARCH) archive"; exit 1; fi
@if [ ! -f $(RELEASE_DIR)/verify-$(GOARCH)/NOTICE ]; then echo "ERROR: NOTICE missing in $(GOARCH) archive"; exit 1; fi
@if [ ! -d $(RELEASE_DIR)/verify-$(GOARCH)/NOTICES ]; then echo "ERROR: NOTICES directory missing in $(GOARCH) archive"; exit 1; fi
@if [ ! -x $(RELEASE_DIR)/verify-$(GOARCH)/$(CMD) ]; then echo "ERROR: $(CMD) binary not executable in $(GOARCH) archive"; exit 1; fi
@if [ ! -x $(RELEASE_DIR)/verify-$(GOARCH)/$(CACHE_CMD) ]; then echo "ERROR: $(CACHE_CMD) binary not executable in $(GOARCH) archive"; exit 1; fi
@echo "✓ Archive $(GOARCH) verified successfully"
@rm -rf $(RELEASE_DIR)/verify-$(GOARCH)
@echo "### Generating checksums"
@if command -v sha256sum >/dev/null 2>&1; then \
cd dist && sha256sum obi-$(RELEASE_VERSION)-$(GOOS)-*.tar.gz > SHA256SUMS; \
cd $(RELEASE_DIR) && sha256sum obi-$(RELEASE_VERSION)-$(GOOS)-*.tar.gz > SHA256SUMS; \
elif command -v shasum >/dev/null 2>&1; then \
cd dist && shasum -a 256 obi-$(RELEASE_VERSION)-$(GOOS)-*.tar.gz > SHA256SUMS; \
cd $(RELEASE_DIR) && shasum -a 256 obi-$(RELEASE_VERSION)-$(GOOS)-*.tar.gz > SHA256SUMS; \
Comment thread
MrAlias marked this conversation as resolved.
else \
echo "ERROR: Neither sha256sum nor shasum found. Please install coreutils or use macOS builtin shasum."; \
exit 1; \
fi
cd dist && cp SHA256SUMS SHA256SUMS-$(RELEASE_VERSION)
@echo "### Release artifacts ready in dist/"
@ls -lh dist/
cd $(RELEASE_DIR) && cp SHA256SUMS SHA256SUMS-$(RELEASE_VERSION)
@echo "### Release artifacts ready in $(RELEASE_DIR)/"
@ls -lh $(RELEASE_DIR)/

.PHONY: clean-release-dir
clean-release-dir:
@echo "### Cleaning release directory"
rm -rf dist/
rm -rf $(RELEASE_DIR)/
rm -f bin/obi-*.tar.gz
rm -rf bin/LICENSE bin/NOTICE bin/NOTICES

Expand Down