version: 2.1 jobs: build_server: docker: - image: alpine:3.10.3 steps: - checkout - run: ./docker/provide-crystal-alpine - run: shards install - run: make spec STAGE=prod - run: make build STAGE=prod - persist_to_workspace: root: build paths: ['*'] build_assets: docker: - image: circleci/node:12.13 steps: - checkout - run: npm ci - run: npm run-script build-prod - run: ls -la ./public/assets - persist_to_workspace: root: public/assets paths: ['*'] build_docker_image: docker: - image: docker:19.03 steps: - attach_workspace: at: /tmp/data - run: ls -la /tmp/data - checkout - run: mkdir -p ./build/ - run: cp /tmp/data/dayoff ./build/dayoff - run: mkdir -p ./public/assets/ - run: cp /tmp/data/main.css /tmp/data/main.js ./public/assets/ - setup_remote_docker - run: echo "$YANDEX_CLOUD_DOCKER_REGISTRY_KEY" | docker login --username json_key --password-stdin cr.yandex - run: docker build --file ./docker/Dockerfile.prod --tag cr.yandex/crplfk0168i4o8kd7ade/dayoff . - run: docker push cr.yandex/crplfk0168i4o8kd7ade/dayoff deploy_app: docker: - image: ubuntu:18.04 steps: - checkout - add_ssh_keys - run: apt-get update; apt-get install -yy openssh-client wget - run: ssh-keyscan "vakhrushev.me" >> ~/.ssh/known_hosts # Prepare sup deploy tool - run: wget https://github.com/pressly/sup/releases/download/v0.5.3/sup-linux64 -O sup - run: chmod +x ./sup # Deploy app - run: echo "$YANDEX_CLOUD_DOCKER_REGISTRY_KEY" > registry_key.json - run: | ./sup \ -env REG_AUTH_FILE=registry_key.json \ -env \ -debug \ production deploy workflows: version: 2 test_and_build: jobs: # - build_server # - build_assets # - build_docker_image: # requires: # - build_server # - build_assets # filters: # branches: # only: master - deploy_app: # requires: # - build_docker_image filters: branches: only: master