-
Notifications
You must be signed in to change notification settings - Fork 0
/
circle-old.yml
89 lines (89 loc) · 3.6 KB
/
circle-old.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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
machine:
services:
- docker
environment:
PACKAGE_PATH: "github.com/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME"
GOPATH: "$HOME/.go_workspace"
DOCKER_DIR: "$HOME/docker_workspace"
PROJECT_DIR: "$GOPATH/src/$PACKAGE_PATH"
GODIST: "go1.10.1.linux-amd64.tar.gz"
NATIVE_BINARY: "$CIRCLE_ARTIFACTS/centralconfig_linux_amd64"
node:
version: 6
post:
# Install the specified version of Go
- mkdir -p download
- test -e download/$GODIST || curl -o download/$GODIST https://storage.googleapis.com/golang/$GODIST
- sudo rm -rf /usr/local/go
- sudo tar -C /usr/local -xzf download/$GODIST
# Create our docker workspace
- mkdir -p "$DOCKER_DIR"
checkout:
post:
# Get our UI source
- cd /tmp; git clone https://github.com/$CIRCLE_PROJECT_USERNAME/centralconfig-ui.git
dependencies:
pre:
# Sanity check that our go version is installed
- go version
# Sanity check docker version
- docker info
# Compiler and release tools
- go get github.com/mitchellh/gox
- go get github.com/tcnksm/ghr
# Static assets compilers
- go get github.com/jteeuwen/go-bindata/...
- go get github.com/elazarl/go-bindata-assetfs/...
# Unit test reports
- go get -u github.com/jstemmer/go-junit-report
# Sanity check the yarn version:
- yarn --version
override:
# Create our project workspace
- mkdir -p "$PROJECT_DIR"
# Go configuration on CircleCI is wonky. Make our code
# is in the correct Go workspace structure
- rsync -azC --delete ./ --include=".git" "$PROJECT_DIR"
- env GOOS=windows go get -d -v $PACKAGE_PATH/...
- go get -t -d -v $PACKAGE_PATH/...
post:
# Setup our UI
- cd /tmp/centralconfig-ui; git describe --tags; yarn; yarn build; go-bindata-assetfs -pkg cmd build/...; mv -f bindata.go "$PROJECT_DIR/cmd";
- ls -lR $PROJECT_DIR
# Install for our platform to be able to generate
# SQL DDL for our integration tests
- go install $PACKAGE_PATH/...
- centralconfig defaults --mysql > mysql.sql
cache_directories:
- ~/download
database:
override:
# Sanity check MySQL version and create test database
- mysql -V
- mysql circle_test < mysql.sql
test:
pre:
- go vet -x $PACKAGE_PATH/...
override:
- go test -v -race $PACKAGE_PATH/...
post:
# Publish test results in jUnit format (so CircleCI can report on tests better)
- mkdir $CIRCLE_TEST_REPORTS/junit
- go test -v -race $PACKAGE_PATH/... | go-junit-report > $CIRCLE_TEST_REPORTS/junit/junit.xml
# Multi-platform compile with version information
- cd $PROJECT_DIR
- gox -ldflags "-X $PACKAGE_PATH/cmd.buildVersion=1.0.$CIRCLE_BUILD_NUM -X $PACKAGE_PATH/cmd.commitId=$CIRCLE_SHA1" -arch="!mips !mipsle !mips64 !mips64le" -output "${CIRCLE_ARTIFACTS}/${CIRCLE_PROJECT_REPONAME}_{{.OS}}_{{.Arch}}" $PACKAGE_PATH/...
# Build and tag our docker image
- cp $NATIVE_BINARY $DOCKER_DIR/centralconfig
- cp $PROJECT_DIR/Dockerfile $DOCKER_DIR/
- docker build -t $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME $DOCKER_DIR
- docker tag $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME:$CIRCLE_BUILD_NUM
deployment:
release:
branch: master
commands:
# Publish assets to Github
- ghr -t $GITHUB_TOKEN -u $CIRCLE_PROJECT_USERNAME -r $CIRCLE_PROJECT_REPONAME v1.0.$CIRCLE_BUILD_NUM $CIRCLE_ARTIFACTS/ || true
# Push to docker
- docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS
- docker push $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME