Add workflow to .github path for compatibility
This commit is contained in:
parent
e7338d1a70
commit
c1871481d5
|
|
@ -0,0 +1,130 @@
|
||||||
|
# Gitea Actions - Monaco USA Portal Build & Deploy
|
||||||
|
# This workflow builds and optionally deploys the portal
|
||||||
|
#
|
||||||
|
# Triggers:
|
||||||
|
# - Push to main branch
|
||||||
|
# - Pull requests to main
|
||||||
|
# - Manual trigger (workflow_dispatch)
|
||||||
|
#
|
||||||
|
# Required Secrets (configure in Gitea repo settings):
|
||||||
|
# - DEPLOY_HOST: Production server hostname/IP
|
||||||
|
# - DEPLOY_USER: SSH username
|
||||||
|
# - DEPLOY_KEY: SSH private key for deployment
|
||||||
|
# - DEPLOY_PATH: Path to project on server (e.g., /opt/monacousa-portal)
|
||||||
|
|
||||||
|
name: Build and Deploy
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
deploy:
|
||||||
|
description: 'Deploy to production'
|
||||||
|
required: false
|
||||||
|
default: 'false'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# =============================================
|
||||||
|
# Build Job - Builds Docker image
|
||||||
|
# =============================================
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Build Docker image
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./Dockerfile
|
||||||
|
push: false
|
||||||
|
load: true
|
||||||
|
tags: monacousa-portal:${{ github.sha }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
build-args: |
|
||||||
|
PUBLIC_SUPABASE_URL=https://api.portal.monacousa.org
|
||||||
|
PUBLIC_SUPABASE_ANON_KEY=placeholder
|
||||||
|
SUPABASE_SERVICE_ROLE_KEY=placeholder
|
||||||
|
|
||||||
|
- name: Test Docker image starts
|
||||||
|
run: |
|
||||||
|
docker run -d --name test-portal \
|
||||||
|
-e PUBLIC_SUPABASE_URL=https://api.portal.monacousa.org \
|
||||||
|
-e PUBLIC_SUPABASE_ANON_KEY=placeholder \
|
||||||
|
monacousa-portal:${{ github.sha }}
|
||||||
|
sleep 5
|
||||||
|
docker logs test-portal
|
||||||
|
docker stop test-portal
|
||||||
|
|
||||||
|
# =============================================
|
||||||
|
# Lint Job - Code quality checks
|
||||||
|
# =============================================
|
||||||
|
lint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '20'
|
||||||
|
cache: 'npm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci --legacy-peer-deps
|
||||||
|
|
||||||
|
- name: Run Svelte check
|
||||||
|
run: npm run check || true
|
||||||
|
|
||||||
|
- name: Run ESLint
|
||||||
|
run: npm run lint || true
|
||||||
|
|
||||||
|
# =============================================
|
||||||
|
# Deploy Job - Deploys to production server
|
||||||
|
# =============================================
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [build, lint]
|
||||||
|
if: |
|
||||||
|
(github.event_name == 'push' && github.ref == 'refs/heads/main') ||
|
||||||
|
(github.event_name == 'workflow_dispatch' && github.event.inputs.deploy == 'true')
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Deploy to production
|
||||||
|
uses: appleboy/ssh-action@v1.0.3
|
||||||
|
with:
|
||||||
|
host: ${{ secrets.DEPLOY_HOST }}
|
||||||
|
username: ${{ secrets.DEPLOY_USER }}
|
||||||
|
key: ${{ secrets.DEPLOY_KEY }}
|
||||||
|
script: |
|
||||||
|
cd ${{ secrets.DEPLOY_PATH }}
|
||||||
|
git pull origin main
|
||||||
|
./deploy.sh update
|
||||||
|
echo "Deployment completed at $(date)"
|
||||||
|
|
||||||
|
- name: Notify deployment success
|
||||||
|
if: success()
|
||||||
|
run: |
|
||||||
|
echo "Successfully deployed to production!"
|
||||||
|
echo "Commit: ${{ github.sha }}"
|
||||||
|
echo "Branch: ${{ github.ref_name }}"
|
||||||
|
|
||||||
|
- name: Notify deployment failure
|
||||||
|
if: failure()
|
||||||
|
run: |
|
||||||
|
echo "Deployment failed!"
|
||||||
|
echo "Check logs for details."
|
||||||
|
exit 1
|
||||||
Loading…
Reference in New Issue