Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

optimized staging and production deploy scripts to use docker hub and added a build and push job to staging and prod workflow #725

Merged
merged 7 commits into from
Jul 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 28 additions & 1 deletion .github/workflows/production-deployment.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,39 @@
name: Production Deployment

on:
workflow_dispatch:
push:
branches:
- main
paths-ignore:
- .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
Expand All @@ -24,4 +50,5 @@ jobs:
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
script: |
./deploy_prod.sh next
cd hng_boilerplate_nextjs
./scripts/prod_deploy.sh
29 changes: 28 additions & 1 deletion .github/workflows/staging-deployment.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,39 @@
name: Staging Deployment

on:
workflow_dispatch:
push:
branches:
- staging
paths-ignore:
- .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
Expand All @@ -24,4 +50,5 @@ jobs:
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
script: |
./deploy_staging.sh next
cd hng_boilerplate_nextjs
./scripts/staging_deploy.sh
9 changes: 4 additions & 5 deletions docker/prod/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
9 changes: 4 additions & 5 deletions docker/staging/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
24 changes: 5 additions & 19 deletions scripts/prod_deploy.sh
Original file line number Diff line number Diff line change
@@ -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
24 changes: 5 additions & 19 deletions scripts/staging_deploy.sh
Original file line number Diff line number Diff line change
@@ -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
Loading