github.com/jdhenke/godel@v0.0.0-20161213181855-abeb3861bf0d/circle.yml (about) 1 machine: 2 environment: 3 GODIST: "go1.7.3.linux-amd64.tar.gz" 4 GOPATH: "$HOME/.go_workspace" 5 IMPORT_PATH: "github.com/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME" 6 GO_PROJECT_SRC_PATH: "$GOPATH/src/$IMPORT_PATH" 7 MIN_CIRCLE_NODES: 5 8 services: 9 - docker 10 post: 11 - if (( $CIRCLE_NODE_TOTAL < $MIN_CIRCLE_NODES )); then echo "Build requires at least $MIN_CIRCLE_NODES nodes, was ${CIRCLE_NODE_TOTAL}"; false; fi 12 - mkdir -p download 13 - test -e "download/$GODIST" || wget -O "download/$GODIST" "https://storage.googleapis.com/golang/$GODIST" 14 # create custom Go distribution with packages built for darwin-amd64 if it is not present 15 - | 16 if [ ! -e "download/$GODIST-custom.tgz" ]; then 17 sudo rm -rf /usr/local/go && \ 18 sudo tar -C /usr/local -xzf "download/$GODIST" && \ 19 sudo env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 /usr/local/go/bin/go install std && \ 20 sudo env CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 /usr/local/go/bin/go install std && \ 21 tar -C /usr/local -czf "download/$GODIST-custom.tgz" go 22 fi 23 - sudo rm -rf /usr/local/go 24 - sudo tar -C /usr/local -xzf "download/$GODIST-custom.tgz" 25 26 checkout: 27 post: 28 # ensure all tags are fetched and up-to-date 29 - git tag -l | xargs git tag -d && git fetch -t 30 31 dependencies: 32 override: 33 - mkdir -p "$GOPATH/src/$IMPORT_PATH" 34 - rsync -az --delete ./ "$GOPATH/src/$IMPORT_PATH/" 35 - cd "$GO_PROJECT_SRC_PATH" && ./godelw version 36 cache_directories: 37 - ~/.godel 38 - ~/download 39 40 test: 41 override: 42 - ? | 43 case $CIRCLE_NODE_INDEX in 44 0) 45 cd "$GO_PROJECT_SRC_PATH" && CGO_ENABLED=0 go install $(./godelw packages) && \ 46 mkdir -p "$CIRCLE_TEST_REPORTS/$CIRCLE_PROJECT_REPONAME" && \ 47 cd "$GO_PROJECT_SRC_PATH" && ./godelw verify --apply=false --junit-output="$CIRCLE_TEST_REPORTS/$CIRCLE_PROJECT_REPONAME/$CIRCLE_PROJECT_REPONAME-tests.xml" 48 ;; 49 1) 50 cd "$GO_PROJECT_SRC_PATH" && CGO_ENABLED=0 go install $(./godelw packages) && \ 51 mkdir -p "$CIRCLE_TEST_REPORTS/$CIRCLE_PROJECT_REPONAME" && \ 52 mkdir -p "$CIRCLE_TEST_REPORTS/$CIRCLE_PROJECT_REPONAME-integration" && \ 53 cd "$GO_PROJECT_SRC_PATH" && ./godelw test --tags=integration --junit-output="$CIRCLE_TEST_REPORTS/$CIRCLE_PROJECT_REPONAME-integration/$CIRCLE_PROJECT_REPONAME-integration-tests.xml" 54 ;; 55 2) 56 cd "$GO_PROJECT_SRC_PATH" && ./godelw dist godel && \ 57 docker run \ 58 -v "$GO_PROJECT_SRC_PATH":/go/src/$IMPORT_PATH \ 59 -v ~/.godel:/home/linuxbrew/.godel \ 60 -e IMPORT_PATH \ 61 nmiyake/go:brew-go \ 62 /bin/sh -c 'cd /go/src/$IMPORT_PATH; go version; go env; ./godelw test --tags=integration' 63 ;; 64 3) 65 cd "$GO_PROJECT_SRC_PATH" && ./godelw dist godel && \ 66 docker run \ 67 -v "$GO_PROJECT_SRC_PATH":/go/src/$IMPORT_PATH \ 68 -v ~/.godel:/root/.godel \ 69 -e IMPORT_PATH \ 70 nmiyake/go:alpine-go-1.6 \ 71 /bin/sh -c 'cd /go/src/$IMPORT_PATH; go version; go env; ./godelw test --tags=integration' 72 ;; 73 4) 74 sudo apt-get install rpm && \ 75 gem install fpm && \ 76 cd "$GO_PROJECT_SRC_PATH" && CGO_ENABLED=0 go install $(./godelw packages) && \ 77 cd "$GO_PROJECT_SRC_PATH" && CGO_ENABLED=0 go install ./vendor/github.com/palantir/amalgomate && \ 78 cd "$GO_PROJECT_SRC_PATH"/apps/gonform && go generate && \ 79 if [[ -z $(git status --porcelain) ]]; then \ 80 true; \ 81 else \ 82 echo "Generated source code differed from code in commit. See gonform_generated_code_diff.txt in artifacts directory for diff." && \ 83 (git diff > $CIRCLE_ARTIFACTS/gonform_generated_code_diff.txt) && \ 84 false; \ 85 fi && \ 86 if [[ -z $(git status --porcelain) ]]; then \ 87 true; \ 88 else \ 89 echo "Generated source code differed from code in commit. See gunit_generated_code_diff.txt in artifacts directory for diff." && \ 90 (git diff > $CIRCLE_ARTIFACTS/gunit_generated_code_diff.txt) && \ 91 false; \ 92 fi && \ 93 cd "$GO_PROJECT_SRC_PATH"/apps/okgo && go generate && \ 94 if [[ -z $(git status --porcelain) ]]; then \ 95 true; \ 96 else \ 97 echo "Generated source code differed from code in commit. See okgo_generated_code_diff.txt in artifacts directory for diff." && \ 98 (git diff > $CIRCLE_ARTIFACTS/okgo_generated_code_diff.txt) && \ 99 false; \ 100 fi && \ 101 cd "$GO_PROJECT_SRC_PATH" && ./godelw test --tags=distgo,gonform,gunit,okgo 102 ;; 103 *) 104 echo "Unexpected node $CIRCLE_NODE_INDEX" 105 ;; 106 esac 107 : 108 parallel: true 109 110 deployment: 111 master: 112 branch: master 113 owner: palantir 114 commands: 115 - cd "$GO_PROJECT_SRC_PATH" && ./godelw github-wiki --docs-dir docs --repository=git@github.com:palantir/godel.wiki.git 116 release: 117 tag: /[0-9]+(\.[0-9]+)+(-rc[0-9]+)?(-alpha[0-9]+)?/ 118 owner: palantir 119 commands: 120 - cd "$GO_PROJECT_SRC_PATH" && ./godelw publish bintray --url https://api.bintray.com --subject palantir --repository releases --user "$BINTRAY_USER" --password "$BINTRAY_PASSWORD" --publish --downloads-list godel