Files
brainwave/.gitea/workflows/deploy.yml
T
LaurensBartelds f40f4508fd
Test / backend (push) Successful in 14s
Test / frontend (push) Successful in 24s
Release Pipeline / build-and-release (push) Successful in 5m21s
feat: add missing step to add OrangePi to known_hosts in deployment workflow
2026-04-27 20:41:30 +02:00

70 lines
2.4 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 --break-system-packages "ansible>=9,<11"
- name: Setup SSH Agent
run: |
eval "$(ssh-agent -s)"
printf '%s\n' "${{ secrets.ANSIBLE_SSH_KEY }}" | ssh-add -
ssh-add -l
echo "SSH_AUTH_SOCK=$SSH_AUTH_SOCK" >> "$GITHUB_ENV"
echo "SSH_AGENT_PID=$SSH_AGENT_PID" >> "$GITHUB_ENV"
- name: Add OrangePi to known_hosts
run: |
mkdir -p ~/.ssh
chmod 700 ~/.ssh
ssh-keyscan -H "${{ secrets.ANSIBLE_HOST }}" >> ~/.ssh/known_hosts
- name: Write Inventory
run: |
printf '[orangepi]\norangepi ansible_host=%s ansible_user=%s\n' \
"${{ secrets.ANSIBLE_HOST }}" \
"${{ secrets.ANSIBLE_USER }}" > /tmp/inventory.ini
- name: Download ARM Release Artifacts
env:
GITEA_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SERVER_URL: ${{ github.server_url }}
REPOSITORY: ${{ github.repository }}
run: |
TAG=$(curl -sf \
-H "Authorization: token ${GITEA_TOKEN}" \
"${SERVER_URL}/api/v1/repos/${REPOSITORY}/releases?limit=1&page=1" \
| python3 -c "import sys, json; print(json.load(sys.stdin)[0]['tag_name'])")
echo "Deploying release tag: ${TAG}"
BASE_URL="${SERVER_URL}/${REPOSITORY}/releases/download/${TAG}"
curl -fLO "${BASE_URL}/brainwave-arm64.tar.gz" || { echo "Failed to download ARM tarball from ${BASE_URL}"; exit 1; }
curl -fLO "${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}" \
-e "jwt_secret=${{ secrets.JWT_SECRET }}"
- name: Cleanup
if: always()
run: |
ssh-agent -k || true
rm -f /tmp/inventory.ini