From 1f7a38ed709718e122a5c5ad5bed69b6b46f46e2 Mon Sep 17 00:00:00 2001 From: seheonnn Date: Mon, 15 Jan 2024 09:38:09 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=9A[CI/CD]=20CI/CD=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(#8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * πŸ“Œchore: yml μˆ˜μ • * πŸ“Œchore: plain jar 파일 μ„€μ • * πŸ’š[CI/CD] 곡백 μ—λŸ¬ μˆ˜μ • #8 * πŸ’š[CI/CD] μ˜€νƒ€ μˆ˜μ • #8 * πŸ“docs: λ„μ»€νŒŒμΌ μˆ˜μ • * πŸ“docs: λ„μ»€νŒŒμΌ μˆ˜μ • * πŸ“docs: λ„μ»€νŒŒμΌ μˆ˜μ • * πŸ’š[CI/CD] CI/CD μˆ˜μ • * πŸ’š[CI/CD] CI/CD μˆ˜μ • --------- Co-authored-by: marooo326 --- .github/workflows/gradle.yml | 79 ++++++++++++------------ Dockerfile | 5 +- build.gradle | 5 ++ src/main/resources/application-local.yml | 28 --------- src/main/resources/application-prod.yml | 29 --------- src/main/resources/application.yml | 29 ++++++++- 6 files changed, 74 insertions(+), 101 deletions(-) delete mode 100644 src/main/resources/application-local.yml delete mode 100644 src/main/resources/application-prod.yml diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 6eb7750e..af2b51c0 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -8,33 +8,28 @@ on: jobs: ci: - runs-on: ubuntu-lastest + 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: 'temurin' - - - name: Make application.yml - run: | + - name: Checkout + uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + + java-version: '17' + distribution: 'temurin' + + - name: Make application.yml + run: | cd ./src/main/resources touch ./application.yml echo "${{ secrets.APPLICATION_YML }}" > ./application.yml - - - name: Grant execute permission for gradlew and build - run: | - chmod +x ./gradlew - ./gradlew clean - ./gradlew build + cd: - runs-on: ubuntu-latest - needs: ci + runs-on: ubuntu-latest + needs: ci - steps: + steps: - name: Checkout uses: actions/checkout@v3 @@ -44,39 +39,45 @@ jobs: java-version: '17' distribution: 'temurin' - # Docker image Build (2) + - name: Grant execute permission for gradlew and build + run: | + chmod +x ./gradlew + ./gradlew clean + ./gradlew build -x test + + # Docker image Build (1) - name: Docker image build run: docker build -t ${{ secrets.DOCKER_USERNAME }}/sponus-docker --pull --no-cache --platform linux/amd64 . - # DockerHub Login (3) + # DockerHub Login (2) - name: Docker login uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - # Docker Hub push (4) + # Docker Hub push (3) - name: Docker Hub push run: docker push ${{ secrets.DOCKER_USERNAME }}/sponus-docker - # AWS EC2 Server Connect & Docker command execution (8) + # AWS EC2 Server Connect & Docker command execution - name: Deploy uses: appleboy/ssh-action@master with: host: ${{ secrets.HOST }} # EC2 instance public DNS username: ec2-user key: ${{ secrets.PRIVATE_KEY }} # pem key - script: | - sudo docker stop sponus-docker - sudo docker rm sponus-docker - sudo docker rmi ${{ secrets.DOCKER_USERNAME }}/sponus-docker - sudo docker pull ${{ secrets.DOCKER_USERNAME }}/sponus-docker - - sudo docker stop my-redis - sudo docker rm my-redis - sudo docker rmi redis - - sudo docker pull redis - sudo docker network create my-network - sudo docker run --name my-redis --network my-network -d redis - sudo docker run -it -d -p 8080:8080 --name sponus-docker -e TZ=Asia/Seoul --network my-network ${{ secrets.DOCKER_USERNAME }}/sponus-docker + script: | + sudo docker stop sponus-docker + sudo docker rm sponus-docker + sudo docker rmi ${{ secrets.DOCKER_USERNAME }}/sponus-docker + sudo docker pull ${{ secrets.DOCKER_USERNAME }}/sponus-docker + + sudo docker stop my-redis + sudo docker rm my-redis + sudo docker rmi redis + + sudo docker pull redis + sudo docker network create my-network + sudo docker run --name my-redis --network my-network -d redis + sudo docker run -it -d -p 8080:8080 --name sponus-docker -e TZ=Asia/Seoul --network my-network ${{ secrets.DOCKER_USERNAME }}/sponus-docker diff --git a/Dockerfile b/Dockerfile index 0bab6fc6..79232681 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,4 @@ FROM openjdk:17-jdk -ARG JAR_FILE=build/libs/*.jar +ARG JAR_FILE=./build/libs/*.jar COPY ${JAR_FILE} app.jar -COPY src/main/resources/static /app/static -ENTRYPOINT ["java", "-Dspring.profiles.active=docker", "-jar", "app.jar"] +ENTRYPOINT ["java", "-Dspring.profiles.active=docker", "-jar", "/app.jar"] diff --git a/build.gradle b/build.gradle index 43be9348..732df747 100644 --- a/build.gradle +++ b/build.gradle @@ -59,3 +59,8 @@ dependencies { tasks.named('test') { useJUnitPlatform() } + +// enable plain.jar +jar{ + enabled=false +} diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml deleted file mode 100644 index 06a4e746..00000000 --- a/src/main/resources/application-local.yml +++ /dev/null @@ -1,28 +0,0 @@ -server: - port: 8080 - -spring: - datasource: - driver-class-name: org.postgresql.Driver - url: jdbc:postgresql://localhost:5432/test - username: root - password: root - - jpa: - database: postgresql - hibernate: - ddl-auto: update - open-in-view: false - show-sql: true - generate-ddl: true - - jwt: - secret: "dkqorhvmekgkwlaksdltlrksdpanjfajrdmausdksehlrpTwlckawk" - token: - access-expiration-time: 43200 - refresh-expiration-time: 604800 - - data: - redis: - host: localhost - port: 6379 diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml deleted file mode 100644 index fdb0434c..00000000 --- a/src/main/resources/application-prod.yml +++ /dev/null @@ -1,29 +0,0 @@ -server: - port: 8080 - -spring: - datasource: - driver-class-name: org.postgresql.Driver - url: ${uri} - username: ${username} - password: ${password} - - jpa: - database: postgresql - database-platform: org.hibernate.dialect.PostgreSQLDialect - hibernate: - ddl-auto: update # 첫 배포 이후 validate 으둜 μˆ˜μ • - open-in-view: false - show-sql: true - generate-ddl: true - - jwt: - secret: ${jwt-secret} - token: - access-expiration-time: ${jwt-access-expiration-time} - refresh-expiration-time: ${jwt-refresh-expiration-time} - - data: - redis: - host: ${redis-host-post} - port: 6379 diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index d74c444c..06a4e746 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,3 +1,28 @@ +server: + port: 8080 + spring: - profiles: - active: local + datasource: + driver-class-name: org.postgresql.Driver + url: jdbc:postgresql://localhost:5432/test + username: root + password: root + + jpa: + database: postgresql + hibernate: + ddl-auto: update + open-in-view: false + show-sql: true + generate-ddl: true + + jwt: + secret: "dkqorhvmekgkwlaksdltlrksdpanjfajrdmausdksehlrpTwlckawk" + token: + access-expiration-time: 43200 + refresh-expiration-time: 604800 + + data: + redis: + host: localhost + port: 6379