version: 2.1 commands: install_dependencies: description: "Installs dependencies and uses CircleCI's cache" steps: - checkout - restore_cache: keys: - dependencies-{{ checksum "yarn.lock" }} - dependencies- - run: command: | yarn install - save_cache: paths: - node_modules key: dependencies-{{ checksum "yarn.lock" }} jobs: style: docker: - image: node:latest steps: - install_dependencies - run: name: prettier command: | yarn prettier --check - run: name: lint command: | yarn lint dashboard: docker: - image: node:latest steps: - install_dependencies - run: name: typecheck command: | yarn typecheck - run: name: test command: | yarn test --coverage - run: name: coverage command: | yarn coverage build: docker: - image: docker:latest steps: - checkout - setup_remote_docker: version: 20.10.7 - run: name: Log in to Docker command: | docker login --username ${DOCKER_USER} --password ${DOCKER_PASSWORD} - run: name: Install docker buildx command: | apk add --no-cache curl mkdir -p ~/.docker/cli-plugins baseUrl="https://github.com/docker/buildx/releases/download" fileName="buildx-v0.7.1.linux-amd64" url="${baseUrl}/v0.7.1/${fileName}" curl -sSL -o ~/.docker/cli-plugins/docker-buildx $url chmod a+x ~/.docker/cli-plugins/docker-buildx echo 'export DOCKER_CLI_EXPERIMENTAL="enabled"' >> $BASH_ENV - run: name: Prepare docker buildx command: | docker buildx install docker version docker buildx version docker run --rm --privileged multiarch/qemu-user-static --reset -p yes docker context create xbuilder docker buildx create xbuilder --name xbuilder --driver-opt image=moby/buildkit:master --use docker buildx inspect --bootstrap - run: name: Build all platforms command: | docker buildx build \ --platform=linux/amd64,linux/arm64/v8,linux/arm/v7 \ -t phntxx/dashboard:latest --push . workflows: version: 2 dashboard: jobs: - style - dashboard - build: requires: - style - dashboard