Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#311 [feat] 개발 서버 cd 갱신 #312

Merged
merged 4 commits into from
Aug 14, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 52 additions & 82 deletions .github/workflows/dev-cd.yml
Original file line number Diff line number Diff line change
@@ -1,96 +1,66 @@
# 워크플로우의 이름 지정
name: ASAP-DEV-CD

# 해당 workflow가 언제 실행될 것인지에 대한 트리거를 지정
on:
push:
branches: [ "develop" ] # main branch로 push 될 때 실행됩니다.

env:
S3_BUCKET_NAME: asap-develop-bucket
branches: [ "develop" ]

jobs:
build:
name: Code deployment

# 실행 환경
runs-on: ubuntu-latest

steps:

# 1) 워크플로우 실행 전 기본적으로 체크아웃 필요
- name: checkout
uses: actions/checkout@v3

# 2) JDK 11버전 설치, 다른 JDK 버전을 사용하다면 수정
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'

# 3) 환경변수 파일 생성
- name: make application.properties 파일 생성
run: |
## create application.yml
cd ./src/main/resources
- name: checkout
uses: actions/checkout@v3

- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'

- name: make application.yml 파일 생성
run: |
## create application.yml
cd ./src/main/resources

# application.yml 파일 생성
touch ./application.yml

# GitHub-Actions 에서 설정한 값을 application.yml 파일에 쓰기
echo "${{ secrets.DOCKER_DEV_YAML }}" >> ./application.yml

# application.yml 파일 확인
cat ./application.yml
shell: bash

- name: Build with Gradle
run: |
chmod +x gradlew
./gradlew build -x test

- name: docker build 가능하도록 환경 설정
uses: docker/[email protected]

- name: docker hub에로그인
uses: docker/[email protected]
with:
username: ${{ secrets.DOCKERHUB_LOGIN_USERNAME }}
password: ${{ secrets.DOCKERHUB_LOGIN_ACCESSTOKEN }}

# application.yml 파일 생성
touch ./application.yml
- name: docker image 빌드 및 푸시
run: |
docker build --platform linux/amd64 -t ${{ secrets.DOCKERHUB_LOGIN_USERNAME }}/${{ secrets.DOCKERHUB_IMAGE_NAME }} .
docker tag ${{ secrets.DOCKERHUB_LOGIN_USERNAME }}/${{ secrets.DOCKERHUB_IMAGE_NAME }} ${{ secrets.DOCKERHUB_LOGIN_USERNAME }}/${{ secrets.DOCKERHUB_IMAGE_NAME }}:${{ secrets.DOCKERHUB_DEV_IMAGE_NAME }}
docker push ${{ secrets.DOCKERHUB_LOGIN_USERNAME }}/${{ secrets.DOCKERHUB_IMAGE_NAME }}:${{ secrets.DOCKERHUB_DEV_IMAGE_NAME }}

# GitHub-Actions 에서 설정한 값을 application.yml 파일에 쓰기
echo "${{ secrets.DEV_APPLICATION_YAML }}" >> ./application.yml

# application.yml 파일 확인
cat ./application.yml
shell: bash

# 이 워크플로우는 gradle build
- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Build with Gradle # 실제 application build 테스트 제외
run: ./gradlew build -x test

# # 디렉토리 생성
# - name: Make Directory
# run: mkdir -p deploy
#
# # Jar 파일 복사
# - name: Copy Jar
# run: cp ./build/libs/*.jar ./deploy
#
# # appspec.yml 파일 복사
# - name: Copy appspec.yml
# run: cp appspec.yml ./deploy
#
# # script files 복사
# - name: Copy script
# run: cp ./scripts/*.sh ./deploy
#
# - name: Make zip file
# run: zip -r ./asap_dev_server.zip ./deploy
# shell: bash
#
# - name: Configure AWS credentials
# uses: aws-actions/configure-aws-credentials@v1
# with:
# aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
# aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
# aws-region: ap-northeast-2
#
# - name: Upload to S3
# run: aws s3 cp --region ap-northeast-2 ./asap_dev_server.zip s3://$S3_BUCKET_NAME/

# # Deploy
# - name: Deploy
# env:
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }}
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_KEY }}
# run:
# aws deploy create-deployment
# --application-name asap-dev-codedeploy
# --deployment-group-name asap-dev-codedeploy-group
# --file-exists-behavior OVERWRITE
# --s3-location bucket=asap-develop-bucket,bundleType=zip,key=asap_dev_server.zip
# --region ap-northeast-2
- name: 도커 컨테이너 실행
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.DEV_SERVER_IP }}
username: ${{ secrets.DEV_SERVER_USER }}
key: ${{ secrets.DEV_SERVER_KEY }}
script: |
cd ~
sudo ./deploy.sh
Loading