diff --git a/.github/workflows/build-dev.yml b/.github/workflows/build-dev.yml new file mode 100644 index 00000000..607cac0d --- /dev/null +++ b/.github/workflows/build-dev.yml @@ -0,0 +1,48 @@ +name: Build Job (Dev) + +on: + push: + branches: [ dev ] + pull_request: + branches: [ dev ] +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout source code + uses: actions/checkout@v3 + + - name: Set up JDK 21 + uses: actions/setup-java@v3 + with: + java-version: '21' + distribution: 'temurin' + + - name: Set up Gradle cache + uses: actions/cache@v3 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + gradle-${{ runner.os }} + + - name: Grant execute permission for gradlew + run: chmod +x ./gradlew + + - name: Build with Gradle + run: ./gradlew clean build + + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build Docker image + run: docker build -t ${{ secrets.DOCKER_IMAGE_NAME }} . + + - name: Push Docker image + run: docker push ${{ secrets.DOCKER_IMAGE_NAME }} diff --git a/.github/workflows/deploy-dev.yml b/.github/workflows/deploy-dev.yml new file mode 100644 index 00000000..8474528e --- /dev/null +++ b/.github/workflows/deploy-dev.yml @@ -0,0 +1,29 @@ +name: Deploy to EC2 + +on: + workflow_run: + workflows: ["Build Job (Dev)"] + types: + - completed + +jobs: + deploy: + if: ${{ github.event.workflow_run.conclusion == 'success' }} + runs-on: ubuntu-latest + + steps: + - name: Deploy on EC2 via SSH + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.EC2_HOST }} + username: ${{ secrets.EC2_USER }} + key: ${{ secrets.EC2_KEY }} + script: | + CURRENT_TZ=$(timedatectl | grep "Time zone" | awk '{print $3}') + if [ "$CURRENT_TZ" != "Asia/Seoul" ]; then + sudo timedatectl set-timezone Asia/Seoul + fi + docker pull ${{ secrets.DOCKER_IMAGE_NAME }} + docker stop bookmark-app || true + docker rm -f bookmark-app || true + docker run -d -p 8080:8080 --env-file ~/app/.env --name bookmark-app ${{ secrets.DOCKER_IMAGE_NAME }} diff --git a/.gitignore b/.gitignore index c2065bc2..c6d01eda 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,7 @@ out/ ### VS Code ### .vscode/ +.env +Caddyfile +localhost.pem +localhost-key.pem diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..5d639de7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,3 @@ +FROM openjdk:21 +COPY build/libs/bookmark-0.0.1-SNAPSHOT.jar app.jar +ENTRYPOINT ["java", "-jar", "/app.jar"] diff --git a/gradlew b/gradlew old mode 100644 new mode 100755