-
Notifications
You must be signed in to change notification settings - Fork 0
68 lines (49 loc) · 2.5 KB
/
gradle.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
name: deploy-app
on:
# push:
# branches: [ main ] # 메인브랜치에 푸쉬가 되면
pull_request:
branches: [ main ] # 메인브랜치에 PR 되면 - 서버 재가동을 줄이기 위해서 주석처리
jobs:
deploy: # deploy라는 작업을 할것이고
runs-on: ubuntu-20.04
steps: # 순서대로 실행하겠습니다
- name: 저장소 Checkout
uses: actions/checkout@v3 # 레포지토리 한번 체크할게요
- name: yml 생성
run: touch application.yml # 비어있는 yml 파일 하나 만들게요
- name: secrets에 있는 APPLICATION 내용을 yml 파일에 덮어쓰기
run: echo "${{secrets.APPLICATION}}" > ./src/main/resources/application.yml # APPLICATION에 있는 내용 저 경로에 복붙좀 할게요
- name: secrets에 있는 ENV 내용을 .env 파일에 덮어쓰기
run: echo "${{secrets.ENV}}" > .env # APPLICATION에 있는 내용 저 경로에 복붙좀 할게요
- name: yml 파일 다운받을 수 있게 업로드
uses: actions/[email protected]
with:
name: application.yml
path: ./src/main/resources/
- name: gradlew 실행권한 주기
run: chmod +x ./gradlew
- name: 스프링부트 애플리케이션 빌드
run: ./gradlew bootJar -Pprofile=prod
- name: 도커 이미지 빌드
run: |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker build -t ${{ secrets.DOCKER_USERNAME }}/pick-app .
- name: Docker Hub 로그인
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Docker Hub 퍼블리시
run: docker push ${{ secrets.DOCKER_USERNAME }}/pick-app:latest
- name: WAS 인스턴스 접속 및 애플리케이션 실행
uses: appleboy/[email protected]
with:
host: ${{ secrets.EC2_SERVER_HOST }} # 탄력적 IP
username: ${{ secrets.SERVER_USERNAME }} # ex) ec2-linux, ubuntu
key: ${{ secrets.EC2_KEY }}
script: |
sudo docker rm -f $(docker ps -qa)
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/pick-app
docker-compose up -d
docker image prune -f