|
1 |
| -name: CI/CD |
2 |
| - |
3 |
| -on: |
4 |
| - push: |
5 |
| - branches: [ "main" ] |
6 |
| - |
7 |
| -permissions: |
8 |
| - contents: read |
9 |
| - |
10 |
| -jobs: |
11 |
| - build: |
12 |
| - runs-on: ubuntu-latest |
13 |
| - env: |
14 |
| - working-directory: ./ |
15 |
| - APPLICATION: ${{ secrets.APPLICATION }} |
16 |
| - GOOGLE_APPLICATION_CREDENTIALS: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} |
17 |
| - APPLE_KEY: ${{ secrets.APPLE_KEY }} |
18 |
| - |
19 |
| - steps: |
20 |
| - # 소스 코드 체크아웃 |
21 |
| - - uses: actions/checkout@v2 |
22 |
| - |
23 |
| - # JDK 11 설정 |
24 |
| - - name: Set up JDK 11 |
25 |
| - uses: actions/setup-java@v2 |
26 |
| - with: |
27 |
| - java-version: '11' |
28 |
| - distribution: 'adopt' |
29 |
| - |
30 |
| - # Gradle 패키지 캐시 |
31 |
| - - name: Cache Gradle packages |
32 |
| - uses: actions/cache@v2 |
33 |
| - with: |
34 |
| - path: | |
35 |
| - ~/.gradle/caches |
36 |
| - ~/.gradle/wrapper |
37 |
| - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} |
38 |
| - restore-keys: | |
39 |
| - ${{ runner.os }}-gradle- |
40 |
| -
|
41 |
| - # 설정 파일 생성 |
42 |
| - - run: | |
43 |
| - mkdir ./src/main/resources |
44 |
| - cd ./src/main/resources |
45 |
| - touch ./application.yml |
46 |
| - echo "${{env.APPLICATION}}" > ./application.yml |
47 |
| - touch ./firebase-key.json |
48 |
| - echo "${{env.GOOGLE_APPLICATION_CREDENTIALS}}" | base64 --decode > ./firebase-key.json |
49 |
| - touch ./apple-key.p8 |
50 |
| - echo "${{env.APPLE_KEY}}" > ./apple-key.p8 |
51 |
| - |
52 |
| - # 설정 파일을 작업공간에 저장 |
53 |
| - - uses: actions/upload-artifact@v2 |
54 |
| - with: |
55 |
| - name: application.yml |
56 |
| - path: ./src/main/resources/application.yml |
57 |
| - |
58 |
| - - uses: actions/upload-artifact@v2 |
59 |
| - with: |
60 |
| - name: firebase-key.json |
61 |
| - path: ./src/main/resources/firebase-key.json |
62 |
| - |
63 |
| - - uses: actions/upload-artifact@v2 |
64 |
| - with: |
65 |
| - name: apple-key.p8 |
66 |
| - path: ./src/main/resources/apple-key.p8 |
67 |
| - |
68 |
| - # gradlew 권한 설정 |
69 |
| - - name: Grant execute permission for gradlew |
70 |
| - run: chmod +x gradlew |
71 |
| - working-directory: ${{ env.working-directory }} |
72 |
| - |
73 |
| - # Gradle로 빌드 |
74 |
| - - name: Build with Gradle |
75 |
| - run: ./gradlew build |
76 |
| - working-directory: ${{ env.working-directory }} |
77 |
| - |
78 |
| - # Gradle 캐시 정리 |
79 |
| - - name: Cleanup Gradle Cache |
80 |
| - if: ${{ always() }} |
81 |
| - run: | |
82 |
| - rm -f ~/.gradle/caches/modules-2/modules-2.lock |
83 |
| - rm -f ~/.gradle/caches/modules-2/gc.properties |
84 |
| -
|
85 |
| - # Docker 이미지 빌드 및 푸시 |
86 |
| - - name: Docker build |
87 |
| - run: | |
88 |
| - docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} |
89 |
| - docker build --no-cache -t ${{ secrets.DOCKER_USERNAME }}/moing:green . |
90 |
| - docker build --no-cache -t ${{ secrets.DOCKER_USERNAME }}/moing:blue . |
91 |
| - docker push ${{ secrets.DOCKER_USERNAME }}/moing:green |
92 |
| - docker push ${{ secrets.DOCKER_USERNAME }}/moing:blue |
93 |
| -
|
94 |
| - # EC2로 deploy.sh 전송 |
95 |
| - - name: Deploy deploy.sh to EC2 |
96 |
| - uses: appleboy/scp-action@master |
97 |
| - with: |
98 |
| - host: ${{ secrets.EC2_SERVER_HOST }} |
99 |
| - username: ec2-user |
100 |
| - key: ${{ secrets.PRIVATE_KEY }} |
101 |
| - source: "./deploy.sh" |
102 |
| - target: "/home/ec2-user/" |
103 |
| - |
104 |
| - # 배포 스크립트 실행 |
105 |
| - - name: Deploy on EC2 |
106 |
| - uses: appleboy/ssh-action@master |
107 |
| - with: |
108 |
| - host: ${{ secrets.EC2_SERVER_HOST }} |
109 |
| - username: ec2-user |
110 |
| - key: ${{ secrets.PRIVATE_KEY }} |
111 |
| - envs: GITHUB_SHA |
112 |
| - script: | |
113 |
| - chmod +x /home/ec2-user/deploy.sh |
114 |
| - /home/ec2-user/deploy.sh |
| 1 | +#name: CI/CD |
| 2 | +# |
| 3 | +#on: |
| 4 | +# push: |
| 5 | +# branches: [ "main" ] |
| 6 | +# |
| 7 | +#permissions: |
| 8 | +# contents: read |
| 9 | +# |
| 10 | +#jobs: |
| 11 | +# build: |
| 12 | +# runs-on: ubuntu-latest |
| 13 | +# env: |
| 14 | +# working-directory: ./ |
| 15 | +# APPLICATION: ${{ secrets.APPLICATION }} |
| 16 | +# GOOGLE_APPLICATION_CREDENTIALS: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} |
| 17 | +# APPLE_KEY: ${{ secrets.APPLE_KEY }} |
| 18 | +# |
| 19 | +# steps: |
| 20 | +# # 소스 코드 체크아웃 |
| 21 | +# - uses: actions/checkout@v2 |
| 22 | +# |
| 23 | +# # JDK 11 설정 |
| 24 | +# - name: Set up JDK 11 |
| 25 | +# uses: actions/setup-java@v2 |
| 26 | +# with: |
| 27 | +# java-version: '11' |
| 28 | +# distribution: 'adopt' |
| 29 | +# |
| 30 | +# # Gradle 패키지 캐시 |
| 31 | +# - name: Cache Gradle packages |
| 32 | +# uses: actions/cache@v2 |
| 33 | +# with: |
| 34 | +# path: | |
| 35 | +# ~/.gradle/caches |
| 36 | +# ~/.gradle/wrapper |
| 37 | +# key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} |
| 38 | +# restore-keys: | |
| 39 | +# ${{ runner.os }}-gradle- |
| 40 | +# |
| 41 | +# # 설정 파일 생성 |
| 42 | +# - run: | |
| 43 | +# mkdir ./src/main/resources |
| 44 | +# cd ./src/main/resources |
| 45 | +# touch ./application.yml |
| 46 | +# echo "${{env.APPLICATION}}" > ./application.yml |
| 47 | +# touch ./firebase-key.json |
| 48 | +# echo "${{env.GOOGLE_APPLICATION_CREDENTIALS}}" | base64 --decode > ./firebase-key.json |
| 49 | +# touch ./apple-key.p8 |
| 50 | +# echo "${{env.APPLE_KEY}}" > ./apple-key.p8 |
| 51 | +# |
| 52 | +# # 설정 파일을 작업공간에 저장 |
| 53 | +# - uses: actions/upload-artifact@v2 |
| 54 | +# with: |
| 55 | +# name: application.yml |
| 56 | +# path: ./src/main/resources/application.yml |
| 57 | +# |
| 58 | +# - uses: actions/upload-artifact@v2 |
| 59 | +# with: |
| 60 | +# name: firebase-key.json |
| 61 | +# path: ./src/main/resources/firebase-key.json |
| 62 | +# |
| 63 | +# - uses: actions/upload-artifact@v2 |
| 64 | +# with: |
| 65 | +# name: apple-key.p8 |
| 66 | +# path: ./src/main/resources/apple-key.p8 |
| 67 | +# |
| 68 | +# # gradlew 권한 설정 |
| 69 | +# - name: Grant execute permission for gradlew |
| 70 | +# run: chmod +x gradlew |
| 71 | +# working-directory: ${{ env.working-directory }} |
| 72 | +# |
| 73 | +# # Gradle로 빌드 |
| 74 | +# - name: Build with Gradle |
| 75 | +# run: ./gradlew build |
| 76 | +# working-directory: ${{ env.working-directory }} |
| 77 | +# |
| 78 | +# # Gradle 캐시 정리 |
| 79 | +# - name: Cleanup Gradle Cache |
| 80 | +# if: ${{ always() }} |
| 81 | +# run: | |
| 82 | +# rm -f ~/.gradle/caches/modules-2/modules-2.lock |
| 83 | +# rm -f ~/.gradle/caches/modules-2/gc.properties |
| 84 | +# |
| 85 | +# # Docker 이미지 빌드 및 푸시 |
| 86 | +# - name: Docker build |
| 87 | +# run: | |
| 88 | +# docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} |
| 89 | +# docker build --no-cache -t ${{ secrets.DOCKER_USERNAME }}/moing:green . |
| 90 | +# docker build --no-cache -t ${{ secrets.DOCKER_USERNAME }}/moing:blue . |
| 91 | +# docker push ${{ secrets.DOCKER_USERNAME }}/moing:green |
| 92 | +# docker push ${{ secrets.DOCKER_USERNAME }}/moing:blue |
| 93 | +# |
| 94 | +# # EC2로 deploy.sh 전송 |
| 95 | +# - name: Deploy deploy.sh to EC2 |
| 96 | +# uses: appleboy/scp-action@master |
| 97 | +# with: |
| 98 | +# host: ${{ secrets.EC2_SERVER_HOST }} |
| 99 | +# username: ec2-user |
| 100 | +# key: ${{ secrets.PRIVATE_KEY }} |
| 101 | +# source: "./deploy.sh" |
| 102 | +# target: "/home/ec2-user/" |
| 103 | +# |
| 104 | +# # 배포 스크립트 실행 |
| 105 | +# - name: Deploy on EC2 |
| 106 | +# uses: appleboy/ssh-action@master |
| 107 | +# with: |
| 108 | +# host: ${{ secrets.EC2_SERVER_HOST }} |
| 109 | +# username: ec2-user |
| 110 | +# key: ${{ secrets.PRIVATE_KEY }} |
| 111 | +# envs: GITHUB_SHA |
| 112 | +# script: | |
| 113 | +# chmod +x /home/ec2-user/deploy.sh |
| 114 | +# /home/ec2-user/deploy.sh |
0 commit comments