1183307f96
ci / backend (push) Failing after 1s
ci / static (push) Failing after 8s
Build & Test with Secrets / build (push) Failing after 1s
ci / frontend (push) Failing after 21s
Build & Test with Secrets / security-scan (push) Failing after 6s
ci / publish (push) Has been skipped
Build & Test with Secrets / frontend (push) Failing after 1m20s
Build & Test with Secrets / notification (push) Failing after 2s
deploy / deploy (push) Failing after 1m54s
deploy / notify (push) Successful in 1s
Changed approach: - Build Release package locally (zip) - Transfer via SCP (requires SSH key) - Manual unzip and service restart on server Requires DEPLOY_KEY secret (SSH private key) Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
91 lines
2.7 KiB
YAML
91 lines
2.7 KiB
YAML
name: deploy
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
deploy:
|
|
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref == 'refs/heads/main')
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 30
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: '10.0.x'
|
|
|
|
- run: dotnet restore KArtSell.sln
|
|
|
|
- run: dotnet build KArtSell.sln --no-restore -c Release
|
|
|
|
- name: Publish Release Build
|
|
run: |
|
|
dotnet publish -c Release -o ./publish src/KArtSell.Host
|
|
dotnet publish -c Release -o ./publish src/KArtSell.DbMigrator
|
|
|
|
- name: Create deployment package
|
|
run: |
|
|
cd ./publish
|
|
zip -r ../kartsell-release.zip .
|
|
cd ..
|
|
ls -lh kartsell-release.zip
|
|
|
|
- name: Deploy via SCP to server
|
|
env:
|
|
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
|
|
run: |
|
|
# SSH 키 설정 (SSH_KEY에서 변환)
|
|
echo "$DEPLOY_KEY" > /tmp/deploy_key.pem
|
|
chmod 600 /tmp/deploy_key.pem
|
|
|
|
# 서버에 파일 전송
|
|
echo "📦 Deploying kartsell-release.zip to server..."
|
|
scp -i /tmp/deploy_key.pem -o StrictHostKeyChecking=no \
|
|
./kartsell-release.zip kjh2064@178.104.200.7:/tmp/
|
|
|
|
echo "✅ File transferred"
|
|
echo ""
|
|
echo "📋 Next steps on server (run these):"
|
|
echo " ssh kjh2064@178.104.200.7"
|
|
echo " sudo rm -rf /app/kartsell/current"
|
|
echo " sudo mkdir -p /app/kartsell"
|
|
echo " cd /app/kartsell && sudo unzip /tmp/kartsell-release.zip"
|
|
echo " export KARTSELL_POSTGRES='${{ secrets.KARTSELL_POSTGRES }}'"
|
|
echo " dotnet KArtSell.DbMigrator.dll"
|
|
echo " sudo systemctl restart kartsell"
|
|
echo ""
|
|
echo "✅ Deployment package ready"
|
|
|
|
# Cleanup
|
|
rm /tmp/deploy_key.pem
|
|
|
|
notify:
|
|
if: always()
|
|
needs: deploy
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Notify deployment status
|
|
env:
|
|
TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }}
|
|
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
|
|
run: |
|
|
STATUS="${{ needs.deploy.result }}"
|
|
if [ "$STATUS" = "success" ]; then
|
|
MESSAGE="✅ K-ArtSell Aegis deployed successfully to production"
|
|
else
|
|
MESSAGE="❌ K-ArtSell Aegis deployment failed"
|
|
fi
|
|
|
|
curl -X POST "https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMessage" \
|
|
-d "chat_id=$TELEGRAM_CHAT_ID" \
|
|
-d "text=$MESSAGE" \
|
|
-d "parse_mode=HTML" || echo "Telegram notification failed"
|