Skip to content
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
98 changes: 98 additions & 0 deletions .github/workflows/cd-api-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: CD API DEV

on:
push:
branches: [ develop ]

jobs:
detect-changes:
runs-on: ubuntu-latest
outputs:
api_changed: ${{ steps.filter.outputs.api }}
steps:
- uses: actions/checkout@v4
- id: filter
uses: dorny/paths-filter@v3
with:
base: develop
filters: |
api:
- 'api/**'

build-api:
needs: detect-changes
if: needs.detect-changes.outputs.api_changed == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'corretto'
java-version: '17'

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Grant execute permission for run-test-mysql-redis.sh
run: chmod +x run-test-mysql-redis.sh
working-directory: ./domain

- name: Run test mysql redis script
run: ./run-test-mysql-redis.sh
working-directory: ./domain

- name: Test & Build api only
run: ./gradlew :api:build

- name: Sign in Dockerhub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Build the Docker image
run: docker build -f ./Dockerfile --platform linux/amd64 --no-cache -t samhap/kokomen-notification-api:dev .
working-directory: ./api

- name: Push the Docker Image to Dockerhub
run: docker push samhap/kokomen-notification-api:dev
working-directory: ./api

deploy-api:
needs: build-api
runs-on: [ self-hosted, dev-notification ]
steps:
- name: Stop existing container
run: sudo docker rm -f kokomen-notification-dev-api || true

- name: Remove old API Docker image
run: |
if sudo docker images samhap/kokomen-notification-api:dev -q | grep -q .; then
sudo docker rmi -f samhap/kokomen-notification-api:dev || true
fi

- name: pull docker compose yaml files
working-directory: /home/ubuntu
run: |
[ -d kokomen-notification ] || git clone --filter=blob:none --no-checkout https://github.com/samhap-soft/kokomen-notification.git
cd kokomen-notification
git sparse-checkout init --cone
git fetch origin develop
git checkout develop
git sparse-checkout set docker/dev
git pull origin develop

- name: Docker Image pull
run: sudo docker pull samhap/kokomen-notification-api:dev

- name: Docker run
working-directory: /home/ubuntu
env:
MYSQL_ROOT_PASSWORD_DEV: ${{ secrets.MYSQL_ROOT_PASSWORD_DEV }}
SPRING_DATASOURCE_USERNAME_DEV: ${{ secrets.SPRING_DATASOURCE_USERNAME_DEV }}
SPRING_DATASOURCE_PASSWORD_DEV: ${{ secrets.SPRING_DATASOURCE_PASSWORD_DEV }}
run: |
export HOSTNAME=$(hostname)
cd kokomen-notification/docker/dev
sudo -E docker compose -f docker-compose-dev.yml up -d kokomen-notification-dev-api kokomen-notification-mysql-dev
99 changes: 99 additions & 0 deletions .github/workflows/cd-api-prod.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
name: CD API PROD

on:
push:
branches: [ main ]

jobs:
detect-changes:
runs-on: ubuntu-latest
outputs:
api_changed: ${{ steps.filter.outputs.api }}
steps:
- uses: actions/checkout@v4
- id: filter
uses: dorny/paths-filter@v3
with:
base: main
filters: |
api:
- 'api/**'

build-api:
needs: detect-changes
if: needs.detect-changes.outputs.api_changed == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'corretto'
java-version: '17'

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Grant execute permission for run-test-mysql-redis.sh
run: chmod +x run-test-mysql-redis.sh
working-directory: ./domain

- name: Run test mysql redis script
run: ./run-test-mysql-redis.sh
working-directory: ./domain

- name: Test & Build api only
run: ./gradlew :api:build

- name: Sign in Dockerhub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Build the Docker image
run: docker build -f ./Dockerfile --platform linux/arm64 --no-cache -t samhap/kokomen-notification-api:prod .
working-directory: ./api

- name: Push the Docker Image to Dockerhub
run: docker push samhap/kokomen-notification-api:prod
working-directory: ./api

deploy-api:
needs: build-api
runs-on: [ self-hosted, prod-notification ]

strategy:
matrix:
runner: [ prod-notification-a, prod-notification-b ]

steps:
- name: Stop existing container
run: sudo docker rm -f kokomen-notification-api || true

- name: Remove old API Docker image
run: |
if sudo docker images samhap/kokomen-notification-api:prod -q | grep -q .; then
sudo docker rmi -f samhap/kokomen-notification-api:prod || true
fi

- name: pull docker compose yaml files
working-directory: /home/ubuntu
run: |
[ -d kokomen-notification ] || git clone --filter=blob:none --no-checkout https://github.com/samhap-soft/kokomen-notification.git
cd kokomen-notification
git sparse-checkout init --cone
git fetch origin main
git checkout main
git sparse-checkout set docker/prod
git pull origin main

- name: Docker Image pull
run: sudo docker pull samhap/kokomen-notification-api:prod

- name: Docker run
working-directory: /home/ubuntu
run: |
export HOSTNAME=$(hostname)
cd kokomen-notification/docker/prod
sudo -E docker compose -f docker-compose-prod.yml up -d kokomen-notification-api
98 changes: 98 additions & 0 deletions .github/workflows/cd-internal-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: CD INTERNAL DEV

on:
push:
branches: [ develop ]

jobs:
detect-changes:
runs-on: ubuntu-latest
outputs:
internal_changed: ${{ steps.filter.outputs.internal }}
steps:
- uses: actions/checkout@v4
- id: filter
uses: dorny/paths-filter@v3
with:
base: develop
filters: |
internal:
- 'internal/**'

build-internal:
needs: detect-changes
if: needs.detect-changes.outputs.internal_changed == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'corretto'
java-version: '17'

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Grant execute permission for run-test-mysql-redis.sh
run: chmod +x run-test-mysql-redis.sh
working-directory: ./domain

- name: Run test mysql redis script
run: ./run-test-mysql-redis.sh
working-directory: ./domain

- name: Test & Build internal only
run: ./gradlew :internal:build

- name: Sign in Dockerhub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Build the Docker image
run: docker build -f ./Dockerfile --platform linux/amd64 --no-cache -t samhap/kokomen-notification-internal:dev .
working-directory: ./internal

- name: Push the Docker Image to Dockerhub
run: docker push samhap/kokomen-notification-internal:dev
working-directory: ./internal

deploy-internal:
needs: build-internal
runs-on: [ self-hosted, dev-notification ]
steps:
- name: Stop existing container
run: sudo docker rm -f kokomen-notification-dev-internal || true

- name: Remove old INTERNAL Docker image
run: |
if sudo docker images samhap/kokomen-notification-internal:dev -q | grep -q .; then
sudo docker rmi -f samhap/kokomen-notification-internal:dev || true
fi

- name: pull docker compose yaml files
working-directory: /home/ubuntu
run: |
[ -d kokomen-notification ] || git clone --filter=blob:none --no-checkout https://github.com/samhap-soft/kokomen-notification.git
cd kokomen-notification
git sparse-checkout init --cone
git fetch origin develop
git checkout develop
git sparse-checkout set docker/dev
git pull origin develop

- name: Docker Image pull
run: sudo docker pull samhap/kokomen-notification-internal:dev

- name: Docker run
working-directory: /home/ubuntu
env:
MYSQL_ROOT_PASSWORD_DEV: ${{ secrets.MYSQL_ROOT_PASSWORD_DEV }}
SPRING_DATASOURCE_USERNAME_DEV: ${{ secrets.SPRING_DATASOURCE_USERNAME_DEV }}
SPRING_DATASOURCE_PASSWORD_DEV: ${{ secrets.SPRING_DATASOURCE_PASSWORD_DEV }}
run: |
export HOSTNAME=$(hostname)
cd kokomen-notification/docker/dev
sudo -E docker compose -f docker-compose-dev.yml up -d kokomen-notification-dev-internal kokomen-notification-mysql-dev
99 changes: 99 additions & 0 deletions .github/workflows/cd-internal-prod.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
name: CD INTERNAL PROD

on:
push:
branches: [ main ]

jobs:
detect-changes:
runs-on: ubuntu-latest
outputs:
internal_changed: ${{ steps.filter.outputs.internal }}
steps:
- uses: actions/checkout@v4
- id: filter
uses: dorny/paths-filter@v3
with:
base: main
filters: |
internal:
- 'internal/**'

build-internal:
needs: detect-changes
if: needs.detect-changes.outputs.internal_changed == 'true'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'corretto'
java-version: '17'

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Grant execute permission for run-test-mysql-redis.sh
run: chmod +x run-test-mysql-redis.sh
working-directory: ./domain

- name: Run test mysql redis script
run: ./run-test-mysql-redis.sh
working-directory: ./domain

- name: Test & Build internal only
run: ./gradlew :internal:build

- name: Sign in Dockerhub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Build the Docker image
run: docker build -f ./Dockerfile --platform linux/arm64 --no-cache -t samhap/kokomen-notification-internal:prod .
working-directory: ./internal

- name: Push the Docker Image to Dockerhub
run: docker push samhap/kokomen-notification-internal:prod
working-directory: ./internal

deploy-internal:
needs: build-internal
runs-on: [ self-hosted, prod-notification ]

strategy:
matrix:
runner: [ prod-notification-a, prod-notification-b ]

steps:
- name: Stop existing container
run: sudo docker rm -f kokomen-notification-internal || true

- name: Remove old INTERNAL Docker image
run: |
if sudo docker images samhap/kokomen-notification-internal:prod -q | grep -q .; then
sudo docker rmi -f samhap/kokomen-notification-internal:prod || true
fi

- name: pull docker compose yaml files
working-directory: /home/ubuntu
run: |
[ -d kokomen-notification ] || git clone --filter=blob:none --no-checkout https://github.com/samhap-soft/kokomen-notification.git
cd kokomen-notification
git sparse-checkout init --cone
git fetch origin main
git checkout main
git sparse-checkout set docker/prod
git pull origin main

- name: Docker Image pull
run: sudo docker pull samhap/kokomen-notification-internal:prod

- name: Docker run
working-directory: /home/ubuntu
run: |
export HOSTNAME=$(hostname)
cd kokomen-notification/docker/prod
sudo -E docker compose -f docker-compose-prod.yml up -d kokomen-notification-internal
Loading