1- # # github repository actions 페이지에 나타날 이름
2- # name: CD to dev using github actions
3- #
4- # # event trigger
5- # # develop 브랜치에 pull_request가 닫혔을 때 실행
6- # on:
7- # pull_request:
8- # types: [ closed ]
9- # branches: [ "develop" ]
10- #
11- # permissions:
12- # contents: read
13- #
14- # jobs:
15- # DEV-CD:
16- # if: github.event.pull_request.merged == true
17- # runs-on: ubuntu-latest
18- # steps:
19- # - name: Download build artifacts
20- # uses: actions/download-artifact@v4
21- # with:
22- # name: build-artifacts
23- # github-token: ${{ secrets.GH_TOKEN }}
24- #
25- # ## docker build & push to production
26- # - name: Docker build & push to prod
27- # run: |
28- # docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
29- # docker build -t ${{ secrets.DOCKER_REPO }} .
30- # docker push ${{ secrets.DOCKER_REPO }}
31- #
32- # ## deploy to dev
33- # - name: Deploy to prod
34- # uses: appleboy/ssh-action@master
35- # id: deploy
36- # with:
37- # host: ${{ secrets.DEV_HOST }}
38- # username: ${{ secrets.DEV_HOST_USERNAME }}
39- # key: ${{ secrets.DEV_HOST_KEY }}
40- # port: ${{ secrets.DEV_HOST_PORT }}
41- # script: |
42- # docker rm -f taskflow
43- # docker image rm ${{ secrets.DOCKER_REPO }} -f
44- # docker run --name taskflow --network host -d -p 8080:8080 ${{ secrets.DOCKER_REPO }} --restart on-failure
1+ # github repository actions 페이지에 나타날 이름
2+ name : CD to dev using github actions
3+
4+ # event trigger
5+ # develop 브랜치에 pull_request가 닫혔을 때 실행
6+ on :
7+ pull_request :
8+ types : [ closed ]
9+ branches : [ "develop" ]
10+
11+ permissions :
12+ contents : read
13+
14+ jobs :
15+ DEV-CD :
16+ if : github.event.pull_request.merged == true
17+ runs-on : ubuntu-latest
18+ steps :
19+ - uses : actions/checkout@v3
20+ - name : ' Set up jdk'
21+ uses : actions/setup-java@v3
22+ with :
23+ java-version : ' 17'
24+ distribution : ' temurin' # https://github.com/actions/setup-java
25+
26+ - run : touch ./Dockerfile
27+ - run : echo "${{ secrets.DEV_DOCKERFILE }}" > ./Dockerfile
28+
29+ # gradle caching - 빌드 시간 향상
30+ - name : Gradle Caching
31+ uses : actions/cache@v4
32+ with :
33+ path : |
34+ ~/.gradle/caches
35+ ~/.gradle/wrapper
36+ key : ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
37+ restore-keys : |
38+ ${{ runner.os }}-gradle-
39+
40+ # # gradle build
41+ - name : Build with Gradle
42+ run : |
43+ chmod +x ./gradlew
44+ ./gradlew build -x test
45+
46+ # # docker build & push to production
47+ - name : Docker build & push to dev
48+ run : |
49+ docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
50+ docker build -t ${{ secrets.DOCKER_REPO }} .
51+ docker push ${{ secrets.DOCKER_REPO }}
52+
53+ # # deploy to dev
54+ - name : Deploy to prod
55+ uses : appleboy/ssh-action@master
56+ id : deploy
57+ with :
58+ host : ${{ secrets.DEV_HOST }}
59+ username : ${{ secrets.DEV_HOST_USERNAME }}
60+ key : ${{ secrets.DEV_HOST_KEY }}
61+ port : ${{ secrets.DEV_HOST_PORT }}
62+ script : |
63+ docker rm -f taskflow
64+ docker image rm ${{ secrets.DOCKER_REPO }} -f
65+ docker run --name taskflow --network host -d -p 8080:8080 ${{ secrets.DOCKER_REPO }} --restart on-failure
0 commit comments