45 lines
1.1 KiB
YAML
45 lines
1.1 KiB
YAML
name: Build and Deploy
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: docker
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up SSH
|
|
run: |
|
|
mkdir -p ~/.ssh
|
|
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
|
|
chmod 600 ~/.ssh/id_rsa
|
|
ssh-keyscan -H 194.163.164.113 >> ~/.ssh/known_hosts
|
|
|
|
- name: Deploy to server
|
|
env:
|
|
APP_NAME: ${{ vars.APP_NAME }}
|
|
DOMAIN: ${{ vars.DOMAIN }}
|
|
run: |
|
|
SERVER="root@194.163.164.113"
|
|
DEPLOY_PATH="/opt/apps/${APP_NAME}"
|
|
|
|
# Verzeichnis vorbereiten
|
|
ssh $SERVER "mkdir -p ${DEPLOY_PATH}"
|
|
|
|
# Alle Dateien kopieren
|
|
tar --exclude='.git' --exclude='.forgejo' -czf - . | ssh $SERVER "cd ${DEPLOY_PATH} && tar -xzf -"
|
|
|
|
# .env Datei für docker-compose erstellen
|
|
ssh $SERVER "cat > ${DEPLOY_PATH}/.env << EOF
|
|
APP_NAME=${APP_NAME}
|
|
DOMAIN=${DOMAIN}
|
|
EOF"
|
|
|
|
# Anwendung deployen
|
|
ssh $SERVER "cd ${DEPLOY_PATH} && docker compose up -d --build --force-recreate"
|
|
|
|
echo "Deployed to https://${DOMAIN}"
|