diff --git a/.github/workflows/deploy-user-docker.yml b/.github/workflows/deploy-user-docker.yml new file mode 100644 index 00000000..dec033a4 --- /dev/null +++ b/.github/workflows/deploy-user-docker.yml @@ -0,0 +1,102 @@ +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 + 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@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }} + + + - name: Build and Push Docker Image + run: | + docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/nowait_dev:user ./nowait-app-user-api + docker push ${{ secrets.DOCKERHUB_USERNAME }}/nowait_dev:user + + deploy: + name: Deploy to EC2 + runs-on: ubuntu-latest + needs: build-with-gradle + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Copy docker-compose.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.yml" + target: ${{ env.EC2_DEPLOY_PATH }} + + - name: Login to DockerHub + uses: docker/login-action@v1 + 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 }} + sudo docker-compose -p nowait_dev pull nowait-app-user-api + sudo docker-compose -p nowait_dev up -d nowait-app-user-api + diff --git a/docker-compose.yml b/docker-compose.yml index aee4f427..32947253 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -26,18 +26,19 @@ services: - ./nowait-app-admin-api:/app restart: always -# nowait-app-user-api: + nowait-app-user-api: # build: # context: nowait-app-user-api # dockerfile: Dockerfile -# container_name: nowait-app-user-api -# ports: -# - "8081:8081" -# depends_on: -# - mysql -# volumes: -# - ./nowait-app-user-api:/app -# restart: always + image: jihuneddie/nowait_dev:user + container_name: nowait-app-user-api + ports: + - "8082:8081" + depends_on: + - mysql + volumes: + - ./nowait-app-user-api:/app + restart: always volumes: mysql_data: diff --git a/nowait-app-admin-api/src/main/java/com/nowait/ApiAdminApplication.java b/nowait-app-admin-api/src/main/java/com/nowait/ApiAdminApplication.java index 1098599d..363e737d 100644 --- a/nowait-app-admin-api/src/main/java/com/nowait/ApiAdminApplication.java +++ b/nowait-app-admin-api/src/main/java/com/nowait/ApiAdminApplication.java @@ -10,3 +10,4 @@ public static void main(String[] args) { org.springframework.boot.SpringApplication.run(ApiAdminApplication.class, args); } } + diff --git a/nowait-app-user-api/src/main/java/com/nowait/ApiUserApplication.java b/nowait-app-user-api/src/main/java/com/nowait/ApiUserApplication.java index 8e25d58f..07db6d34 100644 --- a/nowait-app-user-api/src/main/java/com/nowait/ApiUserApplication.java +++ b/nowait-app-user-api/src/main/java/com/nowait/ApiUserApplication.java @@ -11,4 +11,3 @@ public static void main(String[] args) { SpringApplication.run(ApiUserApplication.class, args); } } -