File: Makefile

package info (click to toggle)
goss 0.4.9-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,700 kB
  • sloc: sh: 984; makefile: 139
file content (172 lines) | stat: -rw-r--r-- 4,887 bytes parent folder | download | duplicates (2)
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
export GO15VENDOREXPERIMENT=1

exe = github.com/goss-org/goss/cmd/goss
pkgs = $(shell ./novendor.sh)
cmd = goss
GO111MODULE=on
GO_FILES = $(shell git ls-files -- '*.go' ':!:*vendor*_test.go')
VENV := $(shell echo $${VIRTUAL_ENV-.venv})
PYTHON := $(VENV)/bin/python
DOCS_DEPS := $(VENV)/.docs.dependencies

.PHONY: all build install test release bench fmt lint vet test-int-all gen centos7 wheezy trusty alpine3 arch test-int32 centos7-32 wheezy-32 trusty-32 alpine3-32 arch-32

all: test-short-all test-int-all dgoss-sha256 dcgoss-sha256 kgoss-sha256

test-short-all: fmt lint vet test

install: release/goss-linux-amd64
	$(info INFO: Starting build $@)
	cp release/$(cmd)-linux-amd64 $(GOPATH)/bin/goss

test:
	$(info INFO: Starting build $@)
	./ci/go-test.sh

cov:
	go test -coverpkg=./... -coverprofile=c.out ./...
	# go tool cover -func ./c.out

funcov:
	go test -coverpkg=./... -coverprofile=c.out ./...
	go tool cover -func ./c.out

htmlcov:
	go test -v -coverpkg=./... -coverprofile=c.out ./...
	go tool cover -html ./c.out

lint:
	$(info INFO: Starting build $@)
	go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.59
	golangci-lint run --timeout 5m $(pkgs) || true

vet:
	$(info INFO: Starting build $@)
	go vet $(pkgs) || true

fmt:
	$(info INFO: Starting build $@)
	./ci/go-fmt.sh

bench:
	$(info INFO: Starting build $@)
	go test -bench=.

test-int-validate-%: release/goss-%
	$(info INFO: Starting build $@)
	./integration-tests/run-validate-tests.sh $*

test-int-serve-%: release/goss-%
	$(info INFO: Starting build $@)
	./integration-tests/run-serve-tests.sh $*

release/goss-%: $(GO_FILES)
	./release-build.sh $*

release:
	$(MAKE) clean
	$(MAKE) build

build: release/goss-darwin-amd64 release/goss-darwin-arm64 release/goss-linux-386 release/goss-linux-amd64 release/goss-linux-arm release/goss-linux-arm64 release/goss-linux-s390x release/goss-windows-amd64

gen:
	$(info INFO: Starting build $@)
	go generate -tags genny $(pkgs)

clean:
	$(info INFO: Starting build $@)
	rm -rf ./release
	rm -rf ./site
	rm -rf ${VENV}

build-images:
	$(info INFO: Starting build $@)
	development/build_images.sh

push-images:
	$(info INFO: Starting build $@)
	development/push_images.sh

# Update the matcher test golden files
update-matcher-tests:
	go test -v -run '^TestMatchers' . -update

test-darwin-all: test-short-all test-int-darwin-all
# linux _does_ have the docker-style testing, but does _not_ currently have the same style integration tests darwin+windows do, _because_ of the docker-style testing.
test-linux-all: test-short-all test-int-64 test-int-32
test-windows-all: test-short-all test-int-windows-all

test-int-64: rockylinux9 wheezy trusty alpine3 arch test-int-serve-linux-amd64
test-int-32: rockylinux9-32 wheezy-32 trusty-32 alpine3-32 arch-32
test-int-darwin-all: test-int-validate-darwin-amd64 test-int-serve-darwin-amd64
test-int-windows-all: test-int-validate-windows-amd64 test-int-serve-windows-amd64
test-int-all: test-int-32 test-int-64

centos7-32: build
	$(info INFO: Starting build $@)
	cd integration-tests/ && ./test.sh centos7 386
.PHONY: rockylinux9-32
rockylinux9-32: build
	$(info INFO: Starting build $@)
	cd integration-tests/ && ./test.sh rockylinux9 386
wheezy-32: build
	$(info INFO: Starting build $@)
	cd integration-tests/ && ./test.sh wheezy 386
trusty-32: build
	$(info INFO: Starting build $@)
	cd integration-tests/ && ./test.sh trusty 386
alpine3-32: build
	$(info INFO: Starting build $@)
	cd integration-tests/ && ./test.sh alpine3 386
arch-32: build
	$(info INFO: Starting build $@)
	cd integration-tests/ && ./test.sh arch 386
centos7: build
	$(info INFO: Starting build $@)
	cd integration-tests/ && ./test.sh centos7 amd64
.PHONY: rockylinux9
rockylinux9: build
	$(info INFO: Starting build $@)
	cd integration-tests/ && ./test.sh rockylinux9 amd64
wheezy: build
	$(info INFO: Starting build $@)
	cd integration-tests/ && ./test.sh wheezy amd64
trusty: build
	$(info INFO: Starting build $@)
	cd integration-tests/ && ./test.sh trusty amd64
alpine3: build
	$(info INFO: Starting build $@)
	cd integration-tests/ && ./test.sh alpine3 amd64
arch: build
	$(info INFO: Starting build $@)
	cd integration-tests/ && ./test.sh arch amd64

dgoss-sha256:
	cd extras/dgoss/ && sha256sum dgoss > dgoss.sha256

dcgoss-sha256:
	cd extras/dcgoss/ && sha256sum dcgoss > dcgoss.sha256

kgoss-sha256:
	cd extras/kgoss/ && sha256sum kgoss > kgoss.sha256

$(PYTHON):
	$(info Creating virtualenv in $(VENV))
	@python -m venv $(VENV)

$(DOCS_DEPS): $(PYTHON) docs/requirements.txt
	$(info Installing dependencies)
	@pip install --upgrade pip
	@pip install --requirement docs/requirements.txt
	@touch $(DOCS_DEPS)

docs/setup: $(DOCS_DEPS)

docs/serve: docs/setup
	$(info Running documentation live development server)
	@mkdocs serve --strict

.PHONY: docs
docs: docs/setup
	$(info Building documentation)
	@mkdocs build --strict