.circleci/config.yml
version: 2.1orbs: browser-tools: circleci/browser-tools@1.4.3 defaults: &defaults working_directory: ~/picassojs # Available images https://hub.docker.com/r/circleci/node/tags/ docker: - image: cimg/node:current-browsers jobs: install: <<: *defaults steps: - checkout - restore_cache: name: Restore pnpm cache keys: - pnpm-packages-{{ checksum "pnpm-lock.yaml" }} - run: name: Enable pnpm command: | corepack enable pnpm --install-directory ~/bin pnpm config set store-dir .pnpm-store - run: name: Install dependencies command: | pnpm install --frozen-lockfile - save_cache: name: Save pnpm cache key: pnpm-packages-{{ checksum "pnpm-lock.yaml" }} paths: - .pnpm-store - store_artifacts: path: package.json - persist_to_workspace: root: ~/picassojs paths: - . build: <<: *defaults steps: - attach_workspace: at: ~/picassojs - run: pnpm run build - store_artifacts: path: packages/picasso.js/dist - store_artifacts: path: plugins/q/dist - store_artifacts: path: plugins/hammer/dist - store_artifacts: path: docs/scriptappy.json - persist_to_workspace: root: ~/picassojs paths: - packages/*/dist - plugins/*/dist - docs/scriptappy.json lint: <<: *defaults steps: - attach_workspace: at: ~/picassojs - run: pnpm run lint types: <<: *defaults steps: - attach_workspace: at: ~/picassojs - run: pnpm run types:check api-governance: <<: *defaults steps: - attach_workspace: at: ~/picassojs - setup_remote_docker - run: name: Create version.txt command: | set -x if [ -n "${CIRCLE_TAG}" ]; then version=${CIRCLE_TAG#v} else version=$(git describe --tags --abbrev=7 --match "v*") version=${version#v} fi echo "$version" > ./version.txt echo "Building $version" - run: name: Prepare API Compliance command: | docker pull ghcr.io/qlik-download/api-compliance docker create -v /specs --name specs alpine:3.4 /bin/true cd ~/picassojs && docker cp ./docs/scriptappy.json specs:/specs - run: name: Run API Compliance command: > VER=v$(cat version.txt) docker run --volumes-from specs -e SPEC_PATHS="67d3d238-36cc-4579-8fcd-7762267171e9@/specs/scriptappy.json" -e COMMIT_SHA="$CIRCLE_SHA1" -e RELEASE_TAG="$VER" -e CREDENTIALS_S3_SECRETKEY="$APICULTURIST_S3" -e CREDENTIALS_GITHUB="$APICULTURIST_GITHUB" -e CREDENTIALS_COLONY="$APICULTURIST_TOKEN" ghcr.io/qlik-download/api-compliance test-component: <<: *defaults steps: - attach_workspace: at: ~/picassojs - run: pnpm run test:component test-integration: <<: *defaults steps: - attach_workspace: at: ~/picassojs - browser-tools/install-chrome - browser-tools/install-chromedriver - run: pnpm run test:integration:ci workflows: version: 2 build-all: jobs: - install - build: requires: - install - types: requires: - build - lint: requires: - install - api-governance: context: api-compliance requires: - build filters: branches: # Forked pull requests have CIRCLE_BRANCH set to pull/XXX ignore: /pull\/[0-9]+/ tags: only: - /v.*/ - test-component: requires: - install - test-integration: requires: - build