### Generated by 'make ci-config' do not manually edit this file. version: 2 jobs: install-ui-dependencies: docker: - image: node:10-stretch working_directory: /src steps: - checkout - restore_cache: key: yarn-lock-v1-{{ checksum "ui/yarn.lock" }} - run: command: | set -eux -o pipefail cd ui yarn install --ignore-optional npm rebuild node-sass name: Install UI dependencies - save_cache: key: yarn-lock-v1-{{ checksum "ui/yarn.lock" }} paths: - ui/node_modules go-mod-download: docker: - image: golang:1.12.4-stretch working_directory: /src steps: - add_ssh_keys: fingerprints: - c6:96:98:82:dc:04:6c:39:dd:ac:83:05:e3:15:1c:98 - checkout - restore_cache: key: go-sum-v1-{{ checksum "go.sum" }} - run: command: go mod download name: Download Go modules - run: command: go mod verify name: Verify checksums of Go modules - save_cache: key: go-sum-v1-{{ checksum "go.sum" }} paths: - /go/pkg/mod build-go-dev: docker: - image: golang:1.12.4-stretch working_directory: /src steps: - checkout - restore_cache: key: go-sum-v1-{{ checksum "go.sum" }} - attach_workspace: at: . - run: command: | set -eux -o pipefail # Move dev UI assets to expected location rm -rf ./pkg mkdir ./pkg # Build dev binary make bootstrap dev name: Build dev binary - persist_to_workspace: paths: - bin root: . test-ui: docker: - image: node:10-stretch working_directory: /src resource_class: medium+ steps: - checkout - restore_cache: key: yarn-lock-v1-{{ checksum "ui/yarn.lock" }} - attach_workspace: at: . - run: command: | set -eux -o pipefail # Install Chrome wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub \ | apt-key add - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" \ | tee /etc/apt/sources.list.d/google-chrome.list apt-get update apt-get -y install google-chrome-stable rm /etc/apt/sources.list.d/google-chrome.list rm -rf /var/lib/apt/lists/* /var/cache/apt/* # Add ./bin to the PATH so vault binary can be run by Ember tests export PATH="${PWD}/bin:${PATH}" # Run Ember tests cd ui mkdir -p test-results/qunit yarn run test-oss name: Test UI - store_artifacts: path: ui/test-results - store_test_results: path: ui/test-results test-go: machine: true working_directory: ~/src parallelism: 2 steps: - checkout - run: command: | set -eux -o pipefail sudo mkdir /go sudo chown -R circleci:circleci /go name: Allow circleci user to restore Go modules cache - restore_cache: key: go-sum-v1-{{ checksum "go.sum" }} - run: command: | set -eux -o pipefail # Install Go curl -sSLO "https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz" sudo rm -rf /usr/local/go sudo tar -C /usr/local -xzf "go${GO_VERSION}.linux-amd64.tar.gz" rm -f "go${GO_VERSION}.linux-amd64.tar.gz" export GOPATH=/go export PATH="${PATH}:${GOPATH}/bin:/usr/local/go/bin" # Install CircleCI CLI curl -sSL \ "https://github.com/CircleCI-Public/circleci-cli/releases/download/v${CIRCLECI_CLI_VERSION}/circleci-cli_${CIRCLECI_CLI_VERSION}_linux_amd64.tar.gz" \ | sudo tar --overwrite -xz \ -C /usr/local/bin \ "circleci-cli_${CIRCLECI_CLI_VERSION}_linux_amd64/circleci" # Split Go tests by prior test times package_names=$(go list \ -tags "${GO_TAGS}" \ ./... \ | grep -v /integ \ | grep -v /vendor/ \ | sort \ | circleci tests split --split-by=timings --timings-type=classname) # Install gotestsum curl -sSL "https://github.com/gotestyourself/gotestsum/releases/download/v${GOTESTSUM_VERSION}/gotestsum_${GOTESTSUM_VERSION}_linux_amd64.tar.gz" \ | sudo tar --overwrite -xz -C /usr/local/bin gotestsum # Run tests make prep mkdir -p test-results/go-test CGO_ENABLED= \ VAULT_ADDR= \ VAULT_TOKEN= \ VAULT_DEV_ROOT_TOKEN_ID= \ VAULT_ACC= \ gotestsum --format=short-verbose --junitfile test-results/go-test/results.xml -- \ -tags "${GO_TAGS}" \ -timeout=40m \ -parallel=20 \ \ ${package_names} name: Run Go tests no_output_timeout: 20m - store_artifacts: path: test-results - store_test_results: path: test-results environment: - CIRCLECI_CLI_VERSION: 0.1.5546 - GO_TAGS: null - GO_VERSION: 1.12.4 - GOTESTSUM_VERSION: 0.3.3 test-go-race: machine: true working_directory: ~/src steps: - checkout - run: command: | set -eux -o pipefail sudo mkdir /go sudo chown -R circleci:circleci /go name: Allow circleci user to restore Go modules cache - restore_cache: key: go-sum-v1-{{ checksum "go.sum" }} - run: command: | set -eux -o pipefail # Install Go curl -sSLO "https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz" sudo rm -rf /usr/local/go sudo tar -C /usr/local -xzf "go${GO_VERSION}.linux-amd64.tar.gz" rm -f "go${GO_VERSION}.linux-amd64.tar.gz" export GOPATH=/go export PATH="${PATH}:${GOPATH}/bin:/usr/local/go/bin" # Install CircleCI CLI curl -sSL \ "https://github.com/CircleCI-Public/circleci-cli/releases/download/v${CIRCLECI_CLI_VERSION}/circleci-cli_${CIRCLECI_CLI_VERSION}_linux_amd64.tar.gz" \ | sudo tar --overwrite -xz \ -C /usr/local/bin \ "circleci-cli_${CIRCLECI_CLI_VERSION}_linux_amd64/circleci" # Split Go tests by prior test times package_names=$(go list \ -tags "${GO_TAGS}" \ ./... \ | grep -v /integ \ | grep -v /vendor/ \ | sort \ | circleci tests split --split-by=timings --timings-type=classname) # Install gotestsum curl -sSL "https://github.com/gotestyourself/gotestsum/releases/download/v${GOTESTSUM_VERSION}/gotestsum_${GOTESTSUM_VERSION}_linux_amd64.tar.gz" \ | sudo tar --overwrite -xz -C /usr/local/bin gotestsum # Run tests make prep mkdir -p test-results/go-test CGO_ENABLED= \ VAULT_ADDR= \ VAULT_TOKEN= \ VAULT_DEV_ROOT_TOKEN_ID= \ VAULT_ACC= \ gotestsum --format=short-verbose --junitfile test-results/go-test/results.xml -- \ -tags "${GO_TAGS}" \ -timeout=40m \ -parallel=20 \ -race \ ${package_names} name: Run Go tests no_output_timeout: 20m - store_artifacts: path: test-results - store_test_results: path: test-results environment: - CIRCLECI_CLI_VERSION: 0.1.5546 - GO_TAGS: null - GO_VERSION: 1.12.4 - GOTESTSUM_VERSION: 0.3.3 workflows: ci: jobs: - install-ui-dependencies - go-mod-download - build-go-dev: requires: - go-mod-download - test-ui: requires: - install-ui-dependencies - build-go-dev - test-go: requires: - build-go-dev - test-go-race: requires: - build-go-dev version: 2 # Original config.yml file: # commands: # go_test: # description: run go tests # parameters: # extra_flags: # default: \"\" # type: string # steps: # - run: # command: | # set -eux -o pipefail # # # Install Go # curl -sSLO \"https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz\" # sudo rm -rf /usr/local/go # sudo tar -C /usr/local -xzf \"go${GO_VERSION}.linux-amd64.tar.gz\" # rm -f \"go${GO_VERSION}.linux-amd64.tar.gz\" # export GOPATH=/go # export PATH=\"${PATH}:${GOPATH}/bin:/usr/local/go/bin\" # # # Install CircleCI CLI # curl -sSL \\ # \"https://github.com/CircleCI-Public/circleci-cli/releases/download/v${CIRCLECI_CLI_VERSION}/circleci-cli_${CIRCLECI_CLI_VERSION}_linux_amd64.tar.gz\" \\ # | sudo tar --overwrite -xz \\ # -C /usr/local/bin \\ # \"circleci-cli_${CIRCLECI_CLI_VERSION}_linux_amd64/circleci\" # # # Split Go tests by prior test times # package_names=$(go list \\ # -tags \"${GO_TAGS}\" \\ # ./... \\ # | grep -v /integ \\ # | grep -v /vendor/ \\ # | sort \\ # | circleci tests split --split-by=timings --timings-type=classname) # # # Install gotestsum # curl -sSL \"https://github.com/gotestyourself/gotestsum/releases/download/v${GOTESTSUM_VERSION}/gotestsum_${GOTESTSUM_VERSION}_linux_amd64.tar.gz\" \\ # | sudo tar --overwrite -xz -C /usr/local/bin gotestsum # # # Run tests # make prep # mkdir -p test-results/go-test # CGO_ENABLED= \\ # VAULT_ADDR= \\ # VAULT_TOKEN= \\ # VAULT_DEV_ROOT_TOKEN_ID= \\ # VAULT_ACC= \\ # gotestsum --format=short-verbose --junitfile test-results/go-test/results.xml -- \\ # -tags \"${GO_TAGS}\" \\ # -timeout=40m \\ # -parallel=20 \\ # << parameters.extra_flags >> \\ # ${package_names} # name: Run Go tests # no_output_timeout: 20m # restore_go_cache: # steps: # - restore_cache: # key: go-sum-v1-{{ checksum \"go.sum\" }} # restore_yarn_cache: # steps: # - restore_cache: # key: yarn-lock-v1-{{ checksum \"ui/yarn.lock\" }} # save_go_cache: # steps: # - save_cache: # key: go-sum-v1-{{ checksum \"go.sum\" }} # paths: # - /go/pkg/mod # save_yarn_cache: # steps: # - save_cache: # key: yarn-lock-v1-{{ checksum \"ui/yarn.lock\" }} # paths: # - ui/node_modules # executors: # go: # docker: # - image: golang:1.12.4-stretch # working_directory: /src # go-machine: # environment: # CIRCLECI_CLI_VERSION: 0.1.5546 # GO_TAGS: null # GO_VERSION: 1.12.4 # GOTESTSUM_VERSION: 0.3.3 # machine: true # working_directory: ~/src # node: # docker: # - image: node:10-stretch # working_directory: /src # jobs: # build-go-dev: # executor: go # steps: # - checkout # - restore_go_cache # - attach_workspace: # at: . # - run: # command: | # set -eux -o pipefail # # # Move dev UI assets to expected location # rm -rf ./pkg # mkdir ./pkg # # # Build dev binary # make bootstrap dev # name: Build dev binary # - persist_to_workspace: # paths: # - bin # root: . # go-mod-download: # executor: go # steps: # - add_ssh_keys: # fingerprints: # - c6:96:98:82:dc:04:6c:39:dd:ac:83:05:e3:15:1c:98 # - checkout # - restore_go_cache # - run: # command: go mod download # name: Download Go modules # - run: # command: go mod verify # name: Verify checksums of Go modules # - save_go_cache # install-ui-dependencies: # executor: node # steps: # - checkout # - restore_yarn_cache # - run: # command: | # set -eux -o pipefail # # cd ui # yarn install --ignore-optional # npm rebuild node-sass # name: Install UI dependencies # - save_yarn_cache # test-go: # executor: go-machine # parallelism: 2 # steps: # - checkout # - run: # command: | # set -eux -o pipefail # # sudo mkdir /go # sudo chown -R circleci:circleci /go # name: Allow circleci user to restore Go modules cache # - restore_go_cache # - go_test # - store_artifacts: # path: test-results # - store_test_results: # path: test-results # test-go-race: # executor: go-machine # steps: # - checkout # - run: # command: | # set -eux -o pipefail # # sudo mkdir /go # sudo chown -R circleci:circleci /go # name: Allow circleci user to restore Go modules cache # - restore_go_cache # - go_test: # extra_flags: -race # - store_artifacts: # path: test-results # - store_test_results: # path: test-results # test-ui: # executor: node # resource_class: medium+ # steps: # - checkout # - restore_yarn_cache # - attach_workspace: # at: . # - run: # command: | # set -eux -o pipefail # # # Install Chrome # wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub \\ # | apt-key add - # echo \"deb http://dl.google.com/linux/chrome/deb/ stable main\" \\ # | tee /etc/apt/sources.list.d/google-chrome.list # apt-get update # apt-get -y install google-chrome-stable # rm /etc/apt/sources.list.d/google-chrome.list # rm -rf /var/lib/apt/lists/* /var/cache/apt/* # # # Add ./bin to the PATH so vault binary can be run by Ember tests # export PATH=\"${PWD}/bin:${PATH}\" # # # Run Ember tests # cd ui # mkdir -p test-results/qunit # yarn run test-oss # name: Test UI # - store_artifacts: # path: ui/test-results # - store_test_results: # path: ui/test-results # references: # cache: # go-sum: go-sum-v1-{{ checksum \"go.sum\" }} # yarn-lock: yarn-lock-v1-{{ checksum \"ui/yarn.lock\" }} # images: # go: golang:1.12.4-stretch # node: node:10-stretch # version: 2.1 # workflows: # ci: # jobs: # - install-ui-dependencies # - go-mod-download # - build-go-dev: # requires: # - go-mod-download # - test-ui: # requires: # - install-ui-dependencies # - build-go-dev # - test-go: # requires: # - build-go-dev # - test-go-race: # requires: # - build-go-dev