Files
QuantEngineByItz/oms-wms-erp/.gitea/workflows/deploy-prod.yml
T
kjh2064 b34b0dd7d6
Validators (Pushes and Pull Requests) / UI & Storage Validation (pull_request) Failing after 12s
Validators (Pushes and Pull Requests) / Database & Schema Validation (pull_request) Successful in 13s
Validators (Pushes and Pull Requests) / Core Validators & Database Setup (pull_request) Failing after 28s
Validators (Pushes and Pull Requests) / WBS & Audit Validations (pull_request) Has been skipped
Validators (Pushes and Pull Requests) / .NET Contracts (pull_request) Has been skipped
Validators (Pushes and Pull Requests) / Calibration & Performance (pull_request) Has been skipped
Validators (Pushes and Pull Requests) / Operational Report & Decision Packet (pull_request) Has been skipped
Validators (Pushes and Pull Requests) / CI Workflow Lint (pull_request) Failing after 10s
Validators (Pushes and Pull Requests) / Security & Secrets (pull_request) Successful in 12s
Validators (Pushes and Pull Requests) / Notify PR Results (pull_request) Successful in 2s
Frontend CI Pipeline / ci-frontend-8-steps (pull_request) Failing after 2m50s
Add OMS WMS ERP platform
2026-07-27 00:45:39 +09:00

175 lines
5.6 KiB
YAML

name: Deploy to Production
on:
workflow_dispatch:
inputs:
release:
description: 'Release tag to deploy (leave empty for latest)'
required: false
default: ''
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Get release version
id: get-release
run: |
if [ -z "${{ github.event.inputs.release }}" ]; then
RELEASE=$(curl -s -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \
"${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases?limit=1" | jq -r '.[0].tag_name')
else
RELEASE="${{ github.event.inputs.release }}"
fi
echo "RELEASE=$RELEASE" >> $GITHUB_OUTPUT
echo "Release: $RELEASE"
- name: Download release artifact
run: |
mkdir -p artifacts
RELEASE="${{ steps.get-release.outputs.RELEASE }}"
# Get release info
RELEASE_INFO=$(curl -s -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \
"${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases/tags/$RELEASE")
ARTIFACT_ID=$(echo "$RELEASE_INFO" | jq -r '.assets[0].id')
# Download artifact
curl -L -o artifacts/oms-wms-erp.tar.gz \
-H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \
"${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases/assets/$ARTIFACT_ID"
ls -lh artifacts/
- name: Verify artifact
run: |
cd artifacts
# Download and verify checksum if available
CHECKSUM_FILE=$(curl -s -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \
"${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases/tags/${{ steps.get-release.outputs.RELEASE }}" | jq -r '.assets[] | select(.name == "RELEASE_CHECKSUM.txt") | .url')
if [ ! -z "$CHECKSUM_FILE" ]; then
curl -L -o CHECKSUM.txt "$CHECKSUM_FILE"
sha256sum -c CHECKSUM.txt || exit 1
fi
- name: Setup SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.DEPLOY_SSH_KEY }}" | base64 -d > ~/.ssh/deploy_key
chmod 600 ~/.ssh/deploy_key
ssh-keyscan -H ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts
- name: Deploy to server
env:
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
RELEASE: ${{ steps.get-release.outputs.RELEASE }}
run: |
ssh -i ~/.ssh/deploy_key ${DEPLOY_USER}@${DEPLOY_HOST} << 'DEPLOY_SCRIPT'
# Create deployment directory
DEPLOY_DIR="/home/kjh2064/deployments/oms-wms-erp_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$DEPLOY_DIR"
# Upload artifact
cd "$DEPLOY_DIR"
# Extract artifact from temp location
tar -xzf ~/artifacts-${{ github.run_id }}/oms-wms-erp.tar.gz
# Install dependencies
npm install --legacy-peer-deps --production
# Copy environment file
cp .env.example .env.production
# Set permissions
chmod -R 755 dist/
chmod -R 755 node_modules/
# Update active symlink
cd /home/kjh2064
rm -f oms-wms-erp_active
ln -s "$DEPLOY_DIR" oms-wms-erp_active
# Restart service
sudo systemctl restart oms-wms-erp.service
echo "✅ Deployment complete"
echo "Active version: $(readlink oms-wms-erp_active)"
DEPLOY_SCRIPT
- name: Health check
env:
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
run: |
ssh -i ~/.ssh/deploy_key ${DEPLOY_USER}@${DEPLOY_HOST} << 'HEALTH_CHECK'
echo "Waiting for service to be ready..."
sleep 5
# Check service status
if sudo systemctl is-active --quiet oms-wms-erp.service; then
echo "✅ Service is active"
else
echo "❌ Service is not active"
sudo journalctl -u oms-wms-erp.service -n 20
exit 1
fi
# Check HTTP response
if curl -s http://127.0.0.1:5173/ > /dev/null; then
echo "✅ HTTP 200 response"
else
echo "❌ HTTP request failed"
exit 1
fi
# Check logs for errors
if sudo journalctl -u oms-wms-erp.service -n 50 | grep -i "error"; then
echo "⚠️ Errors found in logs"
else
echo "✅ No errors in logs"
fi
echo "✅ Health check passed"
HEALTH_CHECK
- name: Deployment notification
if: success()
run: |
echo "🚀 Deployment Successful"
echo "Release: ${{ steps.get-release.outputs.RELEASE }}"
echo "Status: Production deployment complete"
- name: Rollback on failure
if: failure()
env:
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
run: |
ssh -i ~/.ssh/deploy_key ${DEPLOY_USER}@${DEPLOY_HOST} << 'ROLLBACK'
echo "🔄 Rolling back to previous version..."
cd /home/kjh2064
PREVIOUS=$(ls -t oms-wms-erp_* | grep -v active | head -1)
if [ ! -z "$PREVIOUS" ]; then
rm -f oms-wms-erp_active
ln -s "$PREVIOUS" oms-wms-erp_active
sudo systemctl restart oms-wms-erp.service
echo "✅ Rollback complete. Active version: $PREVIOUS"
fi
ROLLBACK