--- defaults: &defaults docker: - image: library/docker:17.06.0-ce working_directory: /tmp/build steps: - setup_remote_docker: version: 17.06.0-ce reusable: true - run: name: Check docker is running and install git command: | docker info apk update && apk upgrade && apk add --nocache \ make \ jq \ git \ bash \ grep \ nodejs \ nodejs-npm \ openssh-client - checkout - run: name: Install npm dependencies working_directory: /tmp/build/automation command: | JOBS=max npm install \ && npm cache clean - 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=v$(jq --raw-output .version package.json) GIT_TAG=$(git describe --tags | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' || echo "") if [ "${VERSION_TAG}" = "${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: 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 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 i386-nlp: <<: *defaults environment: DOCKER_USERNAME: travisciresin ARCH: i386-nlp PUSH_IMAGES: "true" STAGING_API_ENDPOINT: https://api.balena-staging.com PRODUCTION_API_ENDPOINT: https://api.balena-cloud.com 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 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 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 workflows: version: 2 build_and_maybe_deploy: jobs: - amd64 - i386 - rpi - armv7hf - aarch64 - i386-nlp