From 60c202325e70183cf4f298397720bf2ee25142f3 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Wed, 18 Mar 2020 20:05:35 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B4=D0=B5=D0=BF=D0=BB=D0=BE=D0=B9=20=D1=81=20Circle=20CI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .circleci/config.yml | 80 ++++++++++++++++++++++++++++++++++ deploy.php | 2 +- docker/Dockerfile | 27 +----------- docker/provision.sh | 29 ++++++++++++ source/_layouts/base.html.twig | 2 + 5 files changed, 114 insertions(+), 26 deletions(-) create mode 100644 .circleci/config.yml create mode 100755 docker/provision.sh diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..f1befef --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,80 @@ +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/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/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 diff --git a/deploy.php b/deploy.php index d2d2439..f561f1c 100644 --- a/deploy.php +++ b/deploy.php @@ -4,7 +4,7 @@ namespace Deployer; require 'recipe/common.php'; -host('homepage.vakhrushev.me') +host('vakhrushev.me') ->user('homepage') ->stage('production') ->set('deploy_path', '/var/www/homepage') diff --git a/docker/Dockerfile b/docker/Dockerfile index c7f9f8e..7430d9b 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,30 +1,7 @@ FROM php:7.4-cli -RUN apt-get update && apt-get install -y \ - libtidy-dev \ - curl \ - git \ - gzip \ - rsync +COPY ./docker/provision.sh /opt/ -RUN docker-php-ext-install tidy \ - && docker-php-ext-enable tidy - -# Project folder -RUN mkdir -p /srv/app +RUN /opt/provision.sh WORKDIR /srv/app - -RUN apt-get update \ - && apt-get install -y git zip curl gnupg \ - && rm -rf /var/lib/apt/lists/* - -# get composer and required tools -RUN curl -sLO https://getcomposer.org/download/1.9.3/composer.phar \ - && mv composer.phar /usr/local/bin/composer \ - && chmod +x /usr/local/bin/composer - -# Deployer -RUN curl -sLO https://deployer.org/releases/v6.7.3/deployer.phar \ - && mv deployer.phar /usr/local/bin/dep \ - && chmod +x /usr/local/bin/dep diff --git a/docker/provision.sh b/docker/provision.sh new file mode 100755 index 0000000..711fa7d --- /dev/null +++ b/docker/provision.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env sh + +set -eux + +apt-get update && apt-get install -y \ + curl \ + git \ + gnupg \ + gzip \ + libtidy-dev \ + rsync \ + zip \ +; + +docker-php-ext-install tidy \ + && docker-php-ext-enable tidy + +# Project folder +mkdir -p /srv/app + +# Composer and required tools +curl -sLO https://getcomposer.org/download/1.10.1/composer.phar \ + && mv composer.phar /usr/local/bin/composer \ + && chmod +x /usr/local/bin/composer + +# Deployer +curl -sLO https://deployer.org/releases/v6.7.3/deployer.phar \ + && mv deployer.phar /usr/local/bin/dep \ + && chmod +x /usr/local/bin/dep diff --git a/source/_layouts/base.html.twig b/source/_layouts/base.html.twig index e37ed4b..c8dfcd2 100644 --- a/source/_layouts/base.html.twig +++ b/source/_layouts/base.html.twig @@ -24,5 +24,7 @@ {# Extra fonts #} {% include 'font-awesome.twig' %} + +