From fb7b776e876392730cc5c15d42b0b1f83247402a Mon Sep 17 00:00:00 2001 From: Riku Rouvila Date: Tue, 13 Jan 2015 23:30:33 +0200 Subject: [PATCH] add deployment stuff --- deploy/deploy.sh | 18 +++++++++++++ deploy/deploy.yml | 57 +++++++++++++++++++++++++++++++++++++++ deploy/hosts | 1 + deploy/templates/nginx.j2 | 15 +++++++++++ deploy/vars.yml | 9 +++++++ package.json | 3 ++- 6 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 deploy/deploy.sh create mode 100644 deploy/deploy.yml create mode 100644 deploy/hosts create mode 100644 deploy/templates/nginx.j2 create mode 100644 deploy/vars.yml diff --git a/deploy/deploy.sh b/deploy/deploy.sh new file mode 100644 index 0000000..e524231 --- /dev/null +++ b/deploy/deploy.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -e + +export ANSIBLE_SSH_ARGS="-o ForwardAgent=yes" + +# Install dependencies +if ! which pip > /dev/null; then + echo "Installing pip (requires sudo password)" + sudo apt-get install python-pip || sudo easy_install pip +fi + +if ! which ansible > /dev/null; then + echo "Installing ansible (requires sudo password)" + sudo pip install ansible +fi + +cd $(dirname $0) +ansible-playbook deploy.yml -i hosts diff --git a/deploy/deploy.yml b/deploy/deploy.yml new file mode 100644 index 0000000..0ec213f --- /dev/null +++ b/deploy/deploy.yml @@ -0,0 +1,57 @@ +--- +- name: Deploy koodiklinikka.fi + hosts: all:!localhost + gather_facts: no + vars_files: + - vars.yml + tasks: + - name: Deploy client from git + remote_user: "{{ service_user }}" + action: > + git + repo="{{ repository_url }}" + dest="{{ projects_path }}" + accept_hostkey=True + + - name: Install NVM + remote_user: "{{ service_user }}" + action: > + git + repo="https://github.com/creationix/nvm" + dest="{{ nvm_path }}" + + - name: Make sure Node.js is installed and properly aliased + command: > + bash -c "source {{ nvm_script }} && nvm install {{ nodejs_version }} && nvm alias {{ project_name }} {{ nodejs_version }}" + register: nvm_result + changed_when: > + "already installed" not in nvm_result.stdout + remote_user: "{{ service_user }}" + + - name: Install client NPM dependencies and build assets + command: > + bash -c "source {{ nvm_script }} && nvm use {{ project_name }} && cd {{ projects_path }} && npm install && NODE_ENV=production npm run build" + remote_user: "{{ service_user }}" + + - name: Setup nginx vhost + sudo: yes + template: > + src=templates/nginx.j2 + dest="/etc/nginx/sites-available/{{ public_hostname }}" + mode=664 + notify: restart nginx + + - name: Enable nginx vhost + sudo: yes + file: > + state=link + src=/etc/nginx/sites-available/{{ public_hostname }} + dest=/etc/nginx/sites-enabled/{{ public_hostname }} + notify: restart nginx + + handlers: + - name: restart nginx + sudo: true + service: > + name=nginx + state=restarted diff --git a/deploy/hosts b/deploy/hosts new file mode 100644 index 0000000..d5dd70d --- /dev/null +++ b/deploy/hosts @@ -0,0 +1 @@ +koodiklinikka.fi diff --git a/deploy/templates/nginx.j2 b/deploy/templates/nginx.j2 new file mode 100644 index 0000000..72d4fc0 --- /dev/null +++ b/deploy/templates/nginx.j2 @@ -0,0 +1,15 @@ +server { + listen 80; + server_name {{ public_hostname }}; + + root {{ projects_path }}/public; + + location / { + try_files $uri /index.html; + gzip_static on; + gzip_http_version 1.1; + gzip_proxied expired no-cache no-store private auth; + gzip_disable "MSIE [1-6]\."; + gzip_vary on; + } +} diff --git a/deploy/vars.yml b/deploy/vars.yml new file mode 100644 index 0000000..67e9c06 --- /dev/null +++ b/deploy/vars.yml @@ -0,0 +1,9 @@ +--- +project_name: koodiklinikka.fi +projects_path: /opt/web/koodiklinikka.fi +repository_url: git@github.com:koodiklinikka/koodiklinikka.fi.git +service_user: web +nvm_path: /opt/web/nvm +nvm_script: /opt/web/nvm/nvm.sh +nodejs_version: v0.10.25 +public_hostname: koodiklinikka.fi diff --git a/package.json b/package.json index 236d5da..819b55d 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "prepublish": "bower install", "start": "gulp", "build": "gulp build", - "test": "karma start test/karma.conf.js" + "test": "karma start test/karma.conf.js", + "deploy": "bash deploy/deploy.sh" }, "keywords": [ "gulp",