81 lines
2.0 KiB
YAML
81 lines
2.0 KiB
YAML
version: 2.1
|
|
|
|
jobs:
|
|
build_assets:
|
|
docker:
|
|
- image: node:12-alpine
|
|
environment:
|
|
OUTPUT_DIR: ./output_prod/static
|
|
steps:
|
|
- checkout
|
|
- run: npm ci
|
|
- run: mkdir -p ${OUTPUT_DIR}
|
|
- run: npm run-script build-prod
|
|
- run: ls -la ${OUTPUT_DIR}
|
|
- run: mkdir -p /tmp/workspace/static
|
|
- run: cp -R ${OUTPUT_DIR}/* /tmp/workspace/static
|
|
- persist_to_workspace:
|
|
root: /tmp/workspace
|
|
paths:
|
|
- static/*
|
|
|
|
build_html:
|
|
docker:
|
|
- image: php:7.4-cli
|
|
environment:
|
|
APP_ENV: prod
|
|
APP_URL: https://vakhrushev.me
|
|
STATIC_DIR: ./output_prod/static
|
|
steps:
|
|
- attach_workspace:
|
|
at: /tmp/workspace
|
|
- checkout
|
|
- run: docker/php/provision.sh
|
|
- run: composer install --no-interaction --no-progress
|
|
- run: mkdir -p ${STATIC_DIR}
|
|
- run: cp -R /tmp/workspace/static/* ${STATIC_DIR}
|
|
- run: |
|
|
./vendor/bin/sculpin generate \
|
|
--env="${APP_ENV}" \
|
|
--url="${APP_URL}" \
|
|
--no-interaction \
|
|
-vv
|
|
- run: mkdir -p /tmp/workspace/html
|
|
- run: cp -R ./output_prod/* /tmp/workspace/html
|
|
- persist_to_workspace:
|
|
root: /tmp/workspace
|
|
paths:
|
|
- html/*
|
|
|
|
deploy:
|
|
docker:
|
|
- image: php:7.4-cli
|
|
steps:
|
|
- checkout
|
|
- add_ssh_keys
|
|
- run: apt-get update; apt-get install -yy openssh-client
|
|
- run: ssh-keyscan "vakhrushev.me" >> ~/.ssh/known_hosts
|
|
- run: docker/php/provision.sh
|
|
- attach_workspace:
|
|
at: /tmp/workspace
|
|
- run: mkdir -p ./output_prod
|
|
- run: cp -R /tmp/workspace/html/* ./output_prod
|
|
- run: ls -la ./output_prod
|
|
- run: ls -la ./output_prod/static
|
|
- run: dep deploy production -vv
|
|
|
|
workflows:
|
|
version: 2
|
|
build_and_deploy:
|
|
jobs:
|
|
- build_assets:
|
|
filters:
|
|
branches:
|
|
only: master
|
|
- build_html:
|
|
requires:
|
|
- build_assets
|
|
- deploy:
|
|
requires:
|
|
- build_html
|