diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml new file mode 100644 index 0000000..5c8e5d3 --- /dev/null +++ b/.github/workflows/gradle.yml @@ -0,0 +1,55 @@ +name: Java CI/CD with Gradle + +on: + push: + branches: [ "main" ] + +permissions: + contents: read + +jobs: + build-docker-image: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + # 1. Java 17 세팅 + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + + # 2. Spring Boot 애플리케이션 빌드 + - name: Build with Gradle + uses: gradle/gradle-build-action@v2 + with: + arguments: clean bootJar + + # 3. Docker 이미지 빌드 + - name: docker image build + run: docker buildx build --platform=linux/arm64 -t ${{ secrets.DOCKERHUB_USERNAME }}/attachit:latest . + + # 4. Dockerhub 로그인 + - name: docker login + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + # 5. Dockerhub push + - name: docker hub push + run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/attachit:latest + + - name: Connect to WAS & Execute Application + uses: appleboy/ssh-action@v0.1.6 + with: + host: ${{ secrets.WAS_HOST }} + username: ${{ secrets.WAS_USERNAME }} + password: ${{ secrets.SSH_PASSWORD }} + port: ${{ secrets.WAS_SSH_PORT }} + script: | + cd ~/attachit + docker-compose down + docker-compose pull + docker-compose up -d diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d7b379c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM openjdk:17-oracle + +WORKDIR /app + +ARG JAR_FILE=build/libs/*.jar + +COPY ${JAR_FILE} app.jar + +EXPOSE 8082 + +CMD ["java", "-jar", "app.jar"] \ No newline at end of file