storybook/.circleci/config.yml

482 lines
15 KiB
YAML

version: 2.1
executors:
sb_node:
parameters:
class:
description: The Resource class
type: enum
enum: ["small", "medium", "large", "xlarge"]
default: "medium"
working_directory: /tmp/storybook
docker:
- image: circleci/node:10-browsers
environment:
NODE_OPTIONS: --max_old_space_size=4096
resource_class: <<parameters.class>>
jobs:
build:
executor:
class: large
name: sb_node
steps:
- add_ssh_keys:
fingerprints:
- 35:aa:b9:c3:b8:1c:27:1f:02:0a:73:1a:ac:58:77:df
- run:
name: Clone GitHub repository
command: echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config && git clone -b ${CIRCLE_BRANCH} --single-branch --depth=1 git@github.com:storybookjs/storybook.git /tmp/storybook
- run:
name: Remove examples
command: rm -rf examples/
- restore_cache:
name: Restore Yarn cache
keys:
- build-yarn-cache-v1--{{ checksum "yarn.lock" }}
- build-yarn-cache-v1--
- run:
name: Install dependencies
command: yarn install --frozen-lockfile --cache-folder ~/.cache/yarn
- run:
name: Bootstrap
command: yarn bootstrap --core
- save_cache:
name: Save Yarn cache
key: build-yarn-cache-v1--{{ checksum "yarn.lock" }}
paths:
- ~/.cache/yarn
- persist_to_workspace:
root: .
paths:
- addons
- dev-kits
- app
- lib
install-examples-deps:
executor:
class: large
name: sb_node
steps:
- add_ssh_keys:
fingerprints:
- 35:aa:b9:c3:b8:1c:27:1f:02:0a:73:1a:ac:58:77:df
- run:
name: Clone GitHub repository
command: echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config && git clone -b ${CIRCLE_BRANCH} --single-branch --depth=1 git@github.com:storybookjs/storybook.git /tmp/storybook
- restore_cache:
name: Restore Yarn cache
keys:
- install-examples-deps-yarn-cache-v1--{{ checksum "yarn.lock" }}
- install-examples-deps-yarn-cache-v1--
- run:
name: Install dependencies
command: yarn install --frozen-lockfile --cache-folder ~/.cache/yarn
- save_cache:
name: Save Yarn cache
key: install-examples-deps-yarn-cache-v1--{{ checksum "yarn.lock" }}
paths:
- ~/.cache/yarn
- persist_to_workspace:
root: .
paths:
- examples
- node_modules
install-e2e-deps:
executor:
class: large
name: sb_node
steps:
- add_ssh_keys:
fingerprints:
- 35:aa:b9:c3:b8:1c:27:1f:02:0a:73:1a:ac:58:77:df
- run:
name: Clone GitHub repository
command: echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config && git clone -b ${CIRCLE_BRANCH} --single-branch --depth=1 git@github.com:storybookjs/storybook.git /tmp/storybook
- run:
name: Keep only root package
command: rm -rf examples/ && rm -rf addons/ && rm -rf app/ && rm -rf lib/
- restore_cache:
name: Restore Yarn cache
keys:
- install-e2e-deps-yarn-cache-v1--{{ checksum "yarn.lock" }}
- install-e2e-deps-yarn-cache-v1--
- run:
name: Install dependencies
command: yarn install --frozen-lockfile --cache-folder ~/.cache/yarn
- save_cache:
name: Save Yarn cache
key: install-e2e-deps-yarn-cache-v1--{{ checksum "yarn.lock" }}
paths:
- ~/.cache/yarn
- persist_to_workspace:
root: .
paths:
- examples
- node_modules
chromatic:
executor: sb_node
parallelism: 11
steps:
- add_ssh_keys:
fingerprints:
- 35:aa:b9:c3:b8:1c:27:1f:02:0a:73:1a:ac:58:77:df
- run:
name: Clone GitHub repository
command: echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config && git clone -b ${CIRCLE_BRANCH} --single-branch --depth=1 git@github.com:storybookjs/storybook.git /tmp/storybook
- attach_workspace:
at: .
- run:
name: examples
command: |
yarn run-chromatics
packtracker:
executor:
class: medium
name: sb_node
steps:
- checkout
- attach_workspace:
at: .
- run:
name: Report webpack stats for manager of official storybook
command: |
cd examples/official-storybook
yarn packtracker
examples:
executor:
class: large
name: sb_node
parallelism: 11
steps:
- add_ssh_keys:
fingerprints:
- 35:aa:b9:c3:b8:1c:27:1f:02:0a:73:1a:ac:58:77:df
- run:
name: Clone GitHub repository
command: echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config && git clone -b ${CIRCLE_BRANCH} --single-branch --depth=1 git@github.com:storybookjs/storybook.git /tmp/storybook
- attach_workspace:
at: .
- run:
name: examples
command: |
yarn build-storybooks
- persist_to_workspace:
root: .
paths:
- built-storybooks
publish:
executor:
class: large
name: sb_node
steps:
- add_ssh_keys:
fingerprints:
- 35:aa:b9:c3:b8:1c:27:1f:02:0a:73:1a:ac:58:77:df
- run:
name: Clone GitHub repository
command: echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config && git clone -b ${CIRCLE_BRANCH} --single-branch --depth=1 git@github.com:storybookjs/storybook.git /tmp/storybook
- attach_workspace:
at: .
- run:
name: running local registry
command: yarn local-registry --publish
- persist_to_workspace:
root: .
paths:
- .verdaccio-cache
examples-v2:
executor:
class: large
name: sb_node
docker:
- image: cypress/included:4.7.0
environment:
TERM: xterm
working_directory: /tmp/storybook
parallelism: 10
steps:
- add_ssh_keys:
fingerprints:
- 35:aa:b9:c3:b8:1c:27:1f:02:0a:73:1a:ac:58:77:df
- run:
name: Clone GitHub repository
command: echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config && git clone -b ${CIRCLE_BRANCH} --single-branch --depth=1 git@github.com:storybookjs/storybook.git /tmp/storybook
- attach_workspace:
at: .
- run:
name: running local registry
command: yarn local-registry --port 6000 --open
background: true
- run:
name: wait for registry
command: yarn wait-on http://localhost:6000
- run:
name: set registry
command: yarn config set registry http://localhost:6000/
- run:
name: test local registry
command: yarn info @storybook/core
- run:
name: run e2e tests
command: yarn test:e2e-framework
- store_artifacts:
path: /tmp/storybook/cypress
destination: cypress
examples-v2-yarn-2:
docker:
- image: cypress/included:4.7.0
environment:
TERM: xterm
working_directory: /tmp/storybook
# parallelism: 10
steps:
- add_ssh_keys:
fingerprints:
- 35:aa:b9:c3:b8:1c:27:1f:02:0a:73:1a:ac:58:77:df
- run:
name: Clone GitHub repository
command: echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config && git clone -b ${CIRCLE_BRANCH} --single-branch --depth=1 git@github.com:storybookjs/storybook.git /tmp/storybook
- attach_workspace:
at: .
- run:
name: running local registry
command: yarn local-registry --port 6000 --open
background: true
- run:
name: wait for registry
command: yarn wait-on http://localhost:6000
- run:
name: set registry
command: yarn config set registry http://localhost:6000/
- run:
name: test local registry
command: yarn info @storybook/core
- run:
name: run e2e tests
command: yarn test:e2e-framework --use-yarn-2 sfcVue cra
- store_artifacts:
path: /tmp/storybook/cypress
destination: cypress
e2e:
working_directory: /tmp/storybook
docker:
- image: cypress/included:4.7.0
environment:
TERM: xterm
steps:
- add_ssh_keys:
fingerprints:
- 35:aa:b9:c3:b8:1c:27:1f:02:0a:73:1a:ac:58:77:df
- run:
name: Clone GitHub repository
command: echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config && git clone -b ${CIRCLE_BRANCH} --single-branch --depth=1 git@github.com:storybookjs/storybook.git /tmp/storybook
- attach_workspace:
at: .
- run:
name: running example
command: yarn serve-storybooks
background: true
- run:
name: await running examples
command: yarn await-serve-storybooks
- run:
name: cypress run
command: yarn test:e2e
- store_artifacts:
path: /tmp/storybook/cypress
destination: cypress
smoke-tests:
executor:
class: medium
name: sb_node
steps:
- add_ssh_keys:
fingerprints:
- 35:aa:b9:c3:b8:1c:27:1f:02:0a:73:1a:ac:58:77:df
- run:
name: Clone GitHub repository
command: echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config && git clone -b ${CIRCLE_BRANCH} --single-branch --depth=1 git@github.com:storybookjs/storybook.git /tmp/storybook
- attach_workspace:
at: .
- run:
name: Run react kitchen-sink (smoke test)
command: |
cd examples/cra-kitchen-sink
yarn storybook --smoke-test --quiet
- run:
name: Run react typescript kitchen-sink (smoke test)
command: |
cd examples/cra-ts-kitchen-sink
yarn storybook --smoke-test --quiet
- run:
name: Run vue kitchen-sink (smoke test)
command: |
cd examples/vue-kitchen-sink
yarn storybook --smoke-test --quiet
- run:
name: Run svelte kitchen-sink (smoke test)
command: |
cd examples/svelte-kitchen-sink
yarn storybook --smoke-test --quiet
- run:
name: Run angular-cli (smoke test)
command: |
cd examples/angular-cli
yarn storybook --smoke-test --quiet
- run:
name: Run ember-cli (smoke test)
command: |
cd examples/ember-cli
yarn storybook --smoke-test --quiet
- run:
name: Run marko-cli (smoke test)
command: |
cd examples/marko-cli
yarn storybook --smoke-test --quiet
- run:
name: Run official-storybook (smoke test)
command: |
cd examples/official-storybook
yarn storybook --smoke-test --quiet
- run:
name: Run mithril kitchen-sink (smoke test)
command: |
cd examples/mithril-kitchen-sink
yarn storybook --smoke-test --quiet
- run:
name: Run riot kitchen-sink (smoke test)
command: |
cd examples/riot-kitchen-sink
yarn storybook --smoke-test --quiet
- run:
name: Run preact kitchen-sink (smoke test)
command: |
cd examples/preact-kitchen-sink
yarn storybook --smoke-test --quiet
- run:
name: Run cra reac15 (smoke test)
command: |
cd examples/cra-react15
yarn storybook --smoke-test --quiet
frontpage:
executor: sb_node
steps:
- add_ssh_keys:
fingerprints:
- 35:aa:b9:c3:b8:1c:27:1f:02:0a:73:1a:ac:58:77:df
- run:
name: Clone GitHub repository
command: echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config && git clone -b ${CIRCLE_BRANCH} --single-branch --depth=1 git@github.com:storybookjs/storybook.git /tmp/storybook
- restore_cache:
name: Restore core dependencies cache
keys:
- core-dependencies-v5-{{ checksum "yarn.lock" }}
- run:
name: Install dependencies
command: yarn bootstrap --install
- run:
name: Trigger build
command: ./scripts/build-frontpage.js
lint:
executor:
class: small
name: sb_node
steps:
- add_ssh_keys:
fingerprints:
- 35:aa:b9:c3:b8:1c:27:1f:02:0a:73:1a:ac:58:77:df
- run:
name: Clone GitHub repository
command: echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config && git clone -b ${CIRCLE_BRANCH} --single-branch --depth=1 git@github.com:storybookjs/storybook.git /tmp/storybook
- attach_workspace:
at: .
- run:
name: Lint
command: yarn lint
test:
executor: sb_node
steps:
- add_ssh_keys:
fingerprints:
- 35:aa:b9:c3:b8:1c:27:1f:02:0a:73:1a:ac:58:77:df
- run:
name: Clone GitHub repository
command: echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config && git clone -b ${CIRCLE_BRANCH} --single-branch --depth=1 git@github.com:storybookjs/storybook.git /tmp/storybook
- attach_workspace:
at: .
- run:
name: Test
command: yarn test --coverage --w2 --core
- persist_to_workspace:
root: .
paths:
- coverage
coverage:
executor:
class: small
name: sb_node
steps:
- add_ssh_keys:
fingerprints:
- 35:aa:b9:c3:b8:1c:27:1f:02:0a:73:1a:ac:58:77:df
- run:
name: Clone GitHub repository
command: echo -e "Host github.com\n\tStrictHostKeyChecking no\n" > ~/.ssh/config && git clone -b ${CIRCLE_BRANCH} --single-branch --depth=1 git@github.com:storybookjs/storybook.git /tmp/storybook
- attach_workspace:
at: .
- run:
name: Upload coverage
command: yarn coverage
workflows:
test:
jobs:
- build
- install-e2e-deps
- install-examples-deps
- lint:
requires:
- install-examples-deps
- build
- examples:
requires:
- install-examples-deps
- build
- e2e:
requires:
- examples
- smoke-tests:
requires:
- install-examples-deps
- build
- packtracker:
requires:
- install-examples-deps
- build
- test:
requires:
- install-examples-deps
- build
- coverage:
requires:
- test
- chromatic:
requires:
- examples
- publish:
requires:
- install-e2e-deps
- build
- examples-v2:
requires:
- publish
- examples-v2-yarn-2:
requires:
- publish
deploy:
jobs:
- frontpage