mirror of
https://github.com/weaveworks/scope.git
synced 2026-07-16 20:11:09 +00:00
205 lines
6.5 KiB
YAML
205 lines
6.5 KiB
YAML
version: 2
|
|
|
|
defaults: &defaults
|
|
working_directory: /go/src/github.com/weaveworks/scope
|
|
docker:
|
|
- image: weaveworks/scope-backend-build:master-fda40b83
|
|
|
|
client-defaults: &client-defaults
|
|
working_directory: /home/weave/scope
|
|
docker:
|
|
- image: weaveworks/scope-ui-build:master-c0b60a16
|
|
|
|
workflows:
|
|
version: 2
|
|
test_and_deploy:
|
|
jobs:
|
|
- lint
|
|
- unit-test
|
|
- client-build
|
|
- client-test:
|
|
requires:
|
|
- client-build
|
|
- xplatform-build:
|
|
requires:
|
|
- build
|
|
- build:
|
|
requires:
|
|
- client-build
|
|
- integration-tests:
|
|
requires:
|
|
- lint
|
|
- unit-test
|
|
- build
|
|
- deploy:
|
|
filters:
|
|
branches:
|
|
only: master
|
|
requires:
|
|
- client-test
|
|
- integration-tests
|
|
|
|
jobs:
|
|
lint:
|
|
<<: *defaults
|
|
steps:
|
|
- checkout
|
|
- run: make BUILD_IN_CONTAINER=false lint
|
|
|
|
unit-test:
|
|
<<: *defaults
|
|
parallelism: 1
|
|
steps:
|
|
- checkout
|
|
- run: COVERDIR=./coverage make BUILD_IN_CONTAINER=false CODECGEN_UID=23 tests
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- coverage
|
|
|
|
# Create client/build/index.html
|
|
client-build:
|
|
<<: *client-defaults
|
|
steps:
|
|
- checkout
|
|
- restore_cache:
|
|
name: Restoring Yarn Cache
|
|
key: yarn-cache-2-{{ checksum "client/yarn.lock" }}
|
|
- restore_cache:
|
|
name: Restoring client/node_modules
|
|
key: node-modules-{{ checksum "client/yarn.lock" }}-{{ checksum ".circleci/config.yml" }}
|
|
- run: cd client; yarn install
|
|
- save_cache:
|
|
name: Saving Yarn Cache
|
|
key: yarn-cache-2-{{ checksum "client/yarn.lock" }}
|
|
paths:
|
|
- "/home/weave/scope/.cache/yarn"
|
|
- save_cache:
|
|
name: Saving client/node_modules
|
|
# include the CI config in the checksum because it will change when the docker image changes
|
|
key: node-modules-{{ checksum "client/yarn.lock" }}-{{ checksum ".circleci/config.yml" }}
|
|
paths:
|
|
- "/home/weave/scope/client/node_modules"
|
|
- run: |
|
|
cd client
|
|
yarn run build
|
|
yarn run build-external
|
|
yarn run bundle
|
|
- persist_to_workspace:
|
|
root: /home/weave/scope
|
|
paths:
|
|
- client/build/
|
|
- client/build-external/
|
|
- client/bundle/weave-scope.tgz
|
|
|
|
|
|
client-test:
|
|
<<: *client-defaults
|
|
steps:
|
|
- checkout
|
|
- restore_cache:
|
|
name: Restoring Yarn Cache
|
|
key: yarn-cache-2-{{ checksum "client/yarn.lock" }}
|
|
- restore_cache:
|
|
name: Restoring client/node_modules
|
|
key: node-modules-{{ checksum "client/yarn.lock" }}-{{ checksum ".circleci/config.yml" }}
|
|
- run: |
|
|
cd client
|
|
yarn install
|
|
yarn run lint
|
|
yarn test
|
|
|
|
xplatform-build:
|
|
<<: *defaults
|
|
steps:
|
|
- checkout
|
|
- run: GOARCH=arm make BUILD_IN_CONTAINER=false GO_BUILD_INSTALL_DEPS= prog/scope
|
|
- run: GOOS=darwin make BUILD_IN_CONTAINER=false GO_BUILD_INSTALL_DEPS= prog/scope
|
|
|
|
build:
|
|
<<: *defaults
|
|
steps:
|
|
- checkout
|
|
- setup_remote_docker
|
|
- attach_workspace:
|
|
at: .
|
|
- run: make BUILD_IN_CONTAINER=false SUDO= static all
|
|
- run: cd extras; make BUILD_IN_CONTAINER=false
|
|
- run: make -C tools/runner
|
|
- persist_to_workspace:
|
|
root: .
|
|
paths:
|
|
- scope.tar
|
|
- cloud-agent.tar
|
|
- tools/runner/runner
|
|
- prog/externalui/
|
|
- prog/staticui/
|
|
- report/report.codecgen.go
|
|
- render/detailed/detailed.codecgen.go
|
|
|
|
integration-tests:
|
|
machine:
|
|
image: circleci/classic:201709-01
|
|
working_directory: /home/circleci/src/github.com/weaveworks/scope
|
|
environment:
|
|
CIRCLE_ARTIFACTS: /tmp/artifacts
|
|
CLOUDSDK_CORE_DISABLE_PROMPTS: 1
|
|
GOPATH: /home/circleci/
|
|
parallelism: 2
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: .
|
|
- run: |
|
|
sudo apt-get update
|
|
sudo apt-get install python-pip jq pv
|
|
- run: mkdir $CIRCLE_ARTIFACTS
|
|
# kick off creation of test VMs
|
|
- run: test -z "$SECRET_PASSWORD" || bin/setup-circleci-secrets "$SECRET_PASSWORD"
|
|
- run: test -z "$SECRET_PASSWORD" || (cd integration; ./gce.sh make_template)
|
|
- run: test -z "$SECRET_PASSWORD" || (cd integration; ./gce.sh setup && eval $(./gce.sh hosts); ./setup.sh)
|
|
- run: make deps; touch tools/runner/runner
|
|
# Run all integration tests
|
|
- run:
|
|
command: test -z "$SECRET_PASSWORD" || (cd integration; eval $(./gce.sh hosts); ./run_all.sh)
|
|
no_output_timeout: 5m
|
|
# Destroy testing VMs:
|
|
- run:
|
|
command: test -z "$SECRET_PASSWORD" || (cd integration; ./gce.sh destroy)
|
|
background: true
|
|
# Code coverage
|
|
- run: ./tools/cover/gather_coverage.sh ./coverage
|
|
- run: goveralls -repotoken $COVERALLS_REPO_TOKEN -coverprofile=profile.cov -service=circleci
|
|
- run: cp coverage.* */*.codecgen.go $CIRCLE_ARTIFACTS
|
|
- store_artifacts:
|
|
path: /tmp/artifacts
|
|
|
|
deploy:
|
|
<<: *defaults
|
|
environment:
|
|
IMAGES: scope cloud-agent
|
|
steps:
|
|
- checkout
|
|
- setup_remote_docker
|
|
- attach_workspace:
|
|
at: .
|
|
- run: |
|
|
pip install awscli
|
|
docker load -i scope.tar
|
|
docker load -i cloud-agent.tar
|
|
- run: |
|
|
test -z "${DOCKER_USER}" && exit 0
|
|
docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS
|
|
for IMAGE in $IMAGES; do
|
|
test "${DOCKER_ORGANIZATION:-$DOCKER_USER}" = "weaveworks" || docker tag weaveworks/$IMAGE:latest ${DOCKER_ORGANIZATION:-$DOCKER_USER}/$IMAGE:latest
|
|
docker tag weaveworks/$IMAGE:latest ${DOCKER_ORGANIZATION:-$DOCKER_USER}/$IMAGE:$(./tools/image-tag)
|
|
docker push ${DOCKER_ORGANIZATION:-$DOCKER_USER}/$IMAGE:latest
|
|
docker push ${DOCKER_ORGANIZATION:-$DOCKER_USER}/$IMAGE:$(./tools/image-tag)
|
|
done
|
|
- run: |
|
|
test -z "${QUAY_USER}" && exit 0
|
|
docker login -e '.' -u "$QUAY_USER" -p "$QUAY_PASSWORD" quay.io
|
|
docker tag weaveworks/scope:$(./tools/image-tag) "quay.io/${QUAY_ORGANIZATION}/scope:$(./tools/image-tag)"
|
|
docker push "quay.io/${QUAY_ORGANIZATION}/scope:$(./tools/image-tag)"
|
|
- run: test -z "${UI_BUCKET_KEY_ID}" || (make BUILD_IN_CONTAINER=false ui-upload ui-pkg-upload)
|