--- defaults: &defaults docker: - image: library/docker:18-git working_directory: /tmp/build steps: - setup_remote_docker: version: 18.09.3 docker_layer_caching: true - run: name: Check docker is running and install git command: | docker info apk update && apk upgrade && apk add --no-cache \ make \ jq \ bash \ grep \ nodejs \ nodejs-npm \ openssh-client - checkout - run: name: Initialize the submodules (yocto layers) command: | git submodule update --init --recursive git clean -fxd base-image git submodule foreach --recursive git clean -fxd - run: name: Build $ARCH-supervisor no_output_timeout: 10800 command: | VERSION_TAG_NO_DEBUG=v$(jq --raw-output .version package.json) GIT_TAG=$(git describe --tags | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' || echo "") VERSION_TAG="${VERSION_TAG_NO_DEBUG}${DEBUG}" if [ "${VERSION_TAG_NO_DEBUG}" = "${GIT_TAG}" ]; then export EXTRA_TAG="${VERSION_TAG}" fi echo "Starting build.sh" if [ "$DOCKER_PASSWORD" != "" ]; then docker login --username $DOCKER_USERNAME --password $DOCKER_PASSWORD export PUSH_IMAGES=${PUSH_IMAGES} else export PUSH_IMAGES=false fi # start the build for this architecture export TAG=$(echo ${CIRCLE_BRANCH} | sed 's/[^a-z0-9A-Z_.-]/-/g') export ARCH=${ARCH} bash automation/build.sh if [ "${CIRCLE_BRANCH}" = "master" ] && [ "${DEPLOY_TO_BALENA}" = "true" ]; then echo "Deploying to balena API (staging)" ARCH=${ARCH} TAG=$VERSION_TAG API_KEY=$STAGING_API_KEY API_ENDPOINT=$STAGING_API_ENDPOINT node automation/deploy-to-balena-cloud.js echo "Deploying to balena API (production)" ARCH=${ARCH} TAG=$VERSION_TAG API_KEY=$PRODUCTION_API_KEY API_ENDPOINT=$PRODUCTION_API_ENDPOINT node automation/deploy-to-balena-cloud.js fi version: 2 jobs: generic: docker: - image: balenalib/amd64-alpine-node:12 steps: - checkout - run: name: Install dependencies command: | apk add dbus-dev python3 make \ gcc libgcc libc-dev g++ - run: name: Run tests command: | JOBS=max npm ci && npm test environment: DOCKER_USERNAME: travisciresin ARCH: amd64 PUSH_IMAGES: 'true' STAGING_API_ENDPOINT: https://api.balena-staging.com PRODUCTION_API_ENDPOINT: https://api.balena-cloud.com DEBUG: '' amd64: <<: *defaults environment: DOCKER_USERNAME: travisciresin ARCH: amd64 PUSH_IMAGES: 'true' STAGING_API_ENDPOINT: https://api.balena-staging.com PRODUCTION_API_ENDPOINT: https://api.balena-cloud.com DEBUG: '' i386: <<: *defaults environment: DOCKER_USERNAME: travisciresin ARCH: i386 PUSH_IMAGES: 'true' STAGING_API_ENDPOINT: https://api.balena-staging.com PRODUCTION_API_ENDPOINT: https://api.balena-cloud.com DEBUG: '' armv7hf: <<: *defaults environment: DOCKER_USERNAME: travisciresin ARCH: armv7hf PUSH_IMAGES: 'true' STAGING_API_ENDPOINT: https://api.balena-staging.com PRODUCTION_API_ENDPOINT: https://api.balena-cloud.com DEBUG: '' aarch64: <<: *defaults environment: DOCKER_USERNAME: travisciresin ARCH: aarch64 PUSH_IMAGES: 'true' STAGING_API_ENDPOINT: https://api.balena-staging.com PRODUCTION_API_ENDPOINT: https://api.balena-cloud.com DEBUG: '' rpi: <<: *defaults environment: DOCKER_USERNAME: travisciresin ARCH: rpi PUSH_IMAGES: 'true' STAGING_API_ENDPOINT: https://api.balena-staging.com PRODUCTION_API_ENDPOINT: https://api.balena-cloud.com DEBUG: '' workflows: version: 2 build_and_maybe_deploy: jobs: - generic - amd64: requires: - generic - i386: requires: - generic - rpi: requires: - generic - armv7hf: requires: - generic - aarch64: requires: - generic