84 lines
2.2 KiB
YAML
84 lines
2.2 KiB
YAML
version: 2.1
|
|
|
|
jobs:
|
|
build_server:
|
|
docker:
|
|
- image: crystallang/crystal:0.33.0-alpine
|
|
steps:
|
|
- checkout
|
|
- 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
|