version: 2 jobs: build-alpine: machine: true working_directory: ~/repo/alpine steps: - checkout: path: ~/repo - run: name: Build Postal Docker Container command: docker build -t catdeployed/postal:latest -t catdeployed/postal:alpine . - run: name: Export Container command: mkdir workspace && cd workspace && docker save --output postal_alpine.tar catdeployed/postal:alpine - persist_to_workspace: root: workspace paths: - postal_alpine.tar build-ubuntu: machine: true working_directory: ~/repo/ubuntu steps: - checkout: path: ~/repo - run: name: Build Postal Docker Container command: docker build -t catdeployed/postal:ubuntu . - run: name: Export Container command: mkdir workspace && cd workspace && docker save --output postal_ubuntu.tar catdeployed/postal:ubuntu - persist_to_workspace: root: workspace paths: - postal_ubuntu.tar deploy: machine: true working_directory: ~/repo/ubuntu steps: - attach_workspace: at: /tmp/workspace - run: name: Load Alpine Image command: docker load --input /tmp/workspace/postal_alpine.tar - run: name: Load Ubuntu Image command: docker load --input /tmp/workspace/postal_ubuntu.tar - run: name: Tag alpine image as latest command: docker tag catdeployed/postal:alpine catdeployed/postal:latest - run: name: Login to Docker Hub command: docker login -u $DOCKER_USER -p $DOCKER_PASS - run: name: Push Ubuntu Container to Docker Hub command: docker push catdeployed/postal:ubuntu - run: name: Push Alpine Container to Docker Hub command: docker push catdeployed/postal:alpine - run: name: Push Latest Container to Docker Hub command: docker push catdeployed/postal:latest deploy-dev: machine: true working_directory: ~/repo/ubuntu steps: - attach_workspace: at: /tmp/workspace - run: name: Load Alpine Image command: docker load --input /tmp/workspace/postal_alpine.tar - run: name: Load Ubuntu Image command: docker load --input /tmp/workspace/postal_ubuntu.tar - run: name: Rename Alpine Image Tag command: docker tag catdeployed/postal:alpine catdeployed/postal:alpine-dev - run: name: Rename Ubuntu Image Tag command: docker tag catdeployed/postal:ubuntu catdeployed/postal:ubuntu-dev - run: name: Tag alpine image as latest command: docker tag catdeployed/postal:alpine catdeployed/postal:latest-dev - run: name: Login to Docker Hub command: docker login -u $DOCKER_USER -p $DOCKER_PASS - run: name: Push Ubuntu Container to Docker Hub command: docker push catdeployed/postal:ubuntu-dev - run: name: Push Alpine Container to Docker Hub command: docker push catdeployed/postal:alpine-dev - run: name: Push Latest Container to Docker Hub command: docker push catdeployed/postal:latest-dev workflows: version: 2 nightly: triggers: - schedule: cron: "0 * * * *" filters: branches: only: - master jobs: - build-alpine - build-ubuntu - deploy: requires: - build-alpine - build-ubuntu filters: branches: only: - master commit: jobs: - build-alpine - build-ubuntu - deploy: requires: - build-alpine - build-ubuntu filters: branches: only: - master - deploy-dev: requires: - build-alpine - build-ubuntu filters: branches: only: - dev