-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathdog.yml
68 lines (61 loc) · 1.61 KB
/
dog.yml
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
---
- task: get-version
code: grep "const version" cmd/dog/main.go | cut -d'"' -f2
register: DOG_VERSION
- task: clean
description: Clean compiled binaries
code: rm -rf dist dog-*
- task: test
description: Run all tests
runner: bash
code: |
diff <(echo -n) <(gofmt -s -d .)
go vet ./...
go test -v -tags=integration ./...
- task: build
description: Build dog binary for current platform
env: OUTPUT_PATH=dist/current
pre: clean
code: |
go build \
-ldflags "-s -w" \
-o "${OUTPUT_PATH}/dog" \
cmd/dog/*.go
- task: install
description: Install custom build to local system
env:
- BINARY_PATH=dist/current
- INSTALL_PATH=/usr/local/bin
code: sudo cp -v ${BINARY_PATH}/dog ${INSTALL_PATH}/dog
- task: build-all
description: Build dog binary for all platforms
pre:
- clean
- test
env:
- XC_ARCH=386 amd64 arm
- XC_OS=linux darwin freebsd openbsd netbsd solaris
code: |
go get -u github.com/mitchellh/gox
gox \
-os="${XC_OS}" \
-arch="${XC_ARCH}" \
-ldflags "-s -w" \
-output "dist/{{.OS}}_{{.Arch}}/dog" \
./cmd/dog/
- task: release
description: Put all dist binaries in a compressed file
pre:
- build-all
- get-version
code: |
mv -v dist dog-${DOG_VERSION}
tar zcvf dog-${DOG_VERSION}.tar.gz dog-${DOG_VERSION}
- task: release-docker
description: Build and push Docker container
pre: get-version
code: |
docker build -t xavisb/dog:${DOG_VERSION} .
docker tag xavisb/dog:${DOG_VERSION} xavisb/dog:latest
docker push xavisb/dog:${DOG_VERSION}
docker push xavisb/dog:latest