name: Build and Release Websites

on:
  push:
    branches:
      - main
    paths:
      - 'ansible/playbook_websites.yml'
      - 'bin/hugo_build'
      - 'websites/**'

jobs:
  build:
    name: Build Websites
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Code
        uses: actions/checkout@v3
        with:
          submodules: true
          fetch-depth: 0

      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v2
        with:
            hugo-version: 'latest'

      - name: Setup environment
        id: setup_env
        uses: ./.github/actions/setup-env

      - name: Setup Ansible environment
        uses: ./.github/actions/setup-ansible-env
        with:
          project-id: ${{ secrets.BW_PROJECT_ID }}
          organization-id: ${{ secrets.BW_ORGANIZATION_ID }}
          access-token: ${{ secrets.BW_ACCESS_TOKEN }}
          ansible-user: ${{ secrets.ANSIBLE_USER }}
          trusted-hosts: ${{ secrets.TRUSTED_HOSTS }}

      - name: Run hugo_build command
        run: bin/hugo_build

      - name: Run the playbook to deploy websites
        env:
          BW_PROJECT_ID: ${{ secrets.BW_PROJECT_ID }}
          BW_ORGANIZATION_ID: ${{ secrets.BW_ORGANIZATION_ID }}
          BW_ACCESS_TOKEN: ${{ secrets.BW_ACCESS_TOKEN }}
          ANSIBLE_USER: ${{ secrets.ANSIBLE_USER }}
          SSH_AUTH_SOCK: /tmp/ssh_agent.sock
          CHANGED_FILES: ${{ steps.setup_env.outputs.CHANGED_FILES }}
        run: |
          cd ansible
          sectool -f ../sectool.json exec ansible-playbook -u $ANSIBLE_USER playbook_websites.yml 
