Skip to content

Commit

Permalink
Merge pull request #44 from BaeJunH0/feat/#37-cicd
Browse files Browse the repository at this point in the history
fix : 내부 디렉토리 인식을 못하는 문제 해결
  • Loading branch information
BaeJunH0 authored Nov 30, 2024
2 parents f7be1b6 + 90bc30b commit 434b02c
Showing 1 changed file with 35 additions and 27 deletions.
62 changes: 35 additions & 27 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@ name: Deploy on Merge
on:
push:
branches:
- main # main 브랜치에 push될 때 실행
- main
pull_request:
branches:
- main

permissions:
contents: read
Expand All @@ -13,39 +16,44 @@ jobs:
runs-on: ubuntu-latest

steps:
# 1. 저장소 클론
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'

# 지정한 저장소(현재 REPO)에서 코드를 워크플로우 환경으로 가져오도록 하는 github action
- name: Checkout repository
uses: actions/checkout@v3

# 2. Docker 로그인 (Docker Hub 또는 Private Registry)
- name: Log in to Docker Hub
uses: docker/login-action@v2
# open jdk 17 버전 환경을 세팅
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
username: ${{ secrets.DOCKER_USERNAME }} # GitHub Secrets에 설정
password: ${{ secrets.DOCKER_PASSWORD }} # GitHub Secrets에 설정
java-version: '17'
distribution: 'adopt'

# 3. Docker 이미지 빌드 및 푸시
- name: Build and push Docker image
# gradle을 통해 소스를 빌드.
- name: Build with Gradle
run: |
docker build -t baejunh0/myapp:latest .
docker push baejunh0/myapp:latest
chmod +x ./gradlew
./gradlew clean build -x test
# 4. 서버에 배포 스크립트 실행 (SSH 사용)
- name: Deploy to Server
# dockerfile을 통해 이미지를 빌드하고, 이를 docker repo로 push 합니다.
# 이 때 사용되는 ${{ secrets.DOCKER_REPO }}/directors-dev 가 위에서 만든 도커 repository 입니다.
- name: Docker build & push to docker repo
run: |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker build -f Dockerfile -t ${{ secrets.DOCKER_REPO }}/directors-dev .
docker push ${{ secrets.DOCKER_REPO }}/directors-dev
# appleboy/ssh-action@master 액션을 사용하여 지정한 서버에 ssh로 접속하고, script를 실행합니다.
# script의 내용은 도커의 기존 프로세스들을 제거하고, docker repo로부터 방금 위에서 push한 내용을 pull 받아 실행하는 것입니다.
# 실행 시, docker-compose를 사용합니다.
- name: Deploy to server
uses: appleboy/ssh-action@master
id: deploy
with:
host: ${{ secrets.SERVER_HOST }} # 서버 IP
username: ${{ secrets.SERVER_USER }} # SSH 사용자
key: ${{ secrets.SERVER_SSH_KEY }} # SSH 개인 키 (GitHub Secrets에 설정)
port: 22
host: ${{ secrets.SERVER_HOST }}
username: ubuntu
key: ${{ secrets.SERVER_SSH_KEY }}
envs: GITHUB_SHA
script: |
docker pull baejunh0/myapp:latest
docker stop myapp || true
docker rm myapp || true
docker run -d --name myapp -p 80:80 baejunh0/myapp:latest
sudo docker rm -f $(docker ps -qa)
sudo docker pull ${{ secrets.DOCKER_REPO }}/directors-dev
docker-compose up -d
docker image prune -f

0 comments on commit 434b02c

Please sign in to comment.