[#36] Feat: 북마크 상세정보 조회 #40
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Java CI/CD with Gradle and DockerHub | |
| on: | |
| push: | |
| branches: [ "main" ] | |
| pull_request: | |
| branches: [ "main" ] | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| - name: Grant permission to gradlew | |
| run: chmod +x ./gradlew | |
| - name: Setup Gradle with caching | |
| uses: gradle/actions/setup-gradle@v4 | |
| - name: Copy application.properties from GitHub Secrets | |
| run: | | |
| mkdir -p ./src/main/resources | |
| echo "${{ secrets.APPLICATION_PROPERTIES }}" > ./src/main/resources/application.properties | |
| - name: Run Tests | |
| run: ./gradlew test | |
| build-and-deploy: | |
| runs-on: ubuntu-latest | |
| needs: test | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '17' | |
| distribution: 'temurin' | |
| - name: Grant permission to gradlew | |
| run: chmod +x ./gradlew | |
| - name: Setup Gradle with caching | |
| uses: gradle/actions/setup-gradle@v4 | |
| - name: Copy application.properties from GitHub Secrets | |
| run: | | |
| mkdir -p ./src/main/resources | |
| echo "${{ secrets.APPLICATION_PROPERTIES }}" > ./src/main/resources/application.properties | |
| - name: Build Project with Gradle | |
| run: ./gradlew clean build | |
| - name: Build Docker image | |
| run: docker build -t ${{ secrets.DOCKER_HUB_USERNAME }}/myapp:latest . | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKER_HUB_USERNAME }} | |
| password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} | |
| - name: Push Docker image to Docker Hub | |
| run: docker push ${{ secrets.DOCKER_HUB_USERNAME }}/myapp:latest | |
| - name: Deploy on EC2 | |
| env: | |
| PRIVATE_KEY: ${{ secrets.EC2_SSH_KEY }} | |
| HOST: ${{ secrets.EC2_HOST }} | |
| USER: ${{ secrets.EC2_USER }} | |
| DOCKER_HUB_USERNAME: ${{ secrets.DOCKER_HUB_USERNAME }} | |
| run: | | |
| echo "$PRIVATE_KEY" > private_key.pem | |
| chmod 600 private_key.pem | |
| ssh -i private_key.pem -o StrictHostKeyChecking=no $USER@$HOST << EOF | |
| # 로그로 사용자 이름 출력 | |
| echo "Docker Hub username: $DOCKER_HUB_USERNAME" | |
| # Docker 이미지 풀 | |
| docker pull "$DOCKER_HUB_USERNAME/myapp:latest" | |
| # 기존 컨테이너 종료 및 삭제 | |
| docker stop myapp || true | |
| docker rm myapp || true | |
| # 새로운 컨테이너 실행 | |
| docker run -d --name myapp -p 8080:8080 "$DOCKER_HUB_USERNAME/myapp:latest" | |
| EOF |