forked from bank-vaults/vault-env
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
130 lines (98 loc) · 3.22 KB
/
Makefile
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# A Self-Documenting Makefile: http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
export PATH := $(abspath bin/):${PATH}
##@ General
# Targets commented with ## will be visible in "make help" info.
# Comments marked with ##@ will be used as categories for a group of targets.
.PHONY: help
default: help
help: ## Display this help
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
##@ Development
.PHONY: up
up: ## Start development environment
docker compose up -d
.PHONY: down
down: ## Destroy development environment
docker compose down -v
##@ Build
.PHONY: build
build: ## Build binary
@mkdir -p build
go build -race -o build/vault-env .
.PHONY: container-image
container-image: ## Build container image
docker build .
.PHONY: binary-snapshot
binary-snapshot: ## Build binary snapshot
$(GORELEASER_BIN) release --rm-dist --skip-publish --snapshot
.PHONY: artifacts
artifacts: container-image binary-snapshot
artifacts: ## Build artifacts
##@ Checks
.PHONY: check
check: test lint ## Run lint checks and tests
.PHONY: test
test: ## Run tests
go test -race -v ./...
.PHONY: lint
lint: lint-go lint-docker lint-yaml
lint: ## Run linters
.PHONY: lint-go
lint-go:
$(GOLANGCI_LINT_BIN) run $(if ${CI},--out-format github-actions,)
.PHONY: lint-docker
lint-docker:
$(HADOLINT_BIN) Dockerfile
.PHONY: lint-yaml
lint-yaml:
$(YAMLLINT_BIN) $(if ${CI},-f github,) --no-warnings .
.PHONY: license-check
license-check: ## Run license check
$(LICENSEI_BIN) check
$(LICENSEI_BIN) header
.PHONY: fmt
fmt: ## Format code
$(GOLANGCI_LINT_BIN) run --fix
##@ Dependencies
deps: bin/golangci-lint bin/cosign bin/licensei bin/goreleaser
deps: ## Install dependencies
# Dependency versions
GOLANGCI_VERSION = 1.53.3
COSIGN_VERSION = 2.2.2
LICENSEI_VERSION = 0.8.0
GORELEASER_VERSION = 1.18.2
# Dependency binaries
GOLANGCI_LINT_BIN := golangci-lint
COSIGN_BIN := cosign
LICENSEI_BIN := licensei
GORELEASER_BIN := goreleaser
# TODO: add support for hadolint and yamllint dependencies
HADOLINT_BIN := hadolint
YAMLLINT_BIN := yamllint
# If we have "bin" dir, use those binaries instead
ifneq ($(wildcard ./bin/.),)
GOLANGCI_LINT_BIN := bin/$(GOLANGCI_LINT_BIN)
COSIGN_BIN := bin/$(COSIGN_BIN)
LICENSEI_BIN := bin/$(LICENSEI_BIN)
GORELEASER_BIN := bin/$(GORELEASER_BIN)
endif
bin/golangci-lint:
@mkdir -p bin
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | bash -s -- v${GOLANGCI_VERSION}
bin/licensei:
@mkdir -p bin
curl -sfL https://raw.githubusercontent.com/goph/licensei/master/install.sh | bash -s -- v${LICENSEI_VERSION}
bin/cosign:
@mkdir -p bin
@OS=$$(uname -s); \
if [ "$$OS" = "Linux" ]; then \
curl -sSfL https://github.com/sigstore/cosign/releases/download/v${COSIGN_VERSION}/cosign-linux-amd64 -o bin/cosign; \
elif [ "$$OS" = "Darwin" ]; then \
curl -sSfL https://github.com/sigstore/cosign/releases/download/v${COSIGN_VERSION}/cosign-darwin-arm64 -o bin/cosign; \
else \
echo "Unsupported OS"; \
exit 1; \
fi
@chmod +x bin/cosign
bin/goreleaser:
scripts/get-goreleaser.sh