diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..5172429 Binary files /dev/null and b/.DS_Store differ diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..dafd1ec --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,60 @@ +name: Deploy To EC2 + +on: + push: + branches: + - main + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Github Repository 파일 불러오기 + uses: actions/checkout@v4 + + - name: JDK 17버전 설치 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 17 + + - name: application.yml 파일 생성 + run: echo "${{ secrets.APPLICATION_PROPERTIES }}" > ./src/main/resources/application.yml + + - name: 테스트 및 빌드 + run: ./gradlew clean build + + - name: AWS Resource에 접근할 수 있게 AWS credentials 설정 + uses: aws-actions/configure-aws-credential@v4 + with: + aws-region: ap-northeast-2 + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + + - name: ECR에 로그인 + id: login-ecr + uses: aws-actions/amazon-ecr-login@v2 + + - name: Docker 이미지 생성 + run: docker build -t locavel-server . + + - name: Docker 이미지 생성 + run: docker tag locavel-server ${{ steps.login-ecr.outputs.registry }} + + - name: ECR에 Docker 이미지 Push 하기 + run: docker push ${{ steps.login-ecr.outputs.registry }}/locavel-server:latest + + + + - name: SSH로 EC2에 접속하기 + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.EC2_HOST }} + username: ${{ secrets.EC2_USERNAME }} + key: ${{ secrets.EC2_PRIVATE_KEY }} + script_stop: true + script: | + docker stop locavel-server || true + docker rm locavel-server || true + docker pull ${{ steps.login-ecr.outputs.registry }}/locavel-server:latest + docker run -d --name locavel-server -p 8080:8080 ${{ steps.login-ecr.outputs.registry }}/locavel-server:latest \ No newline at end of file diff --git a/.gitignore b/.gitignore index 6859854..13ae9c2 100644 --- a/.gitignore +++ b/.gitignore @@ -36,4 +36,7 @@ out/ ### VS Code ### .vscode/ # YAML files -*.yml \ No newline at end of file +*.yml + +# CI/CD 관련 deploy.yml 파일 제외 +!.github/workflows/deploy.yml \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..76d7ea4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,4 @@ +FROM eclipse-temurin:17-jdk-alpine +COPY ./build/libs/*SNAPSHOT.jar project.jar +ENTRYPOINT ["java", "-jar", "project.jar"] + diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000..0787fb7 Binary files /dev/null and b/src/.DS_Store differ