diff --git a/.github/workflows/production-deployment.yml b/.github/workflows/production-deployment.yml index 2db3074fb..89374c396 100644 --- a/.github/workflows/production-deployment.yml +++ b/.github/workflows/production-deployment.yml @@ -1,6 +1,7 @@ name: Production Deployment on: + workflow_dispatch: push: branches: - main @@ -8,6 +9,31 @@ on: - .github/workflows/** jobs: + build_and_push: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v6 + with: + file: docker/staging/Dockerfile + push: true + tags: hngdevops/nextjs-boilerplate:prod + deploy_to_production: if: github.event.repository.fork == false runs-on: ubuntu-latest @@ -24,4 +50,5 @@ jobs: username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} script: | - ./deploy_prod.sh next + cd hng_boilerplate_nextjs + ./scripts/prod_deploy.sh diff --git a/.github/workflows/staging-deployment.yml b/.github/workflows/staging-deployment.yml index ed32fb66f..ea82c2617 100644 --- a/.github/workflows/staging-deployment.yml +++ b/.github/workflows/staging-deployment.yml @@ -1,6 +1,7 @@ name: Staging Deployment on: + workflow_dispatch: push: branches: - staging @@ -8,6 +9,31 @@ on: - .github/workflows/** jobs: + build_and_push: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v6 + with: + file: docker/staging/Dockerfile + push: true + tags: hngdevops/nextjs-boilerplate:staging + deploy_to_staging: if: github.event.repository.fork == false runs-on: ubuntu-latest @@ -24,4 +50,5 @@ jobs: username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} script: | - ./deploy_staging.sh next + cd hng_boilerplate_nextjs + ./scripts/staging_deploy.sh diff --git a/docker/prod/docker-compose.yml b/docker/prod/docker-compose.yml index 9fa19856a..38660d65b 100644 --- a/docker/prod/docker-compose.yml +++ b/docker/prod/docker-compose.yml @@ -1,12 +1,11 @@ services: - next-prod-frontend-1: - build: - context: ../../ - dockerfile: docker/prod/Dockerfile + frontend: + image: hngdevops/nextjs-boilerplate:prod ports: - 3000:3000 - restart: always + volumes: + - ../../.env:/app/.env # next-prod-frontend-2: # build: diff --git a/docker/staging/docker-compose.yml b/docker/staging/docker-compose.yml index 96ed1f242..d279c3648 100644 --- a/docker/staging/docker-compose.yml +++ b/docker/staging/docker-compose.yml @@ -1,12 +1,11 @@ services: - next-staging-frontend-1: - build: - context: ../../ - dockerfile: docker/staging/Dockerfile + frontend: + image: hngdevops/nextjs-boilerplate:staging ports: - 3200:3000 - restart: always + volumes: + - ../../.env:/app/.env # next-staging-frontend-2: # build: diff --git a/scripts/prod_deploy.sh b/scripts/prod_deploy.sh index e192db8c1..38ab8d1a1 100755 --- a/scripts/prod_deploy.sh +++ b/scripts/prod_deploy.sh @@ -1,22 +1,8 @@ #!/bin/bash -if [ "$#" -ne 1 ]; then - echo "Usage: $0 {next|remix}" - exit 1 -fi +set -e -if [ "$1" == "next" ]; then - cd /home/nextjs/prod/hng_boilerplate_nextjs - git pull origin main - docker compose -f docker/prod/docker-compose.yml build - docker compose -f docker/prod/docker-compose.yml up -d -elif [ "$1" == "remix" ]; then - cd /home/remixjs/prod/hng_boilerplate_remix - git pull origin main - docker compose -f docker/prod/docker-compose.yml build - docker compose -f docker/prod/docker-compose.yml up -d -else - echo "Invalid argument. Use 'next' or 'remix'." - echo "Usage: $0 {next|remix}" - exit 1 -fi +cd "$(git rev-parse --show-toplevel)" +git pull origin main +docker pull hngdevops/nextjs-boilerplate:prod +docker compose --project-name prod-nextjs -f docker/prod/docker-compose.yml up -d diff --git a/scripts/staging_deploy.sh b/scripts/staging_deploy.sh index cc2ba3194..9a5f36ef3 100755 --- a/scripts/staging_deploy.sh +++ b/scripts/staging_deploy.sh @@ -1,22 +1,8 @@ #!/bin/bash -if [ "$#" -ne 1 ]; then - echo "Usage: $0 {next|remix}" - exit 1 -fi +set -e -if [ "$1" == "next" ]; then - cd /home/nextjs/staging/hng_boilerplate_nextjs - git pull origin staging - docker compose -f docker/staging/docker-compose.yml build - docker compose -f docker/staging/docker-compose.yml up -d -elif [ "$1" == "remix" ]; then - cd /home/remixjs/staging/hng_boilerplate_remix - git pull origin staging - docker compose -f docker/staging/docker-compose.yml build - docker compose -f docker/staging/docker-compose.yml up -d -else - echo "Invalid argument. Use 'next' or 'remix'." - echo "Usage: $0 {next|remix}" - exit 1 -fi +cd "$(git rev-parse --show-toplevel)" +git pull origin staging +docker pull hngdevops/nextjs-boilerplate:staging +docker compose --project-name staging-nextjs -f docker/staging/docker-compose.yml up -d