-
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMakefile
More file actions
82 lines (67 loc) · 4.14 KB
/
Makefile
File metadata and controls
82 lines (67 loc) · 4.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
.PHONY: help
SHELL := /bin/bash
VERSION=$(shell git describe --tags `git rev-list --tags --max-count=1`)
NOW=$(shell date +'%y-%m-%d_%H:%M:%S')
COMMIT_REF=$(shell git rev-parse --short HEAD)
BUILD_ARGS=-ldflags "-s -w -X github.com/timo-reymann/gitlab-ci-verify/internal/buildinfo.GitSha=$(COMMIT_REF) -X github.com/timo-reymann/gitlab-ci-verify/internal/buildinfo.Version=$(VERSION) -X github.com/timo-reymann/gitlab-ci-verify/internal/buildinfo.BuildTime=$(NOW)"
BIN_PREFIX="dist/gitlab-ci-verify_"
BIN_PREFIX_API_PROXY="dist/gitlab-ci-lint-api-proxy_"
clean: ## Cleanup artifacts
@rm -rf dist/
help: ## Display this help page
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[33m%-30s\033[0m %s\n", $$1, $$2}'
coverage: ## Run tests and measure coverage
@CGO_ENABLED=0 go test -covermode=count -coverprofile=/tmp/count.out -v ./...
test-coverage-report: coverage ## Run test and display coverage report in browser
@go generate cmd/gitlab-ci-lint-api-proxy/main.go && go tool cover -html=/tmp/count.out
save-coverage-report: coverage ## Save coverage report to coverage.html
@go tool cover -html=/tmp/count.out -o coverage.html
create-dist: ## Create dist folder if not already existent
@mkdir -p dist/
build-linux: create-dist ## Build binaries for linux
@CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o $(BIN_PREFIX)linux-amd64 $(BUILD_ARGS)
@CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o $(BIN_PREFIX)linux-arm64 $(BUILD_ARGS)
@go generate cmd/gitlab-ci-lint-api-proxy/main.go && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -tags embed_notice -o $(BIN_PREFIX_API_PROXY)linux-amd64 $(BUILD_ARGS) ./cmd/gitlab-ci-lint-api-proxy
@go generate cmd/gitlab-ci-lint-api-proxy/main.go && CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -tags embed_notice -o $(BIN_PREFIX_API_PROXY)linux-arm64 $(BUILD_ARGS) ./cmd/gitlab-ci-lint-api-proxy
build-windows: create-dist ## Build binaries for windows
@CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o $(BIN_PREFIX)windows-amd64.exe $(BUILD_ARGS)
build-darwin: create-dist ## Build binaries for macOS
@CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o $(BIN_PREFIX)darwin-amd64 $(BUILD_ARGS)
@CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o $(BIN_PREFIX)darwin-arm64 $(BUILD_ARGS)
create-checksums: ## Create checksums for binaries
@find ./dist -type f -exec sh -c 'sha256sum {} | cut -d " " -f 1 > {}.sha256' {} \;
build-docker: ## Build docker image based on the built linux builds in the dist folder
@docker buildx build --tag timoreymann/gitlab-ci-verify:latest \
--platform linux/amd64,linux/arm64 \
--build-arg BUILD_TIME="$(NOW)" \
--build-arg BUILD_VERSION="$(VERSION)" \
--build-arg BUILD_COMMIT_REF="$(COMMIT_REF)" \
--push .
@docker buildx build --tag timoreymann/gitlab-ci-verify:$(VERSION) \
--platform linux/amd64,linux/arm64 \
--build-arg BUILD_TIME="$(NOW)" \
--build-arg BUILD_VERSION="$(VERSION)" \
--build-arg BUILD_COMMIT_REF="$(COMMIT_REF)" \
--push .
@docker buildx build --tag timoreymann/gitlab-ci-lint-api-proxy:latest \
--file Dockerfile.ci-lint-api-proxy \
--platform linux/amd64,linux/arm64 \
--build-arg BUILD_TIME="$(NOW)" \
--build-arg BUILD_VERSION="$(VERSION)" \
--build-arg BUILD_COMMIT_REF="$(COMMIT_REF)" \
--push .
@docker buildx build --tag timoreymann/gitlab-ci-lint-api-proxy:$(VERSION) \
--file Dockerfile.ci-lint-api-proxy \
--platform linux/amd64,linux/arm64 \
--build-arg BUILD_TIME="$(NOW)" \
--build-arg BUILD_VERSION="$(VERSION)" \
--build-arg BUILD_COMMIT_REF="$(COMMIT_REF)" \
--push .
build: build-linux build-darwin build-windows ## Build binaries for all platform
integration-test: ## Run bats tests on the host
@go generate cmd/gitlab-ci-lint-api-proxy/main.go && CGO_ENABLED=0 go build -o /tmp/gitlab-ci-verify
@BATS_BASE_DIR=$(PWD)/integration-tests/tests BATS_INTEGRATION_REPO_ROOT=$(PWD)/integration-tests BATS_REPO_ROOT=$(PWD) BATS_GITLAB_CI_VERIFY_BIN=/tmp/gitlab-ci-verify npx bats --report-formatter junit --print-output-on-failure integration-tests/tests/$(BATS_TEST_SUITE)
preview-docs:
@python3 -m venv .venv
@./.venv/bin/python3 -m pip install -r requirements-docs.txt
@properdocs serve