-
Notifications
You must be signed in to change notification settings - Fork 241
Expand file tree
/
Copy pathMakefile
More file actions
108 lines (86 loc) · 3.14 KB
/
Copy pathMakefile
File metadata and controls
108 lines (86 loc) · 3.14 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
NAME=koko
BUILDDIR=build
VERSION ?= Unknown
BuildTime := $(shell date -u '+%Y-%m-%d %I:%M:%S%p')
COMMIT := $(shell git rev-parse HEAD)
GOVERSION := $(shell go version)
CipherKey := $(shell head -c 100 /dev/urandom | base64 | head -c 32)
BASEPATH := $(shell pwd)
KOKOSRCFILE := $(BASEPATH)/cmd/koko/
GOOS := $(shell go env GOOS)
GOARCH := $(shell go env GOARCH)
LDFLAGS=-w -s
KOKOLDFLAGS+=-X 'main.Buildstamp=$(BuildTime)'
KOKOLDFLAGS+=-X 'main.Githash=$(COMMIT)'
KOKOLDFLAGS+=-X 'main.Goversion=$(GOVERSION)'
KOKOLDFLAGS+=-X 'main.Version=$(VERSION)'
KOKOLDFLAGS+=-X 'github.com/jumpserver/koko/pkg/config.CipherKey=$(CipherKey)'
KOKOBUILD=CGO_ENABLED=1 go build -trimpath -ldflags "$(KOKOLDFLAGS) ${LDFLAGS}"
define make_artifact_full
GOOS=$(1) GOARCH=$(2) $(KOKOBUILD) -o $(BUILDDIR)/$(NAME)-$(1)-$(2) $(KOKOSRCFILE)
mkdir -p $(BUILDDIR)/$(NAME)-$(VERSION)-$(1)-$(2)/locale/
cp $(BUILDDIR)/$(NAME)-$(1)-$(2) $(BUILDDIR)/$(NAME)-$(VERSION)-$(1)-$(2)/$(NAME)
cp README.md $(BUILDDIR)/$(NAME)-$(VERSION)-$(1)-$(2)/README.md
cp LICENSE $(BUILDDIR)/$(NAME)-$(VERSION)-$(1)-$(2)/LICENSE
cp config_example.yml $(BUILDDIR)/$(NAME)-$(VERSION)-$(1)-$(2)/config_example.yml
cp entrypoint.sh $(BUILDDIR)/$(NAME)-$(VERSION)-$(1)-$(2)/entrypoint.sh
cp utils/init-kubectl.sh $(BUILDDIR)/$(NAME)-$(VERSION)-$(1)-$(2)/init-kubectl.sh
cp -r locale/* $(BUILDDIR)/$(NAME)-$(VERSION)-$(1)-$(2)/locale/
cd $(BUILDDIR) && tar -czvf $(NAME)-$(VERSION)-$(1)-$(2).tar.gz $(NAME)-$(VERSION)-$(1)-$(2)
rm -rf $(BUILDDIR)/$(NAME)-$(VERSION)-$(1)-$(2) $(BUILDDIR)/$(NAME)-$(1)-$(2)
endef
.PHONY: build
build:
mkdir -p $(BUILDDIR)
GOARCH=$(GOARCH) GOOS=$(GOOS) $(KOKOBUILD) -o $(BUILDDIR)/$(NAME) $(KOKOSRCFILE)
all:
$(call make_artifact_full,darwin,arm64)
$(call make_artifact_full,linux,amd64)
$(call make_artifact_full,linux,arm64)
local:
$(call make_artifact_full,$(shell go env GOOS),$(shell go env GOARCH))
darwin-arm64:
$(call make_artifact_full,darwin,arm64)
linux-amd64:
$(call make_artifact_full,linux,amd64)
linux-arm64:
$(call make_artifact_full,linux,arm64)
.PHONY: docker
docker:
@echo "build docker images"
docker buildx build --build-arg VERSION=$(VERSION) -t jumpserver/koko:$(VERSION)-ce . --load
.PHONY: docker-ee
docker-ee:docker
@echo "build docker images"
docker buildx build --build-arg VERSION=$(VERSION) -t jumpserver/koko-ee:$(VERSION)-ce -f Dockerfile-ee . --load
.PHONY: clean
clean:
-rm -rf $(BUILDDIR)
.PHONY: libghostty-vt
libghostty-vt:
@./utils/setup-libghostty-vt.sh
.PHONY: usql
usql:
@./utils/setup-usql.sh
.PHONY: guacd
guacd:
docker compose -f docker-compose-guacd.yml up -d
.PHONY: run dev
run: guacd
run dev:
@cleanup() { \
status=$$?; \
trap - EXIT INT TERM; \
if [ "$@" = "run" ]; then \
docker compose -f docker-compose-guacd.yml down; \
fi; \
exit $$status; \
}; \
trap cleanup EXIT; \
trap 'exit 130' INT; \
trap 'exit 143' TERM; \
LIBGHOSTTY_VT_ROOT="$$(./utils/setup-libghostty-vt.sh)" || exit $$?; \
USQL_BIN_DIR="$$(./utils/setup-usql.sh)" || exit $$?; \
PATH="$${USQL_BIN_DIR}:$${PATH}" \
PKG_CONFIG_PATH="$${LIBGHOSTTY_VT_ROOT}/lib/pkgconfig$${PKG_CONFIG_PATH:+:$${PKG_CONFIG_PATH}}" \
CGO_ENABLED=1 go run ./cmd/koko/