Skip to content

Merge pull request #364 from GTable/refactor#361-getMyWaiting #152

Merge pull request #364 from GTable/refactor#361-getMyWaiting

Merge pull request #364 from GTable/refactor#361-getMyWaiting #152

name: Dev User CI/CD With Docker
on:
push:
branches:
- develop
paths:
- 'nowait-app-user-api/**'
- 'nowait-common/**'
- 'nowait-domain/domain-core-rdb/**'
- 'nowait-domain/domain-user-rdb/**'
- 'nowait-infra/**'
- 'build.gradle'
- 'settings.gradle'
- 'gradle/**'
env:
DOCKERHUB_REPO: jihuneddie/nowait_dev_user
DIVISION: user
EC2_DEPLOY_PATH: /home/ubuntu/spring-github-action-user-docker
jobs:
build-with-gradle:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'zulu'
- name: Make gradlew executable
run: chmod +x ./gradlew
- name: Set YML
run: |
mkdir -p nowait-app-user-api/src/main/resources
echo "${{ secrets.APPLICATION_DEV_USER_YML }}" \
| base64 --decode \
> nowait-app-user-api/src/main/resources/application-user.yml
find nowait-app-user-api/src
- name: Build User JAR
run: ./gradlew clean :nowait-app-user-api:bootJar -x test
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }}
- name: Build and Push Docker Image
run: |
TAG=${GITHUB_SHA::7}
docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/nowait_dev_user:${TAG} -t ${{ secrets.DOCKERHUB_USERNAME }}/nowait_dev_user:latest ./nowait-app-user-api
docker push ${{ secrets.DOCKERHUB_USERNAME }}/nowait_dev_user:${TAG}
docker push ${{ secrets.DOCKERHUB_USERNAME }}/nowait_dev_user:latest
deploy:
name: Deploy to EC2
runs-on: ubuntu-latest
needs: build-with-gradle
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set Prometheus YML
run: |
echo "${{ secrets.PROMETHEUS_DEV_USER_YML }}" \
| base64 --decode \
> prometheus-user.yml
- name: Copy docker-compose.user.yml to EC2
uses: appleboy/scp-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
port: ${{ secrets.EC2_PORT }}
source: "docker-compose.user.yml"
target: ${{ env.EC2_DEPLOY_PATH }}
- name: Copy docker-compose.user-monitoring.yml to EC2
uses: appleboy/scp-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
port: ${{ secrets.EC2_PORT }}
source: "docker-compose.user-monitoring.yml"
target: ${{ env.EC2_DEPLOY_PATH }}
- name: Copy prometheus.yml to EC2
uses: appleboy/scp-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
port: ${{ secrets.EC2_PORT }}
source: "prometheus-user.yml"
target: ${{ env.EC2_DEPLOY_PATH }}
- name: Copy deploy-user-docker to EC2
uses: appleboy/scp-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
port: ${{ secrets.EC2_PORT }}
source: "scripts/deploy-user-docker.sh"
target: "${{ env.EC2_DEPLOY_PATH }}"
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }}
- name: Deploy to EC2
uses: appleboy/ssh-action@master
env:
AWS_ACCESS_KEY_ID: ${{ secrets.DEVSERVER_CICD_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.DEVSERVER_CICD_SECRET_KEY }}
AWS_REGION: ap-northeast-2
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
port: ${{ secrets.EC2_PORT }}
envs: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION
script: |
cd ${{ env.EC2_DEPLOY_PATH }}
chmod +x ./scripts/deploy-user-docker.sh
./scripts/deploy-user-docker.sh