name: Deploy Teams-Browser-Bot on: push: branches: - main env: APP_DIR: /opt/teamsbot SERVER_HOST: 179.237.73.4 SERVER_USER: ubuntu jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set environment run: | cp env-teamsbot-main.env .env rm -f env-teamsbot-*.env - name: Setup SSH run: | mkdir -p ~/.ssh echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/deploy_key chmod 600 ~/.ssh/deploy_key ssh-keyscan -H ${{ env.SERVER_HOST }} >> ~/.ssh/known_hosts - name: Install rsync run: | sudo apt-get update && sudo apt-get install -y rsync - name: Deploy files to server run: | rsync -avz --delete \ -e "ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no" \ --exclude '.git' \ --exclude '.github' \ --exclude '.forgejo' \ --exclude 'node_modules' \ --exclude 'dist' \ --exclude 'output' \ --exclude '__pycache__' \ --exclude 'env-teamsbot-*.env' \ ./ ${{ env.SERVER_USER }}@${{ env.SERVER_HOST }}:${{ env.APP_DIR }}/ - name: Build and start container run: | ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no \ ${{ env.SERVER_USER }}@${{ env.SERVER_HOST }} << 'ENDSSH' set -e cd /opt/teamsbot echo "Building Docker image..." docker compose build echo "Starting container..." docker compose up -d echo "Waiting for container to start..." sleep 10 echo "Container status:" docker compose ps ENDSSH - name: Health Check run: | echo "Running health check..." sleep 5 HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" \ http://${{ env.SERVER_HOST }}:4100/health || echo "000") if [ "$HTTP_STATUS" = "200" ]; then echo "Health check passed! (HTTP $HTTP_STATUS)" else echo "Health check failed! (HTTP $HTTP_STATUS)" echo "Checking container logs..." ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no \ ${{ env.SERVER_USER }}@${{ env.SERVER_HOST }} \ "cd /opt/teamsbot && docker compose logs --tail=50" exit 1 fi - name: Deployment Summary if: success() run: | echo "### Deployed successfully!" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "Host: \`${{ env.SERVER_HOST }}:4100\`" >> $GITHUB_STEP_SUMMARY echo "Health: \`http://${{ env.SERVER_HOST }}:4100/health\`" >> $GITHUB_STEP_SUMMARY