Files
brainwave/.gitea/workflows/deploy.yml
T

54 lines
1.9 KiB
YAML

name: Deploy ARM to OrangePi
on:
workflow_run:
workflows: ["Release Pipeline"]
types:
- completed
jobs:
deploy:
runs-on: ubuntu-latest
timeout-minutes: 15
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Install Ansible
run: pip3 install --quiet "ansible>=9,<11"
- name: Write SSH Key
run: |
printf '%s\n' "${{ secrets.ANSIBLE_SSH_KEY }}" > /tmp/ansible_key
chmod 600 /tmp/ansible_key
- name: Write Inventory
# StrictHostKeyChecking=no is intentional for a known home-network host.
# To harden, add the host fingerprint as a secret and use a known_hosts file.
run: |
printf '[orangepi]\norangepi ansible_host=%s ansible_user=%s ansible_ssh_private_key_file=/tmp/ansible_key ansible_ssh_common_args="-o StrictHostKeyChecking=no"\n' \
"${{ secrets.ANSIBLE_HOST }}" \
"${{ secrets.ANSIBLE_USER }}" > /tmp/inventory.ini
- name: Download ARM Release Artifacts
run: |
TAG="${{ github.event.workflow_run.head_branch }}"
BASE_URL="${{ github.server_url }}/${{ github.repository }}/releases/download/${TAG}"
wget --fail -q "${BASE_URL}/brainwave-arm64.tar.gz" || { echo "Failed to download ARM tarball from ${BASE_URL}"; exit 1; }
wget --fail -q "${BASE_URL}/docker-compose.arm64.yml" || { echo "Failed to download docker-compose file from ${BASE_URL}"; exit 1; }
- name: Deploy via Ansible
env:
WORKSPACE: ${{ github.workspace }}
run: |
ansible-playbook ansible/deploy.yml \
-i /tmp/inventory.ini \
-e "artifact_path=${WORKSPACE}"
- name: Cleanup Secrets
if: always()
run: |
rm -f /tmp/ansible_key
rm -f /tmp/inventory.ini