qlik-oss/picasso.js

View on GitHub
.circleci/config.yml

Summary

Maintainability
Test Coverage
version: 2.1
orbs:
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