Kaynağa Gözat

Merge pull request #191 from 9seconds/goreleaser

Add support of goreleaser
tags/v2.0.1^2
Sergey Arkhipov 5 yıl önce
ebeveyn
işleme
bf34f0c92d
No account linked to committer's email address
3 değiştirilmiş dosya ile 86 ekleme ve 29 silme
  1. 1
    0
      .gitignore
  2. 65
    0
      .goreleaser.yml
  3. 20
    29
      Makefile

+ 1
- 0
.gitignore Dosyayı Görüntüle

@@ -10,3 +10,4 @@ vendor/
10 10
 ccbuilds/
11 11
 .bin/
12 12
 coverage.txt
13
+dist/

+ 65
- 0
.goreleaser.yml Dosyayı Görüntüle

@@ -0,0 +1,65 @@
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 Dosyayı Görüntüle

@@ -2,8 +2,6 @@ ROOT_DIR     := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
2 2
 IMAGE_NAME   := mtg
3 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 5
 GOLANGCI_LINT_VERSION := v1.39.0
8 6
 
9 7
 VERSION_GO         := $(shell go version)
@@ -33,23 +31,12 @@ static:
33 31
 		-a \
34 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 34
 vendor: go.mod go.sum
51 35
 	@$(MOD_ON) go mod vendor
52 36
 
37
+.bin:
38
+	@mkdir -p "$(GOBIN)" || true
39
+
53 40
 .PHONY: fmt
54 41
 fmt:
55 42
 	@$(GOTOOL) gofumpt -w -s -extra "$(ROOT_DIR)"
@@ -62,9 +49,6 @@ test:
62 49
 citest:
63 50
 	@go test -coverprofile=coverage.txt -covermode=atomic -parallel 2 -race -v ./...
64 51
 
65
-.PHONY: crosscompile
66
-crosscompile: $(CC_BINARIES)
67
-
68 52
 .PHONY: clean
69 53
 clean:
70 54
 	@git clean -xfd && \
@@ -75,6 +59,12 @@ clean:
75 59
 lint:
76 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 68
 .PHONY: docker
79 69
 docker:
80 70
 	@docker build --pull -t "$(IMAGE_NAME)" "$(ROOT_DIR)"
@@ -84,23 +74,24 @@ doc:
84 74
 	@$(GOTOOL) godoc -http 0.0.0.0:10000
85 75
 
86 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 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 82
 		| bash -s -- -b "$(GOBIN)" "$(GOLANGCI_LINT_VERSION)"
94 83
 
95 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 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 96
 .PHONY: update-deps
106 97
 update-deps:

Loading…
İptal
Kaydet