Skip to content
This repository was archived by the owner on Apr 30, 2025. It is now read-only.

Commit 56c1f8e

Browse files
committed
Distribute via goreleaser
1 parent e34fe5d commit 56c1f8e

7 files changed

Lines changed: 117 additions & 62 deletions

File tree

.github/workflows/release.yml

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,23 @@ on:
44
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
55

66
name: Create Release
7-
87
jobs:
9-
build:
10-
name: Create Release
8+
release:
9+
name: Building Release
1110
runs-on: ubuntu-latest
1211
steps:
13-
- name: Checking out code
12+
- name: Checking out repository...
1413
uses: actions/checkout@v2
15-
- uses: actions/setup-go@v2
1614
with:
17-
go-version: '^1.15.6'
18-
- name: Running test suite
19-
run: make test
20-
- name: Building release binaries
21-
run: make release
22-
- name: Creating Release
23-
id: create_release
24-
uses: actions/create-release@v1
25-
env:
26-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
15+
fetch-depth: 0 # required for the changelog to work correctly
16+
- name: Setting up Go
17+
uses: actions/setup-go@v2
2718
with:
28-
tag_name: ${{ github.ref }}
29-
release_name: Release ${{ github.ref }}
30-
draft: false
31-
prerelease: false
32-
- name: Upload release binaries
33-
uses: alexellis/upload-assets@0.2.2
34-
env:
35-
GITHUB_TOKEN: ${{ github.token }}
19+
go-version: 1.16
20+
- name: Runnig GoReleaser
21+
uses: goreleaser/goreleaser-action@v2
3622
with:
37-
asset_paths: '["./out/pcp-*"]'
23+
version: v0.157.0
24+
args: release --rm-dist
25+
env:
26+
GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN_REPO_SCOPE }}

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ out/**
1818
.idea
1919
pcp
2020

21+
dist
22+
2123
### Go Patch ###
2224
/vendor/
2325

.goreleaser.yml

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# This is an example .goreleaser.yml file with some sane defaults.
2+
# Make sure to check the documentation at http://goreleaser.com
3+
before:
4+
hooks:
5+
- go mod download
6+
- go install github.com/golang/mock/mockgen@v1.5.0
7+
- go generate gen.go
8+
9+
release:
10+
# Creat a draft commit that needs manual confirmation
11+
draft: true
12+
# If set to auto, will mark the release as not ready for
13+
# production if suffix contains -rc1 or similar.
14+
prerelease: auto
15+
name_template: "Release {{.Tag}}"
16+
17+
builds:
18+
- main: ./cmd/pcp/pcp.go
19+
binary: pcp
20+
ldflags: -s -w -X main.RawVersion={{.RawVersion}} -X main.ShortCommit={{.ShortCommit}}
21+
env:
22+
- CGO_ENABLED=0
23+
goos:
24+
- darwin
25+
- linux
26+
- windows
27+
- freebsd
28+
- netbsd
29+
- openbsd
30+
- dragonfly
31+
goarch:
32+
- amd64
33+
- 386
34+
- arm
35+
- arm64
36+
ignore:
37+
- goos: darwin
38+
goarch: 386
39+
goarm:
40+
- 7
41+
nfpms:
42+
- formats:
43+
- apk
44+
- deb
45+
- rpm
46+
vendor: "dtrautwein.eu"
47+
homepage: "https://github.com/dennis-tra/pcp"
48+
maintainer: "Dennis Trautwein <pcp@dtrautwein.eu>"
49+
description: "Command line peer-to-peer data transfer tool based on libp2p."
50+
license: "Apache License Version 2.0"
51+
file_name_template: "{{.ProjectName}}_{{.RawVersion}}_{{.Os}}-{{.Arch}}"
52+
replacements:
53+
darwin: macos
54+
archives:
55+
- format: tar.gz
56+
format_overrides:
57+
- goos: windows
58+
format: zip
59+
replacements:
60+
darwin: macos
61+
62+
checksum:
63+
name_template: 'checksums.txt'
64+
changelog:
65+
sort: desc
66+
brews:
67+
- tap:
68+
owner: dennis-tra
69+
name: homebrew-tap
70+
folder: Formulae
71+
description: "pcp is a command line peer-to-peer data transfer tool based on libp2p."
72+
homepage: "https://github.com/dennis-tra/pcp"
73+
license: "Apache License Version 2.0"
74+
test: |
75+
system "#{bin}/croc --version"
76+
scoop:
77+
bucket:
78+
owner: dennis-tra
79+
name: scoop-bucket
80+
homepage: "https://github.com/dennis-tra/pcp"
81+
description: "pcp is a command line peer-to-peer data transfer tool based on libp2p."
82+
license: "Apache License Version 2.0"

Makefile

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,15 @@
1-
BINARY=pcp
2-
VERSION=0.3.1
3-
BUILD=`git rev-parse HEAD`
4-
PLATFORMS=darwin linux windows
5-
ARCHITECTURES=386 amd64 arm
6-
7-
# Setup linker flags option for build that interoperate with variable names in src code
8-
LDFLAGS=-ldflags "-X main.Version=${VERSION} -X main.Build=${BUILD}"
9-
101
default: build
112

12-
all: clean release install
3+
all: clean install
134

145
test:
156
go test ./...
167

178
build:
18-
go build ${LDFLAGS} -o out/${BINARY} cmd/pcp/pcp.go
19-
20-
release:
21-
$(foreach GOOS, $(PLATFORMS),\
22-
$(foreach GOARCH, $(ARCHITECTURES), $(shell export GOOS=$(GOOS); export GOARCH=$(GOARCH); go build ${LDFLAGS} -o out/$(BINARY)-$(GOOS)-$(GOARCH) cmd/pcp/pcp.go)))
9+
go build -o dist/pcp cmd/pcp/pcp.go
2310

2411
install:
25-
go install ${LDFLAGS}
12+
go install cmd/pcp/pcp.go
2613

2714
format:
2815
gofumpt -w -l .
@@ -32,11 +19,12 @@ proto:
3219
gofumpt -w -l ./pkg/pb/
3320

3421
tools:
35-
go install mvdan.cc/gofumpt
36-
go install google.golang.org/protobuf/cmd/protoc-gen-go
22+
go install mvdan.cc/gofumpt@v0.1.0
23+
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.25.0
24+
go install github.com/golang/mock/mockgen@v1.5.0
3725

3826
# Remove only what we've created
3927
clean:
40-
rm -r out
28+
rm -r dist
4129

42-
.PHONY: check clean install release all
30+
.PHONY: all clean test install release proto format tools

cmd/pcp/pcp.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@ import (
1515
)
1616

1717
var (
18-
// Version and build tag of the
18+
// RawVersion and build tag of the
1919
// PCP command line tool. This is
2020
// replaced on build via e.g.:
21-
// -ldflags "-X main.Version=${VERSION}"
22-
Version = "dev"
23-
Build = "5f3759df" // quake
21+
// -ldflags "-X main.RawVersion=${VERSION}"
22+
RawVersion = "dev"
23+
ShortCommit = "5f3759df" // quake
2424
)
2525

2626
func main() {
27-
// Build version tag
28-
verTag := fmt.Sprintf("%s+%s", Version, Build[:7])
27+
// ShortCommit version tag
28+
verTag := fmt.Sprintf("v%s+%s", RawVersion, ShortCommit)
2929

3030
// Print disclaimer
3131
log.Infof("pcp version %s - if you're experiencing problems, check that your peer runs the same version. The API and protocols are not stable until a 1.0.0 release.\n", verTag)

go.mod

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ require (
66
github.com/adrg/xdg v0.3.0
77
github.com/golang/mock v1.5.0
88
github.com/golang/protobuf v1.4.3
9+
github.com/google/go-cmp v0.5.4 // indirect
910
github.com/google/uuid v1.2.0
1011
github.com/ipfs/go-cid v0.0.7
1112
github.com/libp2p/go-libp2p v0.13.0
@@ -22,9 +23,10 @@ require (
2223
github.com/tyler-smith/go-bip39 v1.1.0
2324
github.com/urfave/cli/v2 v2.3.0
2425
github.com/whyrusleeping/mdns v0.0.0-20190826153040-b9b60ed33aa9
25-
go.uber.org/atomic v1.7.0
26+
go.uber.org/atomic v1.7.0 // indirect
2627
golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83
27-
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
28+
golang.org/x/mod v0.4.0 // indirect
29+
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
30+
golang.org/x/tools v0.0.0-20210101214203-2dba1e4ea05c // indirect
2831
google.golang.org/protobuf v1.25.0
29-
mvdan.cc/gofumpt v0.1.0 // indirect
3032
)

go.sum

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a
8686
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
8787
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
8888
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
89-
github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
9089
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
9190
github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M=
9291
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
@@ -500,7 +499,6 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:
500499
github.com/rivo/uniseg v0.1.0 h1:+2KBaVoUmb9XzDsrx/Ct0W/EYOSFf/nWTauy++DprtY=
501500
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
502501
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
503-
github.com/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
504502
github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo=
505503
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
506504
github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
@@ -612,7 +610,6 @@ golang.org/x/net v0.0.0-20190227160552-c95aed5357e7/go.mod h1:mL1N/T3taQHkDXs73r
612610
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
613611
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
614612
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
615-
golang.org/x/net v0.0.0-20190923162816-aa69164e4478 h1:l5EDrHhldLYb3ZRHDUhXF7Om7MvYXnkV9/iQNo1lX6g=
616613
golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
617614
golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI=
618615
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
@@ -643,14 +640,12 @@ golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7w
643640
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
644641
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
645642
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
646-
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8=
647643
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
648644
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA=
649645
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
650646
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221 h1:/ZHdbVpdR/jk3g30/d4yUL0JU9kksj8+F/bnQUVLGDM=
651647
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
652648
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
653-
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
654649
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
655650
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
656651
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
@@ -667,14 +662,13 @@ golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtn
667662
golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
668663
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
669664
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
670-
golang.org/x/tools v0.0.0-20191216052735-49a3e744a425 h1:VvQyQJN0tSuecqgcIxMWnnfG5kSmgy9KZR9sW3W5QeA=
671665
golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
672666
golang.org/x/tools v0.0.0-20210101214203-2dba1e4ea05c h1:dS09fXwOFF9cXBnIzZexIuUBj95U1NyQjkEhkgidDow=
673667
golang.org/x/tools v0.0.0-20210101214203-2dba1e4ea05c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
674668
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
675669
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
676-
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
677670
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
671+
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
678672
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
679673
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
680674
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@@ -723,5 +717,3 @@ honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWh
723717
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
724718
honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM=
725719
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
726-
mvdan.cc/gofumpt v0.1.0 h1:hsVv+Y9UsZ/mFZTxJZuHVI6shSQCtzZ11h1JEFPAZLw=
727-
mvdan.cc/gofumpt v0.1.0/go.mod h1:yXG1r1WqZVKWbVRtBWKWX9+CxGYfA51nSomhM0woR48=

0 commit comments

Comments
 (0)