diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml new file mode 100644 index 0000000..bb812f5 --- /dev/null +++ b/.github/workflows/cicd.yml @@ -0,0 +1,60 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. +# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle + +name: Java CI with Gradle + +on: + push: + branches: [ "dev" ] + pull_request: + branches: [ "dev" ] + +permissions: + contents: read + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: ๐Ÿน Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + + - name: ๐Ÿน application.yml ํŒŒ์ผ์„ ์ƒ์„ฑ ํ•ฉ๋‹ˆ๋‹ค. + run: | + mkdir ./src/main/resources + touch ./src/main/resources/application.yml + echo "${{ secrets.APPLICATION }}" > ./src/main/resources/application.yml # github actions์—์„œ ์„ค์ •ํ•œ ๊ฐ’์„ application.yml ํŒŒ์ผ์— ์“ฐ๊ธฐ + + - name: ๐Ÿน gradle build๋ฅผ ์œ„ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. + run: chmod +x gradlew + + - name: ๐Ÿน gradle build ์ค‘์ž…๋‹ˆ๋‹ค. + run: ./gradlew build -x test + + - name: ๐Ÿน docker image build ํ›„ docker hub์— pushํ•ฉ๋‹ˆ๋‹ค. + run: | + docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} + docker build -t ${{ secrets.DOCKER_REPOSITORY }}/${{ secrets.DOCKER_IMAGE }} . + docker push ${{ secrets.DOCKER_REPOSITORY }}/${{ secrets.DOCKER_IMAGE }} + + - name: ๐Ÿน docker hub์—์„œ pull ํ›„ deployํ•ฉ๋‹ˆ๋‹ค. + uses: appleboy/ssh-action@master + with: + username: ubuntu + host: ${{ secrets.AWS_HOST }} + key: ${{ secrets.AWS_KEY }} + script: | + sudo docker pull ${{ secrets.DOCKER_REPOSITORY }}/${{ secrets.DOCKER_IMAGE }} + chmod 777 ./deploy.sh + ./deploy.sh + docker image prune -f