github.com/gochain-io/gochain@v2.2.26+incompatible/.circleci/config.yml (about)

     1  version: 2.0
     2  
     3  defaults: &defaults
     4    working_directory: /go/src/github.com/gochain-io/gochain
     5    docker:
     6      - image: circleci/golang:1.11.2
     7    environment: # apparently expansion doesn't work here yet: https://discuss.circleci.com/t/environment-variable-expansion-in-working-directory/11322
     8      - OS=linux
     9      - ARCH=amd64
    10      - GOCACHE=/tmp/go/cache
    11  
    12  jobs:
    13    prepare:
    14      <<: *defaults
    15      steps:
    16        - checkout
    17        - run:
    18            name: install dependencies
    19            command: |
    20              go get -u github.com/golang/dep/cmd/dep
    21              dep ensure --vendor-only
    22        - persist_to_workspace:
    23            root: .
    24            paths:
    25              - .
    26    build:
    27      <<: *defaults
    28      steps:
    29        - restore_cache:
    30            keys:
    31                - build-cache-{{ .Branch }}-{{ .Environment.CIRCLE_PREVIOUS_BUILD_NUM }}
    32                - build-cache-{{ .Branch }}-
    33                - build-cache-
    34            paths:
    35                - /tmp/go/cache
    36        - attach_workspace:
    37            at: .
    38        - run: make all
    39        - save_cache:
    40            key: build-cache-{{ .Branch }}-{{ .Environment.CIRCLE_BUILD_NUM }}
    41            paths:
    42                - /tmp/go/cache
    43  
    44    test:
    45      <<: *defaults
    46      steps:
    47        - restore_cache:
    48            keys:
    49                - test-cache-{{ .Branch }}-{{ .Environment.CIRCLE_PREVIOUS_BUILD_NUM }}
    50                - test-cache-{{ .Branch }}-
    51                - test-cache-
    52            paths:
    53                - /tmp/go/cache
    54        - attach_workspace:
    55            at: .
    56        - run: go test -p=8 $(go list ./... | grep -v /swarm/fuse)
    57        - save_cache:
    58            key: test-cache-{{ .Branch }}-{{ .Environment.CIRCLE_BUILD_NUM }}
    59            paths:
    60                - /tmp/go/cache
    61  
    62    # Separate since fuse is not supported via containers.
    63    test-fuse:
    64      machine: true
    65      working_directory: ~/go/src/github.com/gochain-io/gochain
    66      environment: # apparently expansion doesn't work here yet: https://discuss.circleci.com/t/environment-variable-expansion-in-working-directory/11322
    67        - GOPATH=/home/circleci/go
    68        - GOVERSION=1.11.2
    69        - OS=linux
    70        - ARCH=amd64
    71      steps:
    72        - restore_cache:
    73            keys:
    74                - test-fuse-cache-{{ .Branch }}-{{ .Environment.CIRCLE_PREVIOUS_BUILD_NUM }}
    75                - test-fuse-cache-{{ .Branch }}-
    76                - test-fuse-cache-
    77            paths:
    78                - /tmp/go/cache
    79        - checkout
    80        - run:
    81            name: update Go
    82            command: |
    83              go version
    84              go env GOROOT
    85              mkdir tmp
    86              cd tmp
    87              sudo rm -rf /usr/local/go
    88              wget https://storage.googleapis.com/golang/go$GOVERSION.$OS-$ARCH.tar.gz
    89              sudo tar -C /usr/local -xzf go$GOVERSION.$OS-$ARCH.tar.gz
    90              export PATH=$PATH:$HOME/go/bin
    91        - run: go version
    92        - run:
    93            name: install dependencies
    94            command: |
    95              go get -u github.com/golang/dep/cmd/dep
    96              ${GOPATH}/bin/dep ensure --vendor-only
    97        - run: make all
    98        - run: go test ./swarm/fuse
    99        - save_cache:
   100            key: test-fuse-cache-{{ .Branch }}-{{ .Environment.CIRCLE_BUILD_NUM }}
   101            paths:
   102                - /tmp/go/cache
   103  
   104    race:
   105      <<: *defaults
   106      steps:
   107        - restore_cache:
   108            keys:
   109                - race-cache-{{ .Branch }}-{{ .Environment.CIRCLE_PREVIOUS_BUILD_NUM }}
   110                - race-cache-{{ .Branch }}-
   111                - race-cache-
   112            paths:
   113                - /tmp/go/cache
   114        - attach_workspace:
   115            at: .
   116        - run: go test -race ./core/...
   117        - save_cache:
   118            key: race-cache-{{ .Branch }}-{{ .Environment.CIRCLE_BUILD_NUM }}
   119            paths:
   120                - /tmp/go/cache
   121  
   122    release-master:
   123      <<: *defaults
   124      steps:
   125        - setup_remote_docker:
   126            docker_layer_caching: true
   127        - attach_workspace:
   128            at: .
   129        - run:
   130            name: install dependencies
   131            command: |
   132              wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-204.0.0-linux-x86_64.tar.gz --directory-prefix=tmp
   133              tar -xvzf tmp/google-cloud-sdk-204.0.0-linux-x86_64.tar.gz -C tmp
   134              ./tmp/google-cloud-sdk/install.sh -q
   135        - run:
   136            name: add github ssh
   137            command: |
   138              echo '
   139              github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
   140              ' >> ~/.ssh/known_hosts
   141        - deploy:
   142            command: |
   143              if [[ "${CIRCLE_BRANCH}" == "master" && -z "${CIRCLE_PR_REPONAME}" ]]; then
   144                git config --global user.email "ci@gochain.io"
   145                git config --global user.name "CI"
   146                git branch --set-upstream-to=origin/${CIRCLE_BRANCH} ${CIRCLE_BRANCH}
   147                echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
   148                echo $GOOGLE_AUTH > ${HOME}/gcloud-service-key.json
   149                echo $GOOGLE_AUTH | docker login -u _json_key --password-stdin https://gcr.io
   150                ./release.sh
   151              fi
   152  
   153    docker:
   154      <<: *defaults
   155      steps:
   156        - setup_remote_docker:
   157            docker_layer_caching: true
   158        - attach_workspace:
   159            at: .
   160        - run:
   161            name: install dependencies
   162            command: |
   163              wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-204.0.0-linux-x86_64.tar.gz --directory-prefix=tmp
   164              tar -xvzf tmp/google-cloud-sdk-204.0.0-linux-x86_64.tar.gz -C tmp
   165              ./tmp/google-cloud-sdk/install.sh -q
   166        - deploy:
   167            command: |
   168              echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
   169              docker build . -t gochain/gochain:${CIRCLE_BRANCH}
   170              docker push gochain/gochain:${CIRCLE_BRANCH}
   171              echo $GOOGLE_AUTH > ${HOME}/gcloud-service-key.json
   172              echo $GOOGLE_AUTH | docker login -u _json_key --password-stdin https://gcr.io
   173              ./tmp/google-cloud-sdk/bin/gcloud auth activate-service-account --key-file=${HOME}/gcloud-service-key.json
   174              docker tag gochain/gochain:${CIRCLE_BRANCH} gcr.io/gochain-core/gochain:${CIRCLE_BRANCH}
   175              docker push gcr.io/gochain-core/gochain:${CIRCLE_BRANCH}
   176  
   177  workflows:
   178    version: 2
   179    prepare-accept-deploy:
   180      jobs:
   181        - prepare
   182        - build:
   183            requires:
   184              - prepare
   185  
   186        - test:
   187            requires:
   188              - prepare
   189        - test-fuse:
   190            requires:
   191              - prepare
   192        - race:
   193            requires:
   194              - prepare
   195  
   196        - release-master:
   197            filters:
   198              branches:
   199                only: master
   200            requires:
   201              - build
   202              - test
   203              - test-fuse
   204              - race
   205  
   206        - approve-docker:
   207            type: approval
   208            filters:
   209              branches:
   210                ignore:
   211                - master
   212                - stable
   213                - testnet
   214                - latest
   215            requires:
   216              - test
   217              - build
   218              - test-fuse
   219              - race
   220  
   221        - docker:
   222            requires:
   223              - approve-docker