dev #2
@@ -13,37 +13,64 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout code
|
||||
run: |
|
||||
#!/bin/sh
|
||||
git clone $GITHUB_SERVER_URL/$GITHUB_REPOSITORY.git /workspace/repo || true
|
||||
cd /workspace/repo
|
||||
git fetch origin $GITHUB_REF_NAME
|
||||
git checkout $GITHUB_REF_NAME
|
||||
git pull origin $GITHUB_REF_NAME
|
||||
|
||||
- name: Setup SSH Key
|
||||
- name: Build Docker Image
|
||||
run: |
|
||||
cd /workspace/repo
|
||||
docker build -t merchbay_admin:dev .
|
||||
docker save merchbay_admin:dev | gzip > merchbay_admin_dev.tar.gz
|
||||
|
||||
- name: Setup SSH and Deploy
|
||||
run: |
|
||||
#!/bin/sh
|
||||
mkdir -p ~/.ssh
|
||||
printf '%s' "$DEPLOY_SSH_KEY" > ~/.ssh/deploy_key
|
||||
chmod 600 ~/.ssh/deploy_key
|
||||
env:
|
||||
DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
|
||||
|
||||
- name: Transfer Files to Development Server
|
||||
run: |
|
||||
#!/bin/sh
|
||||
cd /workspace/repo
|
||||
scp -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key merchbay_admin_dev.tar.gz docker-compose.yml "$DEPLOY_USER@$DEPLOY_HOST:/tmp/"
|
||||
env:
|
||||
DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
|
||||
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
|
||||
|
||||
- name: Deploy to Development Server
|
||||
run: |
|
||||
#!/bin/sh
|
||||
ssh -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key "$DEPLOY_USER@$DEPLOY_HOST" << 'ENDSSH'
|
||||
#!/bin/sh
|
||||
ssh -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key "$DEPLOY_USER@$DEPLOY_HOST" "
|
||||
DEPLOY_DIR='/var/www/merchbay_admin_dev'
|
||||
mkdir -p \$DEPLOY_DIR
|
||||
cd /tmp
|
||||
docker load < merchbay_admin_dev.tar.gz
|
||||
cp docker-compose.yml \$DEPLOY_DIR/
|
||||
cd \$DEPLOY_DIR
|
||||
|
||||
cat > .env <<'ENVEOF'
|
||||
APP_ENV=staging
|
||||
APP_DEBUG=false
|
||||
APP_URL=https://dev.merchbay.app
|
||||
DB_HOST=$DEV_DB_HOST
|
||||
DB_PORT=${DEV_DB_PORT:-3306}
|
||||
DB_DATABASE=$DEV_DB_DATABASE
|
||||
DB_USERNAME=$DEV_DB_USERNAME
|
||||
DB_PASSWORD=$DEV_DB_PASSWORD
|
||||
DOMAIN=dev.merchbay.app
|
||||
ENVEOF
|
||||
|
||||
docker compose down || true
|
||||
docker image prune -f
|
||||
docker network inspect traefik-public >/dev/null 2>&1 || docker network create traefik-public
|
||||
export DOMAIN=dev.merchbay.app
|
||||
export APP_URL=https://dev.merchbay.app
|
||||
docker compose up -d
|
||||
sleep 10
|
||||
docker compose exec -T app php artisan migrate --force
|
||||
docker compose exec -T app php artisan config:cache
|
||||
docker compose exec -T app php artisan route:cache
|
||||
docker compose exec -T app php artisan view:cache
|
||||
rm -f /tmp/merchbay_admin_dev.tar.gz /tmp/docker-compose.yml
|
||||
echo 'Development deployment completed successfully!'
|
||||
echo 'Application available at: https://dev.merchbay.app'
|
||||
"
|
||||
env:
|
||||
DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
|
||||
DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
|
||||
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
|
||||
DEV_DB_HOST: ${{ secrets.DEV_DB_HOST }}
|
||||
@@ -51,71 +78,8 @@ jobs:
|
||||
DEV_DB_DATABASE: ${{ secrets.DEV_DB_DATABASE }}
|
||||
DEV_DB_USERNAME: ${{ secrets.DEV_DB_USERNAME }}
|
||||
DEV_DB_PASSWORD: ${{ secrets.DEV_DB_PASSWORD }}
|
||||
# Set deployment directory for dev
|
||||
DEPLOY_DIR="/var/www/merchbay_admin_dev"
|
||||
|
||||
# Create deployment directory if it doesn't exist
|
||||
mkdir -p $DEPLOY_DIR
|
||||
|
||||
# Load the Docker image
|
||||
cd /tmp
|
||||
docker load < merchbay_admin_dev.tar.gz
|
||||
|
||||
# Copy docker-compose.yml to deployment directory
|
||||
cp docker-compose.yml $DEPLOY_DIR/
|
||||
|
||||
# Navigate to deployment directory
|
||||
cd $DEPLOY_DIR
|
||||
|
||||
# Update environment file for dev
|
||||
cat > .env << EOF
|
||||
APP_ENV=staging
|
||||
APP_DEBUG=false
|
||||
APP_URL=https://dev.merchbay.app
|
||||
DB_HOST=${{ secrets.DEV_DB_HOST }}
|
||||
DB_PORT=${{ secrets.DEV_DB_PORT || 3306 }}
|
||||
DB_DATABASE=${{ secrets.DEV_DB_DATABASE }}
|
||||
DB_USERNAME=${{ secrets.DEV_DB_USERNAME }}
|
||||
DB_PASSWORD=${{ secrets.DEV_DB_PASSWORD }}
|
||||
DOMAIN=dev.merchbay.app
|
||||
EOF
|
||||
|
||||
# Stop existing container
|
||||
docker compose down || true
|
||||
|
||||
# Remove old image
|
||||
docker image prune -f
|
||||
|
||||
# Ensure Traefik network exists
|
||||
docker network inspect traefik-public >/dev/null 2>&1 || docker network create traefik-public
|
||||
|
||||
# Update docker-compose for dev
|
||||
export DOMAIN=dev.merchbay.app
|
||||
export APP_URL=https://dev.merchbay.app
|
||||
|
||||
# Start the application
|
||||
docker compose up -d
|
||||
|
||||
# Wait for container to be ready
|
||||
sleep 10
|
||||
|
||||
# Run migrations
|
||||
docker compose exec -T app php artisan migrate --force
|
||||
|
||||
# Clear and cache configuration
|
||||
docker compose exec -T app php artisan config:cache
|
||||
docker compose exec -T app php artisan route:cache
|
||||
docker compose exec -T app php artisan view:cache
|
||||
|
||||
# Cleanup
|
||||
rm -f /tmp/merchbay_admin_dev.tar.gz /tmp/docker-compose.yml
|
||||
|
||||
echo "Development deployment completed successfully!"
|
||||
echo "Application available at: https://dev.merchbay.app"
|
||||
ENDSSH
|
||||
|
||||
- name: Health Check
|
||||
run: |
|
||||
#!/bin/sh
|
||||
sleep 10
|
||||
curl -f https://dev.merchbay.app || exit 1
|
||||
|
||||
@@ -10,13 +10,10 @@ on:
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
# If using self-hosted runner, change to:
|
||||
# runs-on: self-hosted
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
run: |
|
||||
#!/bin/sh
|
||||
git clone $GITHUB_SERVER_URL/$GITHUB_REPOSITORY.git /workspace/repo || true
|
||||
cd /workspace/repo
|
||||
git fetch origin $GITHUB_REF_NAME
|
||||
@@ -25,35 +22,56 @@ jobs:
|
||||
|
||||
- name: Build Docker Image
|
||||
run: |
|
||||
#!/bin/sh
|
||||
cd /workspace/repo
|
||||
docker build -t merchbay_admin:latest .
|
||||
docker save merchbay_admin:latest | gzip > merchbay_admin.tar.gz
|
||||
|
||||
- name: Setup SSH Key
|
||||
- name: Setup SSH and Deploy
|
||||
run: |
|
||||
#!/bin/sh
|
||||
mkdir -p ~/.ssh
|
||||
printf '%s' "$PROD_DEPLOY_SSH_KEY" > ~/.ssh/deploy_key
|
||||
chmod 600 ~/.ssh/deploy_key
|
||||
env:
|
||||
PROD_DEPLOY_SSH_KEY: ${{ secrets.PROD_DEPLOY_SSH_KEY }}
|
||||
|
||||
- name: Transfer Files to Production Server
|
||||
run: |
|
||||
#!/bin/sh
|
||||
cd /workspace/repo
|
||||
scp -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key merchbay_admin.tar.gz docker-compose.yml "$PROD_DEPLOY_USER@$PROD_DEPLOY_HOST:/tmp/"
|
||||
env:
|
||||
PROD_DEPLOY_USER: ${{ secrets.PROD_DEPLOY_USER }}
|
||||
PROD_DEPLOY_HOST: ${{ secrets.PROD_DEPLOY_HOST }}
|
||||
|
||||
- name: Deploy to Production Server
|
||||
run: |
|
||||
#!/bin/sh
|
||||
ssh -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key "$PROD_DEPLOY_USER@$PROD_DEPLOY_HOST" << 'ENDSSH'
|
||||
#!/bin/sh
|
||||
ssh -o StrictHostKeyChecking=no -i ~/.ssh/deploy_key "$PROD_DEPLOY_USER@$PROD_DEPLOY_HOST" "
|
||||
DEPLOY_DIR='/var/www/merchbay_admin'
|
||||
mkdir -p \$DEPLOY_DIR
|
||||
cd /tmp
|
||||
docker load < merchbay_admin.tar.gz
|
||||
cp docker-compose.yml \$DEPLOY_DIR/
|
||||
cd \$DEPLOY_DIR
|
||||
|
||||
cat > .env <<'ENVEOF'
|
||||
APP_ENV=production
|
||||
APP_DEBUG=false
|
||||
APP_URL=https://merchbay.com
|
||||
DB_HOST=$PROD_DB_HOST
|
||||
DB_PORT=${PROD_DB_PORT:-3306}
|
||||
DB_DATABASE=$PROD_DB_DATABASE
|
||||
DB_USERNAME=$PROD_DB_USERNAME
|
||||
DB_PASSWORD=$PROD_DB_PASSWORD
|
||||
DOMAIN=merchbay.com
|
||||
ENVEOF
|
||||
|
||||
docker compose down || true
|
||||
docker image prune -f
|
||||
docker network inspect traefik-public >/dev/null 2>&1 || docker network create traefik-public
|
||||
export DOMAIN=merchbay.com
|
||||
export APP_URL=https://merchbay.com
|
||||
docker compose up -d
|
||||
sleep 10
|
||||
docker compose exec -T app php artisan migrate --force
|
||||
docker compose exec -T app php artisan config:cache
|
||||
docker compose exec -T app php artisan route:cache
|
||||
docker compose exec -T app php artisan view:cache
|
||||
rm -f /tmp/merchbay_admin.tar.gz /tmp/docker-compose.yml
|
||||
echo 'Production deployment completed successfully!'
|
||||
echo 'Application available at: https://merchbay.com'
|
||||
"
|
||||
env:
|
||||
PROD_DEPLOY_SSH_KEY: ${{ secrets.PROD_DEPLOY_SSH_KEY }}
|
||||
PROD_DEPLOY_USER: ${{ secrets.PROD_DEPLOY_USER }}
|
||||
PROD_DEPLOY_HOST: ${{ secrets.PROD_DEPLOY_HOST }}
|
||||
PROD_DB_HOST: ${{ secrets.PROD_DB_HOST }}
|
||||
@@ -61,71 +79,8 @@ jobs:
|
||||
PROD_DB_DATABASE: ${{ secrets.PROD_DB_DATABASE }}
|
||||
PROD_DB_USERNAME: ${{ secrets.PROD_DB_USERNAME }}
|
||||
PROD_DB_PASSWORD: ${{ secrets.PROD_DB_PASSWORD }}
|
||||
# Set deployment directory for production
|
||||
DEPLOY_DIR="/var/www/merchbay_admin"
|
||||
|
||||
# Create deployment directory if it doesn't exist
|
||||
mkdir -p $DEPLOY_DIR
|
||||
|
||||
# Load the Docker image
|
||||
cd /tmp
|
||||
docker load < merchbay_admin.tar.gz
|
||||
|
||||
# Copy docker-compose.yml to deployment directory
|
||||
cp docker-compose.yml $DEPLOY_DIR/
|
||||
|
||||
# Navigate to deployment directory
|
||||
cd $DEPLOY_DIR
|
||||
|
||||
# Update environment file for production
|
||||
cat > .env << EOF
|
||||
APP_ENV=production
|
||||
APP_DEBUG=false
|
||||
APP_URL=https://merchbay.com
|
||||
DB_HOST=${{ secrets.PROD_DB_HOST }}
|
||||
DB_PORT=${{ secrets.PROD_DB_PORT || 3306 }}
|
||||
DB_DATABASE=${{ secrets.PROD_DB_DATABASE }}
|
||||
DB_USERNAME=${{ secrets.PROD_DB_USERNAME }}
|
||||
DB_PASSWORD=${{ secrets.PROD_DB_PASSWORD }}
|
||||
DOMAIN=merchbay.com
|
||||
EOF
|
||||
|
||||
# Stop existing container (disconnect from Traefik network gracefully)
|
||||
docker compose down || true
|
||||
|
||||
# Remove old image (optional, keeps only latest)
|
||||
docker image prune -f
|
||||
|
||||
# Ensure Traefik network exists
|
||||
docker network inspect traefik-public >/dev/null 2>&1 || docker network create traefik-public
|
||||
|
||||
# Update docker-compose for production
|
||||
export DOMAIN=merchbay.com
|
||||
export APP_URL=https://merchbay.com
|
||||
|
||||
# Start the application (will auto-connect to Traefik with paid SSL)
|
||||
docker compose up -d
|
||||
|
||||
# Wait for container to be ready
|
||||
sleep 10
|
||||
|
||||
# Run migrations
|
||||
docker compose exec -T app php artisan migrate --force
|
||||
|
||||
# Clear and cache configuration
|
||||
docker compose exec -T app php artisan config:cache
|
||||
docker compose exec -T app php artisan route:cache
|
||||
docker compose exec -T app php artisan view:cache
|
||||
|
||||
# Cleanup
|
||||
rm -f /tmp/merchbay_admin.tar.gz /tmp/docker-compose.yml
|
||||
|
||||
echo "Production deployment completed successfully!"
|
||||
echo "Application available at: https://merchbay.com"
|
||||
ENDSSH
|
||||
|
||||
- name: Health Check
|
||||
run: |
|
||||
#!/bin/sh
|
||||
sleep 10
|
||||
curl -f https://merchbay.com || exit 1
|
||||
|
||||
Reference in New Issue
Block a user