forked from cilium/tetragon
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile.cli
More file actions
57 lines (47 loc) · 1.94 KB
/
Makefile.cli
File metadata and controls
57 lines (47 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# SPDX-License-Identifier: Apache-2.0
# Copyright Authors of Tetragon
CLI_GO_BUILD = CGO_ENABLED=0 $(GO) build
# renovate: datasource=docker
GO_IMAGE = docker.io/library/golang:1.25.7-alpine@sha256:81d49e1de26fa223b9ae0b4d5a4065ff8176a7d80aa5ef0bd9f2eee430afe4d7
TARGET = tetra
RELEASE_FOLDER = release
# Avoid shooting yourself in the foot with rm in cli-clean or
# creating/overwriting files from the root folder
ifeq ($(strip $(RELEASE_FOLDER)),)
$(error RELEASE_FOLDER is not set or is empty)
endif
RELEASES := \
$(RELEASE_FOLDER)/$(TARGET)-darwin-arm64.tar.gz \
$(RELEASE_FOLDER)/$(TARGET)-darwin-amd64.tar.gz \
$(RELEASE_FOLDER)/$(TARGET)-linux-arm64.tar.gz \
$(RELEASE_FOLDER)/$(TARGET)-linux-amd64.tar.gz \
$(RELEASE_FOLDER)/$(TARGET)-windows-arm64.tar.gz \
$(RELEASE_FOLDER)/$(TARGET)-windows-amd64.tar.gz
RELEASE_UID ?= $(shell id -u)
RELEASE_GID ?= $(shell id -g)
##@ CLI
.PHONY: cli-release
cli-release: ## Compile tetra CLI release binaries with Docker
docker run \
--rm \
--workdir /tetragon \
--volume `pwd`:/tetragon $(GO_IMAGE) \
sh -c "apk add --no-cache make git setpriv && \
/bin/setpriv --reuid=$(RELEASE_UID) --regid=$(RELEASE_GID) --clear-groups \
make -j$$(nproc) GOCACHE=/tmp/cache cli-local-release VERSION=${VERSION}"
.PHONY: cli-local-release
cli-local-release: $(RELEASES) ## Compile tetra CLI release binaries locally
$(RELEASE_FOLDER)/$(TARGET)-%.tar.gz: cli-clean
@{ \
OS=$(word 1,$(subst -, ,$*)); \
ARCH=$(word 2,$(subst -, ,$*)); \
EXT=""; if [ "$$OS" = "windows" ]; then EXT=".exe"; fi; \
mkdir -p $(RELEASE_FOLDER)/$$OS/$$ARCH; \
echo "Building for $$OS/$$ARCH..."; \
env GOOS=$$OS GOARCH=$$ARCH $(CLI_GO_BUILD) -ldflags="$(GO_BUILD_LDFLAGS)" -o $(RELEASE_FOLDER)/$$OS/$$ARCH/$(TARGET)$$EXT ./cmd/tetra; \
tar -czf $@ -C $(RELEASE_FOLDER)/$$OS/$$ARCH $(TARGET)$$EXT; \
sha256sum $@ > $@.sha256sum; \
}
.PHONY: cli-clean
cli-clean: ## Clean CLI release binaries
rm -rf ./$(RELEASE_FOLDER)