From d12e48136d97089e2cfbdec295dd35e47c667813 Mon Sep 17 00:00:00 2001 From: Lars Hampe Date: Mon, 27 Oct 2025 23:04:16 +0100 Subject: [PATCH 1/9] ci: ignore minio data --- .gitea/workflows/backup-volumes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/backup-volumes.yml b/.gitea/workflows/backup-volumes.yml index 0e22935..e6c35ec 100644 --- a/.gitea/workflows/backup-volumes.yml +++ b/.gitea/workflows/backup-volumes.yml @@ -14,7 +14,7 @@ jobs: - name: devops host: 10.0.0.175 user: lars - exclude_volumes: "41b0fdd5c39b8a598f4e5f6960ac0661a1fe6e60c055d4ceaa1fcfcde6ef1206" # Optional: Komma-separierte Liste zum Ausschließen + exclude_volumes: "41b0fdd5c39b8a598f4e5f6960ac0661a1fe6e60c055d4ceaa1fcfcde6ef1206,homelab_minio-data" # Optional: Komma-separierte Liste zum Ausschließen # Weitere Server können hier hinzugefügt werden: # - name: production # host: 10.0.0.180 From 6fef2589a55d3345c849bb8cf769700271a917d3 Mon Sep 17 00:00:00 2001 From: Lars Hampe Date: Mon, 27 Oct 2025 23:12:25 +0100 Subject: [PATCH 2/9] ci: update step outputs --- .gitea/workflows/backup-volumes.yml | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/.gitea/workflows/backup-volumes.yml b/.gitea/workflows/backup-volumes.yml index e6c35ec..568c699 100644 --- a/.gitea/workflows/backup-volumes.yml +++ b/.gitea/workflows/backup-volumes.yml @@ -22,12 +22,20 @@ jobs: # exclude_volumes: "temp-volume,cache-volume" fail-fast: false # Andere Server weiterlaufen lassen wenn einer fehlschlägt - name: Backup ${{ matrix.server.name }} - steps: - name: Checkout repository uses: actions/checkout@v4 + - name: Set server context + run: | + echo "SERVER_NAME=${{ matrix.server.name }}" >> $GITHUB_ENV + echo "SERVER_HOST=${{ matrix.server.host }}" >> $GITHUB_ENV + echo "SERVER_USER=${{ matrix.server.user }}" >> $GITHUB_ENV + echo "EXCLUDE_VOLUMES=${{ matrix.server.exclude_volumes }}" >> $GITHUB_ENV + echo "=== Starting backup for server: ${{ matrix.server.name }} ===" + echo "Host: ${{ matrix.server.host }}" + echo "User: ${{ matrix.server.user }}" + - name: Setup SSH run: | mkdir -p ~/.ssh @@ -37,31 +45,32 @@ jobs: - name: Upload backup script to server run: | + echo "Uploading backup script to ${{ matrix.server.name }}..." scp scripts/backup-servers/backup-docker-volumes.sh \ ${{ matrix.server.user }}@${{ matrix.server.host }}:/tmp/backup-docker-volumes.sh ssh ${{ matrix.server.user }}@${{ matrix.server.host }} \ "chmod +x /tmp/backup-docker-volumes.sh" - - name: Create backup on ${{ matrix.server.name }} + - name: Create backup on remote server run: | BACKUP_DATE=$(date +%Y%m%d_%H%M%S) echo "BACKUP_DATE=$BACKUP_DATE" >> $GITHUB_ENV - EXCLUDE_VOLUMES="${{ matrix.server.exclude_volumes }}" + echo "Creating backup on ${{ matrix.server.name }} at $BACKUP_DATE..." ssh ${{ matrix.server.user }}@${{ matrix.server.host }} \ - "BACKUP_DATE='$BACKUP_DATE' SERVER_NAME='${{ matrix.server.name }}' EXCLUDE_VOLUMES='$EXCLUDE_VOLUMES' /tmp/backup-docker-volumes.sh" + "BACKUP_DATE='$BACKUP_DATE' SERVER_NAME='${{ matrix.server.name }}' EXCLUDE_VOLUMES='${{ matrix.server.exclude_volumes }}' /tmp/backup-docker-volumes.sh" - - name: Download backups from ${{ matrix.server.name }} + - name: Download backups from remote server run: | mkdir -p backups/${{ matrix.server.name }} echo "Downloading backups from ${{ matrix.server.name }}..." - scp -r ${{ matrix.server.user }}@${{ matrix.server.host }}:~/backups/${{ env.BACKUP_DATE }} \ + scp -r ${{ matrix.server.user }}@${{ matrix.server.host }}:~/backups/$BACKUP_DATE \ backups/${{ matrix.server.name }}/ echo "Downloaded files:" - ls -lh backups/${{ matrix.server.name }}/${{ env.BACKUP_DATE }}/ + ls -lh backups/${{ matrix.server.name }}/$BACKUP_DATE/ - name: Upload backup artifacts uses: actions/upload-artifact@v3 @@ -70,9 +79,10 @@ jobs: path: backups/${{ matrix.server.name }}/${{ env.BACKUP_DATE }} retention-days: 30 - - name: Cleanup old backups on ${{ matrix.server.name }} (keep last 7 days) + - name: Cleanup old backups on remote server if: always() run: | + echo "Cleaning up old backups on ${{ matrix.server.name }}..." ssh ${{ matrix.server.user }}@${{ matrix.server.host }} << 'CLEANUP_EOF' # Lösche Backups älter als 7 Tage find ~/backups -maxdepth 1 -type d -name "????????_??????" -mtime +7 -exec rm -rf {} \; 2>/dev/null || true @@ -84,4 +94,5 @@ jobs: - name: Cleanup temporary files if: always() run: | + echo "Cleaning up temporary files on ${{ matrix.server.name }}..." ssh ${{ matrix.server.user }}@${{ matrix.server.host }} "rm -f /tmp/backup-docker-volumes.sh" || true From a904f88077db79007c0de4b14d47e02e38086237 Mon Sep 17 00:00:00 2001 From: Lars Hampe Date: Mon, 27 Oct 2025 23:16:21 +0100 Subject: [PATCH 3/9] ci: fix step names --- .gitea/workflows/backup-volumes.yml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.gitea/workflows/backup-volumes.yml b/.gitea/workflows/backup-volumes.yml index 568c699..b73274d 100644 --- a/.gitea/workflows/backup-volumes.yml +++ b/.gitea/workflows/backup-volumes.yml @@ -22,11 +22,13 @@ jobs: # exclude_volumes: "temp-volume,cache-volume" fail-fast: false # Andere Server weiterlaufen lassen wenn einer fehlschlägt + name: Backup ${ matrix.server.name } + steps: - name: Checkout repository uses: actions/checkout@v4 - - name: Set server context + - name: Set server context for ${{ matrix.server.name }} run: | echo "SERVER_NAME=${{ matrix.server.name }}" >> $GITHUB_ENV echo "SERVER_HOST=${{ matrix.server.host }}" >> $GITHUB_ENV @@ -36,14 +38,14 @@ jobs: echo "Host: ${{ matrix.server.host }}" echo "User: ${{ matrix.server.user }}" - - name: Setup SSH + - name: Setup SSH for ${ matrix.server.name } run: | mkdir -p ~/.ssh echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-keyscan -H ${{ matrix.server.host }} >> ~/.ssh/known_hosts - - name: Upload backup script to server + - name: Upload backup script to ${ matrix.server.name } run: | echo "Uploading backup script to ${{ matrix.server.name }}..." scp scripts/backup-servers/backup-docker-volumes.sh \ @@ -52,7 +54,7 @@ jobs: ssh ${{ matrix.server.user }}@${{ matrix.server.host }} \ "chmod +x /tmp/backup-docker-volumes.sh" - - name: Create backup on remote server + - name: Create backup on ${ matrix.server.name } run: | BACKUP_DATE=$(date +%Y%m%d_%H%M%S) echo "BACKUP_DATE=$BACKUP_DATE" >> $GITHUB_ENV @@ -61,7 +63,7 @@ jobs: ssh ${{ matrix.server.user }}@${{ matrix.server.host }} \ "BACKUP_DATE='$BACKUP_DATE' SERVER_NAME='${{ matrix.server.name }}' EXCLUDE_VOLUMES='${{ matrix.server.exclude_volumes }}' /tmp/backup-docker-volumes.sh" - - name: Download backups from remote server + - name: Download backups from ${ matrix.server.name } run: | mkdir -p backups/${{ matrix.server.name }} @@ -72,14 +74,14 @@ jobs: echo "Downloaded files:" ls -lh backups/${{ matrix.server.name }}/$BACKUP_DATE/ - - name: Upload backup artifacts + - name: Upload backup artifacts for ${ matrix.server.name } uses: actions/upload-artifact@v3 with: name: backup-${{ matrix.server.name }}-${{ env.BACKUP_DATE }} path: backups/${{ matrix.server.name }}/${{ env.BACKUP_DATE }} retention-days: 30 - - name: Cleanup old backups on remote server + - name: Cleanup old backups on ${ matrix.server.name } (keep last 7 days) if: always() run: | echo "Cleaning up old backups on ${{ matrix.server.name }}..." @@ -91,7 +93,7 @@ jobs: ls -lh ~/backups/ 2>/dev/null || echo "No backups found" CLEANUP_EOF - - name: Cleanup temporary files + - name: Cleanup temporary files on ${ matrix.server.name } if: always() run: | echo "Cleaning up temporary files on ${{ matrix.server.name }}..." From 3bc56f9f6d082427f5fea88df0f22ce1195ff521 Mon Sep 17 00:00:00 2001 From: Lars Hampe Date: Mon, 27 Oct 2025 23:18:39 +0100 Subject: [PATCH 4/9] chore: test var name --- .gitea/workflows/backup-volumes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/backup-volumes.yml b/.gitea/workflows/backup-volumes.yml index b73274d..526af6b 100644 --- a/.gitea/workflows/backup-volumes.yml +++ b/.gitea/workflows/backup-volumes.yml @@ -22,7 +22,7 @@ jobs: # exclude_volumes: "temp-volume,cache-volume" fail-fast: false # Andere Server weiterlaufen lassen wenn einer fehlschlägt - name: Backup ${ matrix.server.name } + name: Backup $matrix.server.name steps: - name: Checkout repository From fc3005ecd5f4a1e03cd0bef5bca82045171c1d84 Mon Sep 17 00:00:00 2001 From: Lars Hampe Date: Mon, 27 Oct 2025 23:20:18 +0100 Subject: [PATCH 5/9] fix: var names --- .gitea/workflows/backup-volumes.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.gitea/workflows/backup-volumes.yml b/.gitea/workflows/backup-volumes.yml index 526af6b..19f1fe1 100644 --- a/.gitea/workflows/backup-volumes.yml +++ b/.gitea/workflows/backup-volumes.yml @@ -22,7 +22,7 @@ jobs: # exclude_volumes: "temp-volume,cache-volume" fail-fast: false # Andere Server weiterlaufen lassen wenn einer fehlschlägt - name: Backup $matrix.server.name + name: Backup ${{ matrix.server.name }} steps: - name: Checkout repository @@ -38,14 +38,14 @@ jobs: echo "Host: ${{ matrix.server.host }}" echo "User: ${{ matrix.server.user }}" - - name: Setup SSH for ${ matrix.server.name } + - name: Setup SSH for ${{ matrix.server.name }} run: | mkdir -p ~/.ssh echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-keyscan -H ${{ matrix.server.host }} >> ~/.ssh/known_hosts - - name: Upload backup script to ${ matrix.server.name } + - name: Upload backup script to ${{ matrix.server.name }} run: | echo "Uploading backup script to ${{ matrix.server.name }}..." scp scripts/backup-servers/backup-docker-volumes.sh \ @@ -54,7 +54,7 @@ jobs: ssh ${{ matrix.server.user }}@${{ matrix.server.host }} \ "chmod +x /tmp/backup-docker-volumes.sh" - - name: Create backup on ${ matrix.server.name } + - name: Create backup on ${{ matrix.server.name }} run: | BACKUP_DATE=$(date +%Y%m%d_%H%M%S) echo "BACKUP_DATE=$BACKUP_DATE" >> $GITHUB_ENV @@ -63,7 +63,7 @@ jobs: ssh ${{ matrix.server.user }}@${{ matrix.server.host }} \ "BACKUP_DATE='$BACKUP_DATE' SERVER_NAME='${{ matrix.server.name }}' EXCLUDE_VOLUMES='${{ matrix.server.exclude_volumes }}' /tmp/backup-docker-volumes.sh" - - name: Download backups from ${ matrix.server.name } + - name: Download backups from ${{ matrix.server.name }} run: | mkdir -p backups/${{ matrix.server.name }} @@ -74,14 +74,14 @@ jobs: echo "Downloaded files:" ls -lh backups/${{ matrix.server.name }}/$BACKUP_DATE/ - - name: Upload backup artifacts for ${ matrix.server.name } + - name: Upload backup artifacts for ${{ matrix.server.name }} uses: actions/upload-artifact@v3 with: name: backup-${{ matrix.server.name }}-${{ env.BACKUP_DATE }} path: backups/${{ matrix.server.name }}/${{ env.BACKUP_DATE }} retention-days: 30 - - name: Cleanup old backups on ${ matrix.server.name } (keep last 7 days) + - name: Cleanup old backups on ${{ matrix.server.name }} (keep last 7 days) if: always() run: | echo "Cleaning up old backups on ${{ matrix.server.name }}..." @@ -93,7 +93,7 @@ jobs: ls -lh ~/backups/ 2>/dev/null || echo "No backups found" CLEANUP_EOF - - name: Cleanup temporary files on ${ matrix.server.name } + - name: Cleanup temporary files on ${{ matrix.server.name }} if: always() run: | echo "Cleaning up temporary files on ${{ matrix.server.name }}..." From 3f73b9352d6150c7b36e3a6e0183b197662cdfa8 Mon Sep 17 00:00:00 2001 From: Lars Hampe Date: Mon, 27 Oct 2025 23:35:34 +0100 Subject: [PATCH 6/9] ci: test deploy workflow --- .gitea/workflows/deploy.yml | 191 ++++++++++++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 .gitea/workflows/deploy.yml diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..3eb011b --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,191 @@ +name: Deploy Docker Compose + +on: + workflow_dispatch: + inputs: + server: + description: 'Target server to deploy' + required: true + type: choice + options: + - devops + - production + - staging + - all + service: + description: 'Service to deploy (leave empty for all)' + required: false + type: string + default: '' + action: + description: 'Docker Compose action' + required: true + type: choice + options: + - up + - restart + - pull-and-up + - down + - logs + default: 'pull-and-up' + detach: + description: 'Run in detached mode' + required: false + type: boolean + default: true + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set deployment context + id: context + run: | + echo "=== Deployment Configuration ===" + echo "Server: ${{ inputs.server }}" + echo "Service: ${{ inputs.service || 'all services' }}" + echo "Action: ${{ inputs.action }}" + echo "Detached: ${{ inputs.detach }}" + + # Server-Konfiguration setzen + case "${{ inputs.server }}" in + devops) + echo "HOST=10.0.0.175" >> $GITHUB_ENV + echo "USER=lars" >> $GITHUB_ENV + echo "COMPOSE_PATH=/home/lars/ghq/git.hashdot.co/lars/homelab/servers/production/devops" >> $GITHUB_ENV + ;; + production) + echo "HOST=10.0.0.180" >> $GITHUB_ENV + echo "USER=lars" >> $GITHUB_ENV + echo "COMPOSE_PATH=/home/lars/production" >> $GITHUB_ENV + ;; + staging) + echo "HOST=10.0.0.185" >> $GITHUB_ENV + echo "USER=lars" >> $GITHUB_ENV + echo "COMPOSE_PATH=/home/lars/staging" >> $GITHUB_ENV + ;; + all) + echo "DEPLOY_ALL=true" >> $GITHUB_ENV + ;; + esac + + # Service-Parameter setzen + if [ -n "${{ inputs.service }}" ]; then + echo "SERVICE_ARG=${{ inputs.service }}" >> $GITHUB_ENV + else + echo "SERVICE_ARG=" >> $GITHUB_ENV + fi + + # Detach-Flag setzen + if [ "${{ inputs.detach }}" == "true" ]; then + echo "DETACH_FLAG=-d" >> $GITHUB_ENV + else + echo "DETACH_FLAG=" >> $GITHUB_ENV + fi + + - name: Setup SSH + run: | + mkdir -p ~/.ssh + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + + # Füge alle möglichen Hosts hinzu + ssh-keyscan -H 10.0.0.175 >> ~/.ssh/known_hosts 2>/dev/null || true + ssh-keyscan -H 10.0.0.180 >> ~/.ssh/known_hosts 2>/dev/null || true + ssh-keyscan -H 10.0.0.185 >> ~/.ssh/known_hosts 2>/dev/null || true + + - name: Deploy to single server + if: inputs.server != 'all' + run: | + echo "=== Deploying to ${{ inputs.server }} ===" + + # Git pull auf dem Server + ssh $USER@$HOST "cd $COMPOSE_PATH && git pull" + + # Docker Compose Aktion ausführen + case "${{ inputs.action }}" in + up) + ssh $USER@$HOST "cd $COMPOSE_PATH && docker compose up $DETACH_FLAG $SERVICE_ARG" + ;; + restart) + ssh $USER@$HOST "cd $COMPOSE_PATH && docker compose restart $SERVICE_ARG" + ;; + pull-and-up) + ssh $USER@$HOST "cd $COMPOSE_PATH && docker compose pull $SERVICE_ARG && docker compose up $DETACH_FLAG $SERVICE_ARG" + ;; + down) + ssh $USER@$HOST "cd $COMPOSE_PATH && docker compose down $SERVICE_ARG" + ;; + logs) + ssh $USER@$HOST "cd $COMPOSE_PATH && docker compose logs --tail=100 $SERVICE_ARG" + ;; + esac + + - name: Deploy to all servers + if: inputs.server == 'all' + run: | + echo "=== Deploying to all servers ===" + + # Definiere alle Server + declare -A SERVERS=( + ["devops"]="lars@10.0.0.175:/home/lars/ghq/git.hashdot.co/lars/homelab/servers/production/devops" + ["production"]="lars@10.0.0.180:/home/lars/production" + ["staging"]="lars@10.0.0.185:/home/lars/staging" + ) + + for server in "${!SERVERS[@]}"; do + IFS=':' read -r user_host compose_path <<< "${SERVERS[$server]}" + + echo "" + echo ">>> Deploying to $server..." + + # Git pull + ssh $user_host "cd $compose_path && git pull" || { echo "Failed to deploy to $server"; continue; } + + # Docker Compose Aktion + case "${{ inputs.action }}" in + up) + ssh $user_host "cd $compose_path && docker compose up $DETACH_FLAG $SERVICE_ARG" + ;; + restart) + ssh $user_host "cd $compose_path && docker compose restart $SERVICE_ARG" + ;; + pull-and-up) + ssh $user_host "cd $compose_path && docker compose pull $SERVICE_ARG && docker compose up $DETACH_FLAG $SERVICE_ARG" + ;; + down) + ssh $user_host "cd $compose_path && docker compose down $SERVICE_ARG" + ;; + logs) + ssh $user_host "cd $compose_path && docker compose logs --tail=100 $SERVICE_ARG" + ;; + esac + + echo ">>> $server deployment completed" + done + + - name: Verify deployment + if: inputs.action != 'down' && inputs.action != 'logs' + run: | + echo "=== Verifying deployment ===" + + if [ "${{ inputs.server }}" != "all" ]; then + ssh $USER@$HOST "cd $COMPOSE_PATH && docker compose ps" + else + echo "Skipping verification for 'all' - check individual server logs" + fi + + - name: Deployment summary + if: always() + run: | + echo "=== Deployment Summary ===" + echo "Server: ${{ inputs.server }}" + echo "Service: ${{ inputs.service || 'all services' }}" + echo "Action: ${{ inputs.action }}" + echo "Status: ${{ job.status }}" + echo "" + echo "Deployment completed at $(date)" From 4c1754d0af3f9bd6f61e44e7c3666fbc68be9391 Mon Sep 17 00:00:00 2001 From: Lars Hampe Date: Mon, 27 Oct 2025 23:40:10 +0100 Subject: [PATCH 7/9] ci: change COMPOSE_PATH --- .gitea/workflows/deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 3eb011b..378821f 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -56,7 +56,7 @@ jobs: devops) echo "HOST=10.0.0.175" >> $GITHUB_ENV echo "USER=lars" >> $GITHUB_ENV - echo "COMPOSE_PATH=/home/lars/ghq/git.hashdot.co/lars/homelab/servers/production/devops" >> $GITHUB_ENV + echo "COMPOSE_PATH=/home/lars/homelab/servers/production/devops" >> $GITHUB_ENV ;; production) echo "HOST=10.0.0.180" >> $GITHUB_ENV @@ -104,7 +104,7 @@ jobs: echo "=== Deploying to ${{ inputs.server }} ===" # Git pull auf dem Server - ssh $USER@$HOST "cd $COMPOSE_PATH && git pull" + ssh $USER@$HOST "git pull" # Docker Compose Aktion ausführen case "${{ inputs.action }}" in From 80fcbe3fca03e8449f145178367cf2ab9d9874fd Mon Sep 17 00:00:00 2001 From: Lars Hampe Date: Mon, 27 Oct 2025 23:44:13 +0100 Subject: [PATCH 8/9] ci: clone/pull repo --- .gitea/workflows/deploy.yml | 42 +++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 378821f..afad3d1 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -51,6 +51,10 @@ jobs: echo "Action: ${{ inputs.action }}" echo "Detached: ${{ inputs.detach }}" + # Git Repo URL (aus Gitea) + REPO_URL="https://git.hashdot.co/${{ github.repository }}.git" + echo "REPO_URL=$REPO_URL" >> $GITHUB_ENV + # Server-Konfiguration setzen case "${{ inputs.server }}" in devops) @@ -103,8 +107,23 @@ jobs: run: | echo "=== Deploying to ${{ inputs.server }} ===" - # Git pull auf dem Server - ssh $USER@$HOST "git pull" + # Check ob Repo existiert, sonst clonen + ssh $USER@$HOST " + export COMPOSE_PATH='$COMPOSE_PATH' + export REPO_URL='$REPO_URL' + + if [ -d \"\$COMPOSE_PATH/.git\" ]; then + echo 'Repository already exists, pulling latest changes...' + cd \$COMPOSE_PATH && git pull + else + echo 'Repository not found, cloning...' + PARENT_DIR=\$(dirname \$COMPOSE_PATH) + mkdir -p \$PARENT_DIR + cd \$PARENT_DIR + git clone \$REPO_URL \$(basename \$COMPOSE_PATH) + echo 'Repository cloned successfully' + fi + " # Docker Compose Aktion ausführen case "${{ inputs.action }}" in @@ -143,8 +162,23 @@ jobs: echo "" echo ">>> Deploying to $server..." - # Git pull - ssh $user_host "cd $compose_path && git pull" || { echo "Failed to deploy to $server"; continue; } + # Check ob Repo existiert, sonst clonen + ssh $user_host " + export COMPOSE_PATH='$compose_path' + export REPO_URL='$REPO_URL' + + if [ -d \"\$COMPOSE_PATH/.git\" ]; then + echo 'Repository already exists, pulling latest changes...' + cd \$COMPOSE_PATH && git pull + else + echo 'Repository not found, cloning...' + PARENT_DIR=\$(dirname \$COMPOSE_PATH) + mkdir -p \$PARENT_DIR + cd \$PARENT_DIR + git clone \$REPO_URL \$(basename \$COMPOSE_PATH) + echo 'Repository cloned successfully' + fi + " || { echo "Failed to setup git for $server"; continue; } # Docker Compose Aktion case "${{ inputs.action }}" in From 8d8cde5aa7c5df4e11bfb0383b0d0b741cd1d976 Mon Sep 17 00:00:00 2001 From: Lars Hampe Date: Mon, 27 Oct 2025 23:49:21 +0100 Subject: [PATCH 9/9] ci: rename git clone folder --- .gitea/workflows/deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index afad3d1..4f646a2 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -60,7 +60,7 @@ jobs: devops) echo "HOST=10.0.0.175" >> $GITHUB_ENV echo "USER=lars" >> $GITHUB_ENV - echo "COMPOSE_PATH=/home/lars/homelab/servers/production/devops" >> $GITHUB_ENV + echo "COMPOSE_PATH=/home/lars/devops/servers/production/devops" >> $GITHUB_ENV ;; production) echo "HOST=10.0.0.180" >> $GITHUB_ENV @@ -120,7 +120,7 @@ jobs: PARENT_DIR=\$(dirname \$COMPOSE_PATH) mkdir -p \$PARENT_DIR cd \$PARENT_DIR - git clone \$REPO_URL \$(basename \$COMPOSE_PATH) + git clone \$REPO_URL \homelab echo 'Repository cloned successfully' fi "