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