Skip to content

Development to prod (fix referral system, clean code, optimize and make more fluid and smoothly UX) #195

Development to prod (fix referral system, clean code, optimize and make more fluid and smoothly UX)

Development to prod (fix referral system, clean code, optimize and make more fluid and smoothly UX) #195

Workflow file for this run

name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
jobs:
quality-check:
name: Code Quality Check
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
- name: Run ESLint
run: npm run lint:check
- name: Type check
run: npm run type-check
build:
name: Build Application
runs-on: ubuntu-latest
needs: [quality-check]
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: |
echo "Node.js version:"
node --version
echo "npm version:"
npm --version
echo "Installing dependencies..."
npm ci
echo "Dependencies installed successfully"
echo "Checking for any dependency issues..."
npm ls --depth=0
echo "Checking for dependency conflicts..."
npm audit --audit-level=moderate || echo "Audit completed with warnings"
- name: Build application
env:
NEXT_PUBLIC_STELLAR_NETWORK: TESTNET
NEXT_PUBLIC_STELLAR_HORIZON_TESTNET: https://horizon-testnet.stellar.org
NEXT_PUBLIC_STELLAR_HORIZON_PUBLIC: https://horizon.stellar.org
NEXT_PUBLIC_DEFAULT_ASSET_CODE: USDC
NEXT_PUBLIC_DEFAULT_ASSET_ISSUER: CBIELTK6YBZJU5UP2WWQEUCYKLPU6AUNZ2BQ4WWFEIE3USCIHMXQDAMA
NEXT_PUBLIC_DEFAULT_ASSET_DECIMALS: 7
NEXT_PUBLIC_APP_NAME: Stellar Nexus
NEXT_PUBLIC_APP_VERSION: 0.1.0
NODE_ENV: production
NEXT_PUBLIC_PLATFORM_FEE_PERCENTAGE: 4
NEXT_PUBLIC_DEFAULT_ESCROW_DEADLINE_DAYS: 7
NEXT_PUBLIC_DEBUG_MODE: false
NEXT_PUBLIC_ESCROW_FEATURES_ENABLED: true
NEXT_PUBLIC_WALLET_FEATURES_ENABLED: true
NEXT_PUBLIC_DEMO_FEATURES_ENABLED: true
NEXT_PUBLIC_AI_FEATURES_ENABLED: true
NEXT_PUBLIC_ANIMATIONS_ENABLED: true
NEXT_PUBLIC_GLASSMORPHISM_ENABLED: true
NEXT_PUBLIC_GRADIENT_EFFECTS_ENABLED: true
NEXT_PUBLIC_LAZY_LOADING_ENABLED: true
NEXT_PUBLIC_IMAGE_OPTIMIZATION_ENABLED: true
NEXT_PUBLIC_CODE_SPLITTING_ENABLED: true
NEXT_PUBLIC_CONTENT_SECURITY_POLICY_ENABLED: true
NEXT_PUBLIC_XSS_PROTECTION_ENABLED: true
NEXT_PUBLIC_FRAME_OPTIONS_ENABLED: true
NEXT_PUBLIC_ANALYTICS_ENABLED: false
NEXT_PUBLIC_ERROR_REPORTING_ENABLED: false
NEXT_PUBLIC_AI_ASSISTANT_ENABLED: true
NEXT_PUBLIC_AI_ASSISTANT_NAME: NEXUS PRIME
NEXT_PUBLIC_AI_ASSISTANT_VOICE_ENABLED: true
NEXT_PUBLIC_DEMO_MODE_ENABLED: true
NEXT_PUBLIC_DEMO_DATA_ENABLED: true
NEXT_PUBLIC_FREIGHTER_APP_ID: stellar-nexus-experience
NEXT_PUBLIC_ALBEDO_APP_NAME: Stellar Nexus Experience
# Firebase credentials should be set as GitHub secrets, not hardcoded
NEXT_PUBLIC_FIREBASE_API_KEY: ${{ secrets.NEXT_PUBLIC_FIREBASE_API_KEY }}
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN: ${{ secrets.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN }}
NEXT_PUBLIC_FIREBASE_PROJECT_ID: ${{ secrets.NEXT_PUBLIC_FIREBASE_PROJECT_ID }}
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET: ${{ secrets.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET }}
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID: ${{ secrets.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID }}
NEXT_PUBLIC_FIREBASE_APP_ID: ${{ secrets.NEXT_PUBLIC_FIREBASE_APP_ID }}
NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID: ${{ secrets.NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID }}
run: |
echo "Environment variables set:"
echo "NODE_ENV: $NODE_ENV"
echo "NEXT_PUBLIC_STELLAR_NETWORK: $NEXT_PUBLIC_STELLAR_NETWORK"
echo "Current directory contents:"
ls -la
echo "Starting build..."
npm run build 2>&1 | tee build.log
BUILD_EXIT_CODE=$?
echo "Build completed with exit code: $BUILD_EXIT_CODE"
if [ $BUILD_EXIT_CODE -ne 0 ]; then
echo "Build failed! Build log:"
cat build.log
exit 1
fi
- name: List build directory contents
run: |
echo "Checking if .next directory exists:"
ls -la .next/ || echo ".next directory not found"
echo "Checking if build was successful:"
ls -la .next/static/ || echo "static directory not found"
echo "Build log contents:"
cat build.log || echo "No build log found"
- name: Upload build artifacts
uses: actions/upload-artifact@v4
if: success()
with:
name: build-files
path: .next/
retention-days: 7
- name: Upload build log
uses: actions/upload-artifact@v4
if: always()
with:
name: build-log
path: build.log
retention-days: 7
# Deploy job removed - Vercel handles automatic deployments via GitHub integration
# No need for manual GitHub Actions deployment when Vercel webhook is active
# E2E Tests - Temporarily disabled
# e2e-tests:
# name: E2E Tests
# runs-on: ubuntu-latest
# needs: build
# steps:
# - name: Checkout code
# uses: actions/checkout@v4
# - name: Setup Node.js
# uses: actions/setup-node@v4
# with:
# node-version: '18'
# cache: 'npm'
# - name: Install dependencies
# run: npm ci
# - name: Download build artifacts
# uses: actions/download-artifact@v4
# with:
# name: build-files
# path: .next/
# - name: Verify build artifacts
# run: |
# echo "Checking downloaded artifacts:"
# ls -la .next/ || echo ".next directory not found after download"
# echo "Checking if static files exist:"
# ls -la .next/static/ || echo "static directory not found"
# - name: Start application
# run: npm start &
# - name: Wait for application to start
# run: |
# timeout 30 bash -c 'until curl -f http://localhost:3000; do sleep 1; done'
# - name: Run Cypress tests
# uses: cypress-io/github-action@v6
# with:
# start: npm start
# wait-on: 'http://localhost:3000'
# browser: chrome
# record: false
# - name: Upload Cypress screenshots
# uses: actions/upload-artifact@v4
# if: failure() && hashFiles('cypress/screenshots/**/*') != ''
# with:
# name: cypress-screenshots
# path: cypress/screenshots/
# retention-days: 7
# - name: Upload Cypress videos
# uses: actions/upload-artifact@v4
# if: always() && hashFiles('cypress/videos/**/*') != ''
# with:
# name: cypress-videos
# path: cypress/videos/
# retention-days: 7