-
CI/CD 정리 3편 - Github Actions 를 통해 CD 실습해보기백엔드 공부 2024. 1. 30. 09:00
바로 CD 를 작성해보자!
ci랑 cd를 같이 작성하는 사람들도 있는데, 우린 분리해서 작성했다.
CD 작성 전 , 필요한 것
- Docker 회원 가입 및 설치
- Aws 회원 가입 및 ec2 서버 열기
- ec2 서버에서 Docker 설치
cd 파일은 저 파이프라인 동작 과정을 적는 것이다.(db부분 제외)
팀프로젝트에선 main - develop - feature branch로 나눠서 작업을 했다.
feature에서 분업 후,
develop 에서 데이터를 합쳤기 때문에
CI가 일어나는 부분은 feature - develop 였다.
CD (배포하는 과정)는 develop -> main으로 push할 때만 작동하도록 작성했다.
name: Java CD with Gradle in smRt store on: workflow_dispatch: push: branches: [ "main" ] permissions: contents: read jobs: build-and-push-docker: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' # push 하기 위해 로그인 - name: Docker Hub 로그인 uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_ID }} password: ${{ secrets.DOCKER_PASSWORD }} #도커 빌드 & 이미지 push - name: Docker build & Push run: | docker build -f Dockerfile -t ${{ secrets.DOCKER_ID }}/smrt_store . docker push ${{ secrets.DOCKER_ID }}/smrt_store #docker 파일을 ec2 서버에 배포(pull) - name: Deploy to Prod uses: appleboy/ssh-action@master id: deploy-prod with: host: ${{ secrets.EC2_HOST }} username: ubuntu key: ${{ secrets.EC2_PEM_KEY }} port: 22 script: | if [ ! -z "$(docker ps -q)" ]; then docker stop $(docker ps -q) fi if [ ! -z "$(docker ps -aq)" ]; then docker rm $(docker ps -aq) fi docker login -u ${{ secrets.DOCKER_ID }} -p ${{ secrets.DOCKER_PASSWORD }} docker pull ${{ secrets.DOCKER_ID }}/smrt_store docker run -d \ --log-driver=awslogs \ --log-opt awslogs-region=ap-northeast-2 \ --log-opt awslogs-group=web \ --log-opt awslogs-stream=log \ --name smrt_store \ -p 8080:8080 \ -e TZ=Asia/Seoul \ ${{ secrets.DOCKER_ID }}/smrt_store docker pull redis docker run -d \ --name smrt-redis \ -p 6379:6379 \ redis docker system prune -f
Reference'백엔드 공부' 카테고리의 다른 글
CI/CD 정리 2편 - Github Actions 를 통해 CI 실습해보기 (1) 2024.01.29 CI/CD 정리 1편 - CI/CD의 필요성(이론) (0) 2024.01.28