浏览代码

Merge remote-tracking branch 'origin/master' into stable

tags/v2.0.1
9seconds 5 年前
父节点
当前提交
0c5d487fae
共有 6 个文件被更改,包括 109 次插入51 次删除
  1. 1
    0
      .gitignore
  2. 65
    0
      .goreleaser.yml
  3. 20
    29
      Makefile
  4. 6
    6
      go.mod
  5. 12
    12
      go.sum
  6. 5
    4
      mtglib/internal/relay/relay.go

+ 1
- 0
.gitignore 查看文件

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

+ 65
- 0
.goreleaser.yml 查看文件

@@ -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 查看文件

@@ -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:

+ 6
- 6
go.mod 查看文件

@@ -16,16 +16,16 @@ require (
16 16
 	github.com/libp2p/go-reuseport v0.0.2
17 17
 	github.com/mccutchen/go-httpbin v1.1.1
18 18
 	github.com/panjf2000/ants/v2 v2.4.4
19
-	github.com/pelletier/go-toml v1.9.0
19
+	github.com/pelletier/go-toml v1.9.1
20 20
 	github.com/prometheus/client_golang v1.10.0
21
-	github.com/prometheus/common v0.23.0 // indirect
22
-	github.com/rs/zerolog v1.21.0
21
+	github.com/prometheus/common v0.24.0 // indirect
22
+	github.com/rs/zerolog v1.22.0
23 23
 	github.com/smira/go-statsd v1.3.2
24 24
 	github.com/stretchr/objx v0.3.0 // indirect
25 25
 	github.com/stretchr/testify v1.7.0
26 26
 	github.com/tylertreat/BoomFilters v0.0.0-20210315201527-1a82519a3e43
27 27
 	github.com/xeipuuv/gojsonschema v1.2.0
28
-	golang.org/x/crypto v0.0.0-20210503195802-e9a32991a82e
29
-	golang.org/x/net v0.0.0-20210505024714-0287a6fb4125
30
-	golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6
28
+	golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a
29
+	golang.org/x/net v0.0.0-20210510120150-4163338589ed
30
+	golang.org/x/sys v0.0.0-20210514084401-e8d321eab015
31 31
 )

+ 12
- 12
go.sum 查看文件

@@ -245,8 +245,8 @@ github.com/panjf2000/ants/v2 v2.4.4 h1:kebk2KSiXHGeiYS6b+w2RqNN5+IKoqlBNd7cuC7Mv
245 245
 github.com/panjf2000/ants/v2 v2.4.4/go.mod h1:f6F0NZVFsGCp5A7QW/Zj/m92atWwOkY0OIhFxRNFr4A=
246 246
 github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
247 247
 github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
248
-github.com/pelletier/go-toml v1.9.0 h1:NOd0BRdOKpPf0SxkL3HxSQOG7rNh+4kl6PHcBPFs7Q0=
249
-github.com/pelletier/go-toml v1.9.0/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
248
+github.com/pelletier/go-toml v1.9.1 h1:a6qW1EVNZWH9WGI6CsYdD8WAylkoXBS5yv0XHlh17Tc=
249
+github.com/pelletier/go-toml v1.9.1/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
250 250
 github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
251 251
 github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
252 252
 github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
@@ -278,8 +278,8 @@ github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8
278 278
 github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
279 279
 github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
280 280
 github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s=
281
-github.com/prometheus/common v0.23.0 h1:GXWvPYuTUenIa+BhOq/x+L/QZzCqASkVRny5KTlPDGM=
282
-github.com/prometheus/common v0.23.0/go.mod h1:H6QK/N6XVT42whUeIdI3dp36w49c+/iMDk7UAI2qm7Q=
281
+github.com/prometheus/common v0.24.0 h1:aIycr3wRFxPUq8XlLQlGQ9aNXV3dFi5y62pe/SB262k=
282
+github.com/prometheus/common v0.24.0/go.mod h1:H6QK/N6XVT42whUeIdI3dp36w49c+/iMDk7UAI2qm7Q=
283 283
 github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
284 284
 github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
285 285
 github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
@@ -293,8 +293,8 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So
293 293
 github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
294 294
 github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
295 295
 github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ=
296
-github.com/rs/zerolog v1.21.0 h1:Q3vdXlfLNT+OftyBHsU0Y445MD+8m8axjKgf2si0QcM=
297
-github.com/rs/zerolog v1.21.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM=
296
+github.com/rs/zerolog v1.22.0 h1:XrVUjV4K+izZpKXZHlPrYQiDtmdGiCylnT4i43AAWxg=
297
+github.com/rs/zerolog v1.22.0/go.mod h1:ZPhntP/xmq1nnND05hhpAh2QMhSsA4UN3MGZ6O2J3hM=
298 298
 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
299 299
 github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
300 300
 github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
@@ -371,8 +371,8 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U
371 371
 golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
372 372
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
373 373
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
374
-golang.org/x/crypto v0.0.0-20210503195802-e9a32991a82e h1:8foAy0aoO5GkqCvAEJ4VC4P3zksTg4X4aJCDpZzmgQI=
375
-golang.org/x/crypto v0.0.0-20210503195802-e9a32991a82e/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
374
+golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a h1:kr2P4QFmQr29mSLA43kwrOcgcReGTfbE9N577tCTuBc=
375
+golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
376 376
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
377 377
 golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
378 378
 golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
@@ -405,8 +405,8 @@ golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLL
405 405
 golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
406 406
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
407 407
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
408
-golang.org/x/net v0.0.0-20210505024714-0287a6fb4125 h1:Ugb8sMTWuWRC3+sz5WeN/4kejDx9BvIwnPUiJBjJE+8=
409
-golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
408
+golang.org/x/net v0.0.0-20210510120150-4163338589ed h1:p9UgmWI9wKpfYmgaV/IZKGdXc5qEK45tDwwwDyjS26I=
409
+golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
410 410
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
411 411
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
412 412
 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -447,8 +447,8 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w
447 447
 golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
448 448
 golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
449 449
 golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
450
-golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6 h1:cdsMqa2nXzqlgs183pHxtvoVwU7CyzaCTAUOg94af4c=
451
-golang.org/x/sys v0.0.0-20210503173754-0981d6026fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
450
+golang.org/x/sys v0.0.0-20210514084401-e8d321eab015 h1:hZR0X1kPW+nwyJ9xRxqZk1vx5RUObAPBdKVvXPDUH/E=
451
+golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
452 452
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
453 453
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
454 454
 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=

+ 5
- 4
mtglib/internal/relay/relay.go 查看文件

@@ -68,11 +68,12 @@ func (r *Relay) Process(eastConn, westConn io.ReadWriteCloser) error {
68 68
 
69 69
 func (r *Relay) transmit(src io.ReadCloser, dst io.WriteCloser,
70 70
 	buffer []byte, direction string, wg *sync.WaitGroup) {
71
+	defer wg.Done()
72
+
71 73
 	defer func() {
74
+		r.ctxCancel()
72 75
 		src.Close()
73 76
 		dst.Close()
74
-		wg.Done()
75
-		r.ctxCancel()
76 77
 	}()
77 78
 
78 79
 	if _, err := io.CopyBuffer(dst, src, buffer); err != nil {
@@ -92,6 +93,8 @@ func (r *Relay) transmit(src io.ReadCloser, dst io.WriteCloser,
92 93
 }
93 94
 
94 95
 func (r *Relay) runObserver(one, another io.Closer, wg *sync.WaitGroup) {
96
+	defer wg.Done()
97
+
95 98
 	ticker := time.NewTicker(time.Second)
96 99
 
97 100
 	defer func() {
@@ -104,8 +107,6 @@ func (r *Relay) runObserver(one, another io.Closer, wg *sync.WaitGroup) {
104 107
 		case <-ticker.C:
105 108
 		default:
106 109
 		}
107
-
108
-		wg.Done()
109 110
 	}()
110 111
 
111 112
 	lastTickAt := time.Now()

正在加载...
取消
保存