Files
michaelschiemer/.gitea/workflows/deploy.yml
Michael Schiemer 4d0328bfe3
Some checks failed
Deploy Application / deploy (push) Failing after 8s
Test Runner / test-basic (push) Successful in 7s
Test Runner / test-php (push) Successful in 26s
fix(ci): use correct secret name SSH_PRIVATE_KEY
2025-11-24 22:01:43 +01:00

76 lines
2.3 KiB
YAML

name: Deploy Application
on:
push:
branches:
- staging
- main
workflow_dispatch:
jobs:
deploy:
runs-on: php-ci
steps:
# Manual checkout - works without Node.js
- name: Checkout code
run: |
echo "📥 Checking out repository..."
if [ -d ".git" ]; then
git fetch origin
git checkout ${{ github.ref_name }}
git reset --hard origin/${{ github.ref_name }}
else
git clone --branch ${{ github.ref_name }} --single-branch ${{ github.server_url }}/${{ github.repository }}.git .
fi
- name: Determine environment
id: env
run: |
if [ "${{ github.ref }}" == "refs/heads/staging" ]; then
echo "environment=staging" >> $GITHUB_OUTPUT
elif [ "${{ github.ref }}" == "refs/heads/main" ]; then
echo "environment=production" >> $GITHUB_OUTPUT
else
echo "environment=staging" >> $GITHUB_OUTPUT
fi
- name: Deploy to server
env:
SSH_HOST: ${{ secrets.SSH_HOST }}
SSH_USER: ${{ secrets.SSH_USER }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
run: |
# Validate required secrets
if [ -z "$SSH_HOST" ] || [ -z "$SSH_USER" ] || [ -z "$SSH_PRIVATE_KEY" ]; then
echo "❌ Missing required secrets: SSH_HOST, SSH_USER, or SSH_PRIVATE_KEY"
exit 1
fi
echo "$SSH_PRIVATE_KEY" > /tmp/ssh_key
chmod 600 /tmp/ssh_key
ssh -i /tmp/ssh_key -o StrictHostKeyChecking=no $SSH_USER@$SSH_HOST << EOF
set -e
cd /home/deploy/michaelschiemer/current
# Pull latest code
git fetch origin ${{ github.ref_name }}
git reset --hard origin/${{ github.ref_name }}
# Run deployment script
./deployment/scripts/deploy.sh ${{ steps.env.outputs.environment }}
EOF
rm -f /tmp/ssh_key
- name: Deployment status
if: always()
run: |
if [ "${{ job.status }}" == "success" ]; then
echo "✅ Deployment successful"
else
echo "❌ Deployment failed"
exit 1
fi