diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.mainnet.yml similarity index 60% rename from .github/workflows/deploy.yml rename to .github/workflows/deploy.mainnet.yml index 79d3e16..8e4d839 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.mainnet.yml @@ -31,7 +31,17 @@ jobs: docker --version || { echo "Docker not found"; exit 1; } docker-compose --version || { echo "Docker Compose not found"; exit 1; } - # Build and run the Docker Compose services - docker-compose down - docker-compose build --no-cache - docker-compose up -d + # Stop existing services + docker-compose --project-name mainnet down + docker-compose --project-name sepolia down + + # Build and deploy Mainnet + docker-compose --env-file .env.mainnet --project-name mainnet build --no-cache + docker-compose --env-file .env.mainnet --project-name mainnet up -d + + # Build and deploy Sepolia + docker-compose --env-file .env.sepolia --project-name sepolia build --no-cache + docker-compose --env-file .env.sepolia --project-name sepolia up -d + + # Verify running services + docker ps diff --git a/.github/workflows/deploy.sepolia.yml b/.github/workflows/deploy.sepolia.yml index c3e14bd..48ffa47 100644 --- a/.github/workflows/deploy.sepolia.yml +++ b/.github/workflows/deploy.sepolia.yml @@ -12,43 +12,30 @@ jobs: steps: - name: SSH into Remote Server and Deploy Changes uses: appleboy/ssh-action@v1.1.0 - env: - SEPOLIA_DB_STRING: ${{ secrets.SEPOLIA_DB_STRING }} - SEPOLIA_NODE_STRING: ${{ secrets.SEPOLIA_NODE_STRING }} - SEPOLIA_ROUTER_ENDPOINT: ${{ secrets.SEPOLIA_ROUTER_ENDPOINT }} - SEPOLIA_POSTGRES_USER: ${{ secrets.POSTGRES_USER }} - SEPOLIA_POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }} - SEPOLIA_POSTGRES_DB: ${{ secrets.SEPOLIA_POSTGRES_DB }} with: host: ec2-3-87-142-202.compute-1.amazonaws.com username: ubuntu key: ${{ secrets.SSH_PRIVATE_KEY }} passphrase: ${{ secrets.SSH_PASSPHRASE }} port: 22 - envs: SEPOLIA_DB_STRING,SEPOLIA_NODE_STRING,SEPOLIA_ROUTER_ENDPOINT,SEPOLIA_POSTGRES_USER,SEPOLIA_POSTGRES_PASSWORD,SEPOLIA_POSTGRES_DB script: | # Navigate to the project directory cd ~/fossil-headers-db - # Pull the latest changes from the sepolia branch + # Pull the latest changes from the sepolia-db branch git fetch origin sepolia-db git reset --hard origin/sepolia-db - # Create or update .env file with the environment variables - cat > .env << EOL - SEPOLIA_DB_STRING=${SEPOLIA_DB_STRING} - SEPOLIA_NODE_STRING=${SEPOLIA_NODE_STRING} - SEPOLIA_ROUTER_ENDPOINT=${SEPOLIA_ROUTER_ENDPOINT} - SEPOLIA_POSTGRES_USER=${SEPOLIA_POSTGRES_USER} - SEPOLIA_POSTGRES_PASSWORD=${SEPOLIA_POSTGRES_PASSWORD} - SEPOLIA_POSTGRES_DB=${SEPOLIA_POSTGRES_DB} - EOL - # Ensure Docker and Docker Compose are installed docker --version || { echo "Docker not found"; exit 1; } docker-compose --version || { echo "Docker Compose not found"; exit 1; } - # Build and run the Docker Compose services for Sepolia - docker-compose -f docker-compose.sepolia.yml down - docker-compose -f docker-compose.sepolia.yml build --no-cache - docker-compose -f docker-compose.sepolia.yml up -d + # Stop any existing Sepolia services + docker-compose --project-name sepolia down + + # Build and deploy Sepolia services + docker-compose --env-file .env.sepolia --project-name sepolia build --no-cache + docker-compose --env-file .env.sepolia --project-name sepolia up -d + + # Verify running services + docker ps diff --git a/docker-compose.mainnet.yml b/docker-compose.mainnet.yml index d07e250..5f03525 100644 --- a/docker-compose.mainnet.yml +++ b/docker-compose.mainnet.yml @@ -6,11 +6,11 @@ services: dockerfile: Dockerfile.update context: . ports: - - "8081:8080" + - "8081:8080" # Mainnet-specific port networks: - mainnet_network environment: - - DB_CONNECTION_STRING=${DB_CONNECTION_STRING_BACKUP} + - DB_CONNECTION_STRING=${DB_CONNECTION_STRING} - NODE_CONNECTION_STRING=${NODE_CONNECTION_STRING} - ROUTER_ENDPOINT=${ROUTER_ENDPOINT} - RUST_LOG=info @@ -25,7 +25,7 @@ services: networks: - mainnet_network environment: - - DB_CONNECTION_STRING=${DB_CONNECTION_STRING_BACKUP} + - DB_CONNECTION_STRING=${DB_CONNECTION_STRING} - NODE_CONNECTION_STRING=${NODE_CONNECTION_STRING} - ROUTER_ENDPOINT=${ROUTER_ENDPOINT} - RUST_LOG=info @@ -41,7 +41,7 @@ services: - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=${POSTGRES_DB} ports: - - "5432:5432" + - "5432:5432" # Mainnet-specific port networks: - mainnet_network healthcheck: @@ -53,4 +53,4 @@ services: networks: mainnet_network: volumes: - db_mainnet_data: \ No newline at end of file + db_mainnet_data: diff --git a/docker-compose.sepolia.yml b/docker-compose.sepolia.yml index d57f9bb..fcd30a3 100644 --- a/docker-compose.sepolia.yml +++ b/docker-compose.sepolia.yml @@ -6,13 +6,13 @@ services: dockerfile: Dockerfile.update context: . ports: - - "8082:8080" + - "8082:8080" # Sepolia-specific port networks: - sepolia_network environment: - - DB_CONNECTION_STRING=${SEPOLIA_DB_STRING} - - NODE_CONNECTION_STRING=${SEPOLIA_NODE_STRING} - - ROUTER_ENDPOINT=${SEPOLIA_ROUTER_ENDPOINT} + - DB_CONNECTION_STRING=${DB_CONNECTION_STRING} + - NODE_CONNECTION_STRING=${NODE_CONNECTION_STRING} + - ROUTER_ENDPOINT=${ROUTER_ENDPOINT} - RUST_LOG=info depends_on: db: @@ -25,9 +25,9 @@ services: networks: - sepolia_network environment: - - DB_CONNECTION_STRING=${SEPOLIA_DB_STRING} - - NODE_CONNECTION_STRING=${SEPOLIA_NODE_STRING} - - ROUTER_ENDPOINT=${SEPOLIA_ROUTER_ENDPOINT} + - DB_CONNECTION_STRING=${DB_CONNECTION_STRING} + - NODE_CONNECTION_STRING=${NODE_CONNECTION_STRING} + - ROUTER_ENDPOINT=${ROUTER_ENDPOINT} - RUST_LOG=info - INTERVAL=${FIX_INTERVAL:-300} depends_on: @@ -37,15 +37,15 @@ services: db: image: postgres:16-alpine environment: - - POSTGRES_USER=${SEPOLIA_POSTGRES_USER} - - POSTGRES_PASSWORD=${SEPOLIA_POSTGRES_PASSWORD} - - POSTGRES_DB=${SEPOLIA_POSTGRES_DB} + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - POSTGRES_DB=${POSTGRES_DB} ports: - - "5432:5432" + - "5433:5432" # Sepolia-specific port networks: - sepolia_network healthcheck: - test: ["CMD-SHELL", "pg_isready -U ${SEPOLIA_POSTGRES_USER}"] + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] interval: 5s timeout: 5s retries: 5