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' %} + +