version: 2 jobs: build-n-test: machine: true steps: - checkout - run: name: Build container command: | docker pull adferrand/backuppc || true docker build --pull --cache-from adferrand/backuppc -t adferrand/backuppc . - run: name: Test container command: | mkdir -p ./bin curl -fsSL https://goss.rocks/install | GOSS_DST=./bin sh GOSS_PATH=./bin/goss GOSS_SLEEP=1 GOSS_FILES_PATH=./tests ./bin/dgoss run -e LETSENCRYPT_STAGING=true adferrand/backuppc - run: name: Save container command: | mkdir -p workspace docker save adferrand/backuppc > workspace/docker-backuppc.tar - persist_to_workspace: root: workspace paths: - docker-backuppc.tar deploy: machine: true steps: - attach_workspace: at: /tmp/workspace - run: name: Load container command: docker load < /tmp/workspace/docker-backuppc.tar - run: name: Login to DockerHub command: echo "${DOCKER_PASS}" | docker login -u ${DOCKER_USER} --password-stdin - deploy: name: Deploy to DockerHub command: | if [ ${CIRCLE_BRANCH} = master ]; then DOCKER_TAG=latest; else DOCKER_TAG=${CIRCLE_TAG:-${CIRCLE_BRANCH}}; fi docker tag adferrand/backuppc adferrand/backuppc:${DOCKER_TAG} docker push adferrand/backuppc:${DOCKER_TAG} workflows: version: 2 main-pipeline: jobs: - build-n-test: filters: tags: only: /^[0-9.]+/ - deploy: requires: - test filters: branches: only: /^(master|4|3)$/ tags: only: /^[0-9.]+/