The Gitea Actions Runner doesn't have Node.js installed, causing actions/checkout@v3 (a JavaScript action) to fail with "Cannot find: node in PATH". Replace with native shell-based git checkout that works without Node.js and uses Gitea context variables for repository URL.
70 lines
2.0 KiB
YAML
70 lines
2.0 KiB
YAML
name: Deploy Application
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- staging
|
|
- main
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: self-hosted
|
|
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_KEY: ${{ secrets.SSH_KEY }}
|
|
run: |
|
|
echo "$SSH_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
|
|
|