test2 #4
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: CI/CD | |
| # main, deploy 브랜치에 push하면 워크플로우 실행 | |
| on: | |
| push: | |
| branches: [ "main" ] | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Set up JDK 17 | |
| uses: actions/setup-java@v3 | |
| with: | |
| java-version: 17 | |
| distribution: 'zulu' | |
| # repository secrets에 올린 application.yml을 빌드 시 생성 | |
| - name: Make application.yml | |
| run: | | |
| mkdir ./src/main/resources | |
| cd ./src/main/resources | |
| touch ./application.yml | |
| echo "${{ secrets.APPLICATION }}" > ./application.yml | |
| - 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- | |
| - name: Build with Gradle | |
| run: | | |
| chmod +x ./gradlew | |
| ./gradlew build -x test | |
| # ID, PW를 이용해 Docker hub에 로그인 | |
| - name: Login to DockerHub | |
| uses: docker/login-action@v1 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| # Docker 이미지 빌드 후 푸시 | |
| - name: Docker build & push | |
| uses: docker/build-push-action@v2 | |
| with: | |
| # 빌드 컨텍스트 지정: 지정한 디렉토리 안에 Dockerfile이 있어야 함 | |
| context: . | |
| # 빌드에 사용할 Dockerfile의 경로 지정 | |
| file: ./Dockerfile | |
| platforms: linux/arm64/v8 | |
| # 빌드 후 Docker 레지스트리에 푸시할지 여부 지정 | |
| push: true | |
| # 이미지 태그 지정 | |
| tags: ${{ secrets.DOCKER_REPO }}:latest | |
| # SSH를 사용하여 EC2에 명령을 전달 | |
| - name: Deploy to Server | |
| uses: appleboy/ssh-action@master | |
| with: | |
| # 원격 서버의 호스트 주소 지정 | |
| host: ${{ secrets.HOST }} | |
| username: ${{ secrets.USERNAME }} | |
| key: ${{ secrets.KEY }} | |
| envs: GITHUB_SHA | |
| # 아래 명령들을 실행 | |
| script: | | |
| sudo docker rm -f $(sudo docker ps -qa) | |
| sudo docker pull ${{ secrets.DOCKER_REPO }}:latest | |
| sudo docker run -d -p 8080:8080 ${{ secrets.DOCKER_REPO }}:latest | |
| sudo docker image prune -f |