Просмотр исходного кода

Merge pull request #191 from 9seconds/goreleaser

Add support of goreleaser
tags/v2.0.1^2
Sergey Arkhipov 5 лет назад
Родитель
Сommit
bf34f0c92d
Аккаунт пользователя с таким Email не найден
3 измененных файлов: 86 добавлений и 29 удалений
  1. 1
    0
      .gitignore
  2. 65
    0
      .goreleaser.yml
  3. 20
    29
      Makefile

+ 1
- 0
.gitignore Просмотреть файл

10
 ccbuilds/
10
 ccbuilds/
11
 .bin/
11
 .bin/
12
 coverage.txt
12
 coverage.txt
13
+dist/

+ 65
- 0
.goreleaser.yml Просмотреть файл

1
+---
2
+
3
+project_name: mtg
4
+
5
+before:
6
+  hooks:
7
+    - go mod tidy
8
+    - go generate ./...
9
+
10
+builds:
11
+  - binary: '{{ .ProjectName }}'
12
+    goos:
13
+      - darwin
14
+      - freebsd
15
+      - linux
16
+      - netbsd
17
+      - openbsd
18
+    goarch:
19
+      - 386
20
+      - amd64
21
+      - arm
22
+      - arm64
23
+    goarm:
24
+      - 6
25
+      - 7
26
+    env:
27
+      - CGO_ENABLED=0
28
+    flags:
29
+      - -trimpath
30
+      - -mod=readonly
31
+    ldflags: -s -w -X main.version={{ .Version }}
32
+    ignore:
33
+      - goos: darwin
34
+        goarch: 386
35
+      - goos: freebsd
36
+        goarch: arm64
37
+      - goos: netbsd
38
+        goarch: arm64
39
+      - goos: openbsd
40
+        goarch: arm64
41
+
42
+archives:
43
+  - name_template: '{{ .ProjectName }}-{{ .Version }}-{{ .Os }}-{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
44
+    format: tar.gz
45
+    wrap_in_directory: true
46
+    format_overrides:
47
+      - goos: windows
48
+        format: zip
49
+    files:
50
+      - LICENSE
51
+      - README.md
52
+      - SECURITY.md
53
+
54
+gomod:
55
+  proxy: true
56
+
57
+snapshot:
58
+  name_template: '{{ .Version }}'
59
+
60
+checksum:
61
+  name_template: '{{ .ProjectName }}-{{ .Version }}-checksums.txt'
62
+
63
+source:
64
+  enabled: true
65
+  name_template: '{{ .ProjectName }}-sources'

+ 20
- 29
Makefile Просмотреть файл

2
 IMAGE_NAME   := mtg
2
 IMAGE_NAME   := mtg
3
 APP_NAME     := $(IMAGE_NAME)
3
 APP_NAME     := $(IMAGE_NAME)
4
 
4
 
5
-CC_BINARIES  := $(shell bash -c "echo -n $(APP_NAME)-{linux,freebsd,openbsd}-{386,amd64} $(APP_NAME)-linux-{arm,arm64}")
6
-
7
 GOLANGCI_LINT_VERSION := v1.39.0
5
 GOLANGCI_LINT_VERSION := v1.39.0
8
 
6
 
9
 VERSION_GO         := $(shell go version)
7
 VERSION_GO         := $(shell go version)
33
 		-a \
31
 		-a \
34
 		-o "$(APP_NAME)"
32
 		-o "$(APP_NAME)"
35
 
33
 
36
-$(APP_NAME)-%: GOOS=$(shell echo -n "$@" | sed 's?$(APP_NAME)-??' | cut -f1 -d-)
37
-$(APP_NAME)-%: GOARCH=$(shell echo -n "$@" | sed 's?$(APP_NAME)-??' | cut -f2 -d-)
38
-$(APP_NAME)-%: ccbuilds
39
-	@env "GOOS=$(GOOS)" "GOARCH=$(GOARCH)" \
40
-		go build \
41
-		$(COMMON_BUILD_FLAGS) \
42
-		-tags netgo \
43
-		-a \
44
-		-o "./ccbuilds/$(APP_NAME)-$(GOOS)-$(GOARCH)"
45
-
46
-.PHONY: ccbuilds
47
-ccbuilds:
48
-	@rm -rf ./ccbuilds && mkdir -p ./ccbuilds
49
-
50
 vendor: go.mod go.sum
34
 vendor: go.mod go.sum
51
 	@$(MOD_ON) go mod vendor
35
 	@$(MOD_ON) go mod vendor
52
 
36
 
37
+.bin:
38
+	@mkdir -p "$(GOBIN)" || true
39
+
53
 .PHONY: fmt
40
 .PHONY: fmt
54
 fmt:
41
 fmt:
55
 	@$(GOTOOL) gofumpt -w -s -extra "$(ROOT_DIR)"
42
 	@$(GOTOOL) gofumpt -w -s -extra "$(ROOT_DIR)"
62
 citest:
49
 citest:
63
 	@go test -coverprofile=coverage.txt -covermode=atomic -parallel 2 -race -v ./...
50
 	@go test -coverprofile=coverage.txt -covermode=atomic -parallel 2 -race -v ./...
64
 
51
 
65
-.PHONY: crosscompile
66
-crosscompile: $(CC_BINARIES)
67
-
68
 .PHONY: clean
52
 .PHONY: clean
69
 clean:
53
 clean:
70
 	@git clean -xfd && \
54
 	@git clean -xfd && \
75
 lint:
59
 lint:
76
 	@$(GOTOOL) golangci-lint run
60
 	@$(GOTOOL) golangci-lint run
77
 
61
 
62
+.PHONY: release
63
+release:
64
+	@$(GOTOOL) goreleaser release --snapshot --rm-dist && \
65
+		find "$(ROOT_DIR)/dist" -type d | grep -vP "dist$$" | xargs -r rm -rf && \
66
+		rm -f "$(ROOT_DIR)/dist/config.yaml"
67
+
78
 .PHONY: docker
68
 .PHONY: docker
79
 docker:
69
 docker:
80
 	@docker build --pull -t "$(IMAGE_NAME)" "$(ROOT_DIR)"
70
 	@docker build --pull -t "$(IMAGE_NAME)" "$(ROOT_DIR)"
84
 	@$(GOTOOL) godoc -http 0.0.0.0:10000
74
 	@$(GOTOOL) godoc -http 0.0.0.0:10000
85
 
75
 
86
 .PHONY: install-tools
76
 .PHONY: install-tools
87
-install-tools: install-tools-lint install-tools-godoc install-tools-gofumpt
77
+install-tools: install-tools-lint install-tools-godoc install-tools-gofumpt install-tools-goreleaser
88
 
78
 
89
 .PHONY: install-tools-lint
79
 .PHONY: install-tools-lint
90
-install-tools-lint:
91
-	@mkdir -p "$(GOBIN)" || true && \
92
-		curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh \
80
+install-tools-lint: .bin
81
+	@curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh \
93
 		| bash -s -- -b "$(GOBIN)" "$(GOLANGCI_LINT_VERSION)"
82
 		| bash -s -- -b "$(GOBIN)" "$(GOLANGCI_LINT_VERSION)"
94
 
83
 
95
 .PHONY: install-tools-godoc
84
 .PHONY: install-tools-godoc
96
-install-tools-godoc:
97
-	@mkdir -p "$(GOBIN)" || true && \
98
-		$(GOTOOL) go get -u golang.org/x/tools/cmd/godoc
85
+install-tools-godoc: .bin
86
+	@$(GOTOOL) go get -u golang.org/x/tools/cmd/godoc
99
 
87
 
100
 .PHONY: install-tools-gofumpt
88
 .PHONY: install-tools-gofumpt
101
-install-tools-gofumpt:
102
-	@mkdir -p "$(GOBIN)" || true && \
103
-		$(GOTOOL) go get -u mvdan.cc/gofumpt
89
+install-tools-gofumpt: .bin
90
+	@$(GOTOOL) go get -u mvdan.cc/gofumpt
91
+
92
+.PHONY: goreleaser
93
+install-tools-goreleaser: .bin
94
+	@$(GOTOOL) go get -u github.com/goreleaser/goreleaser
104
 
95
 
105
 .PHONY: update-deps
96
 .PHONY: update-deps
106
 update-deps:
97
 update-deps:

Загрузка…
Отмена
Сохранить