aboutsummaryrefslogblamecommitdiffstats
path: root/.circleci/config.yml
blob: 08ff726ece7b04e6b9644a809c5a43a015749aeb (plain) (tree)
1
2
3
4
5
6
7
8
9
10




                 




                                                              











                                                       

                                                               


                             






                                                                        


          
           
                                   
                                                                          
 


                    
          
                      
                





                                                                     

                                 







                                                                      
                     









                              

                      
 





                                


                    
                    

















                                 
                 
 








                                                                          


              












                           
                              
 





                   


                   

                   
                      


                         
                      




                              
version: 2.1
commands:
  init_workspace:
    steps:
      - run:
          name: Install Dependency Libraries
          command: |
            sudo apt update
            sudo apt-get install openssl libssl-dev libgmp-dev
      - run:
          name: "Prepare Workspace"
          command: sudo chown -R `whoami` /go
      - attach_workspace:
          at: /go
  run_test:
    steps:
      - run:
          name: "Running Test"
          no_output_timeout: 900
          command: |
            if [ "${CIRCLE_BRANCH}" == "master" ]; then
              make test
            elif [ "${CIRCLE_BRANCH}" == "single-chain" ]; then
              make test
            else
              make test-short
            fi
  install_npm:
    steps:
      - run:
          name: Install npm
          command: |
            curl -sL https://deb.nodesource.com/setup_11.x | sudo bash -
            sudo apt-get install -y nodejs

executors:
  go1_11:
    docker:
      - image: circleci/golang:1.11
    working_directory: /go/src/github.com/dexon-foundation/dexon-consensus

jobs:
  dep:
    executor: go1_11
    steps:
      - init_workspace
      - checkout
      - restore_cache:
          keys:
            - v1-Gopkg.lock-{{ .Branch }}-{{ checksum "Gopkg.toml" }}
      - restore_cache:
          keys:
            - v1-vendor-{{ .Branch }}-{{ checksum "Gopkg.lock" }}
      - run: bin/install_tools.sh
      - run: dep ensure
      - save_cache:
          key: v1-Gopkg.lock-{{ .Branch }}-{{ checksum "Gopkg.toml" }}
          paths:
            - Gopkg.lock
      - save_cache:
          key: v1-vendor-{{ .Branch }}-{{ checksum "Gopkg.lock" }}
          paths:
            - vendor
      - run: make dep
      - persist_to_workspace:
          root: /go
          paths:
            - src
            - bin
  lint:
    executor: go1_11
    steps:
      - init_workspace
      - run: make check-format
      - run: make lint
      - run: make vet

  security:
    executor: go1_11
    steps:
      - init_workspace
      - run: make check-security

  unit_test:
    executor: go1_11
    environment: 
      GOCACHE: "off"
      NO_INTEGRATION_TEST: true
    steps:
      - init_workspace
      - run_test

  integration_test:
    executor: go1_11
    environment: 
      ONLY_INTEGRATION_TEST: true
      NO_TEST_RACE: true
    steps:
      - init_workspace
      - run_test

  build:
    executor: go1_11
    steps:
      - init_workspace
      - run: make

  snyk:
    executor: go1_11
    steps:
      - init_workspace
      - install_npm
      - run: sudo npm install -g snyk
      - run: snyk auth $SNYK_APIKEY_JHU
      - run: snyk monitor --org=dexon-foundation --project=dexon-consensus

workflows:
  version: 2.1

  nightly:
    jobs:
      - dep
      - snyk:
          requires:
            - dep
    triggers:
      - schedule:
          cron: "0 8 * * *"
          filters:
            branches:
              only:
                - master
                - single-chain

  test_and_build:
    jobs:
      - dep
      - lint:
          requires:
            - dep
      - security:
          requires:
            - dep
      - unit_test:
          requires:
            - security
            - lint
      - integration_test:
          requires:
            - security
            - lint
      - build:
          requires:
            - unit_test
            - integration_test