From 9cf83920b2ba507f8d3483e9a7d46fe258097953 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Sun, 6 May 2018 21:51:35 +0100 Subject: [PATCH] Re-add ansistrano and circle files --- .circleci/config.yml | 45 +++++++++++++++++++++++++ ansible/deploy.yml | 24 +++++++++---- ansible/deploy/after-symlink-shared.yml | 25 ++++++++++++++ ansible/deploy/after-symlink.yml | 5 +++ ansible/provision.yml | 8 ++--- ansible/requirements.yml | 3 ++ ansible/vars/main.yml | 1 + 7 files changed, 101 insertions(+), 10 deletions(-) create mode 100644 .circleci/config.yml create mode 100644 ansible/deploy/after-symlink-shared.yml create mode 100644 ansible/deploy/after-symlink.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 000000000..9b886a39f --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,45 @@ +version: 2 + +jobs: + build: + docker: + - image: circleci/php:7.1 + steps: + - checkout + - restore_cache: + keys: + - v1-dependencies-{{ checksum "composer.json" }} + - v1-dependencies- + - run: composer install -n --prefer-dist + - save_cache: + paths: + - ./vendor + key: v1-dependencies-{{ checksum "composer.json" }} + + deploy: + docker: + - image: ansible/ansible:ubuntu1604 + environment: + ANSIBLE_HOST_KEY_CHECKING: no + steps: + - run: + name: Install system packages. + command: pip install --upgrade pip && pip install ansible + - checkout + - restore_cache: + key: v1-{{ .Branch }}-{{ checksum "./ansible/requirements.yml" }} + - run: ansible-galaxy install -r ansible/requirements.yml + - save_cache: + key: v1-{{ .Branch }}-{{ checksum "./ansible/requirements.yml" }} + paths: + - '/root/.ansible/roles' + - run: ansible-playbook ansible/deploy.yml -i ansible/hosts -e 'git_branch=master' -u opdavies --become + +workflows: + version: 2 + build_test_and_deploy: + jobs: + - build + - deploy: + requires: + - build diff --git a/ansible/deploy.yml b/ansible/deploy.yml index ac10e8bad..0494be74c 100644 --- a/ansible/deploy.yml +++ b/ansible/deploy.yml @@ -5,9 +5,21 @@ vars_files: - ./vars/main.yml - tasks: - - synchronize: - src: ../output_prod/ - dest: '/srv/{{ server_name }}' - delete: yes - recursive: yes + vars_prompt: + - name: git_branch + prompt: 'Enter a branch to deploy' + default: master + private: false + + vars: + ansistrano_deploy_to: "/srv/{{ server_name }}/current/output_prod" + ansistrano_deploy_via: git + ansistrano_git_repo: https://github.com/opdavies/oliverdavi.es + ansistrano_git_branch: "{{ git_branch }}" + ansistrano_keep_releases: 3 + ansistrano_allow_anonymous_stats: false + ansistrano_after_symlink_shared_tasks_file: "{{ playbook_dir }}/deploy/after-symlink-shared.yml" + ansistrano_after_symlink_tasks_file: "{{ playbook_dir }}/deploy/after-symlink.yml" + + roles: + - carlosbuenosvinos.ansistrano-deploy diff --git a/ansible/deploy/after-symlink-shared.yml b/ansible/deploy/after-symlink-shared.yml new file mode 100644 index 000000000..679b0830a --- /dev/null +++ b/ansible/deploy/after-symlink-shared.yml @@ -0,0 +1,25 @@ +--- +- name: Install Composer dependencies + composer: + command: install + working_dir: "{{ ansistrano_release_path.stdout }}" + +- name: Generate the site once without assets + command: vendor/bin/sculpin generate -e prod + args: + chdir: '{{ ansistrano_release_path.stdout }}' + +- name: Install Node dependencies + command: yarn install + args: + chdir: '{{ ansistrano_release_path.stdout }}' + +- name: Generate assets + command: yarn build + args: + chdir: '{{ ansistrano_release_path.stdout }}' + +- name: Generate the site, including assets + command: ./vendor/bin/sculpin generate -e prod + args: + chdir: '{{ ansistrano_release_path.stdout }}' diff --git a/ansible/deploy/after-symlink.yml b/ansible/deploy/after-symlink.yml new file mode 100644 index 000000000..eb0e7f156 --- /dev/null +++ b/ansible/deploy/after-symlink.yml @@ -0,0 +1,5 @@ +--- +- name: Reload nginx + service: + name: nginx + state: reloaded diff --git a/ansible/provision.yml b/ansible/provision.yml index cec69e7c2..777907200 100644 --- a/ansible/provision.yml +++ b/ansible/provision.yml @@ -46,10 +46,10 @@ filename: oliverdavi.es.443.conf - listen: 443 ssl - server_name: "{{ server_name }}" - root: "/srv/{{ server_name }}" - nginx_error_log: "/var/log/nginx/{{ server_name }}_error.log warn" - nginx_access_log: "/var/log/nginx/{{ server_name }}_access.log warn" + server_name: '{{ server_name }}' + root: '/srv/{{ server_name }}/{{ ansistrano_current_dir }}/output_prod' + nginx_error_log: '/var/log/nginx/{{ server_name }}_error.log warn' + nginx_access_log: '/var/log/nginx/{{ server_name }}_access.log warn' error_page: 404 /404.html extra_parameters: | ssl_certificate /etc/letsencrypt/live/oliverdavi.es/fullchain.pem; diff --git a/ansible/requirements.yml b/ansible/requirements.yml index fdaadab98..6360a2035 100644 --- a/ansible/requirements.yml +++ b/ansible/requirements.yml @@ -1,4 +1,7 @@ --- +- src: carlosbuenosvinos.ansistrano-deploy + version: 2.2.0 + - src: geerlingguy.certbot version: 3.0.0 diff --git a/ansible/vars/main.yml b/ansible/vars/main.yml index 77191c041..ddd6e2111 100644 --- a/ansible/vars/main.yml +++ b/ansible/vars/main.yml @@ -1,2 +1,3 @@ --- server_name: www.oliverdavi.es +ansistrano_current_dir: current