---
name: Deploy

on:
  push:
    branches:
      - production

jobs:
  deploy:
    runs-on: ubuntu-latest

    name: Deploy via Ansible

    env:
      ANSIBLE_FORCE_COLOR: 1
      ANSIBLE_HOST_KEY_CHECKING: no

    steps:
      - name: Checkout the code
        uses: actions/checkout@v2

      - name: Add the deployment SSH key
        uses: shimataro/ssh-key-action@v2
        with:
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          name: id_rsa
          known_hosts: ${{ secrets.SSH_KNOWN_HOSTS }}

      - name: Cache dependencies
        uses: actions/cache@v1
        with:
          path: tools/ansible/.roles
          key: dependencies-composer-${{ hashFiles('tools/ansible/requirements.yml') }}

      - name: Download Ansible roles
        run: ansible-galaxy install -r tools/ansible/requirements.yml

      - name: Export the Ansible Vault password
        run: echo $ANSIBLE_VAULT_PASS > tools/ansible/.vault-pass.txt
        env:
          ANSIBLE_VAULT_PASS: ${{ secrets.ANSIBLE_VAULT_PASS }}

      - name: Deploy the code
        run: >
          ansible-playbook tools/ansible/deploy.yml
          -i tools/ansible/hosts.yml
          -e "ansistrano_deploy_branch=$GITHUB_SHA"
          --vault-password-file=tools/ansible/.vault-pass.txt

      - name: Remove the Ansible Vault password file
        run: rm tools/ansible/.vault-pass.txt