diff --git a/.github/ISSUE_TEMPLATE/issue-template.md b/.github/ISSUE_TEMPLATE/issue-template.md new file mode 100644 index 0000000..8093e39 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/issue-template.md @@ -0,0 +1,22 @@ +--- +name: issue template +about: 이슈 템플릿 +title: '' +labels: '' +assignees: '' + +--- + +# 📝 Preview + + + + + +# ✅ Todo +- [ ] +- [ ] +- [ ] + + +# 📌 Remark diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..9c21c33 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,19 @@ +``` +- commit message가 적절한지 확인해주세요. +- 마지막으로 Coding Convention을 준수했는지 확인해주세요. +- 적절한 branch로 요청했는지 확인해주세요. +- Assignees, Label을 붙여주세요. +- 가능한 이슈를 Link 해주세요. +- PR이 승인된 경우 해당 브랜치는 삭제 부탁드립니다. +``` + +## 관련 이슈 +closed # + +## 변경 사항 및 이유 +해당 pr에서 작업한 내역을 적어주세요. + +## PR Point +변경사항 및 주의 사항 (모듈 설치 등)을 적어주세요. + +## 📸 ScreenShot diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml new file mode 100644 index 0000000..085bae6 --- /dev/null +++ b/.github/workflows/gradle.yml @@ -0,0 +1,72 @@ +name: FairyTale Dev CI/CD + +on: + push: + branches: [ "dev" ] + pull_request: + branches: [ "dev" ] + workflow_dispatch: + + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-latest + # JDK 설정 + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + + # gradle build 시간 향상 + - name: Gradle Caching + uses: actions/cache@v3 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + + # application.yml 파일 생성 + - name: make application.yml + run: | + mkdir -p src/main/resources + echo "$APPLICATION" > src/main/resources/application.properties + env: + APPLICATION: ${{ secrets.APPLICATION }} + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build with Gradle + run: ./gradlew build -x test + + - name: Docker build + run: | + docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} + docker build -t app . + docker tag app ${{ secrets.DOCKER_USERNAME }}/fairytale:latest + docker push ${{ secrets.DOCKER_USERNAME }}/fairytale:latest + + - name: Deploy to dev + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.HOST }} + username: ubuntu + key: ${{ secrets.PRIVATE_KEY }} + script: | + sudo docker pull ${{ secrets.DOCKER_USERNAME }}/fairytale:latest + sudo docker stop $(docker ps -a -q) + sudo docker run -d --log-driver=syslog -p 8080:8080 -e SPRING_PROFILES_ACTIVE= ${{ secrets.DOCKER_USERNAME }}/fairytale:latest + sudo docker rm $(docker ps --filter 'status=exited' -a -q) + sudo docker image prune -a -f + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4986f7d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,3 @@ +FROM openjdk:17 +COPY ./build/libs/TBD-0.0.1-SNAPSHOT.jar fairytale.jar +ENTRYPOINT ["java", "-jar", "fairytale.jar"] diff --git a/build.gradle b/build.gradle index 190ca83..0148f54 100644 --- a/build.gradle +++ b/build.gradle @@ -11,6 +11,13 @@ java { sourceCompatibility = '17' } +// build 이름 변경 +jar{ + archiveBaseName = 'fairytale' + version = '0.0.1-SNAPSHOT' + enabled = false +} + configurations { compileOnly { extendsFrom annotationProcessor