40 lines
1 KiB
YAML
40 lines
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 Docker context
|
|
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: |
|
|
# Variablen setzen
|
|
SERVER="root@194.163.164.113"
|
|
DEPLOY_PATH="/opt/apps/${APP_NAME}"
|
|
|
|
# Verzeichnis erstellen
|
|
ssh $SERVER "mkdir -p ${DEPLOY_PATH}"
|
|
|
|
# Gesamtes Projekt kopieren (außer .git)
|
|
rsync -avz --exclude '.git' --exclude '.forgejo' ./ $SERVER:${DEPLOY_PATH}/
|
|
|
|
# Anwendung deployen
|
|
ssh $SERVER "cd ${DEPLOY_PATH} && docker compose up -d --build --force-recreate"
|
|
|
|
echo "Deployed to https://${DOMAIN}"
|