현제의 현재이야기

[docker] GitHub actions CI CD 본문

Infra

[docker] GitHub actions CI CD

현재의 현제 2023. 5. 13. 14:57

1. main.yml 파일 생성

Repository의 Actions 탭에서 set up a workflow yourself 버튼을 눌러 yml 파일을 작성

main.yml

name: spring server ci cd

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: 저장소 Checkout
        uses: actions/checkout@v3

      - name: 자바 11 설정
        uses: actions/setup-java@v3
        with:
          java-version: '11'
          distribution: 'temurin'
      - name: 빌드
        run: ./gradlew build

      - name: 도커 이미지 빌드
        run: docker build -t ${{ secrets.DOCKER_IMG }} .

      - name: Docker Hub 로그인
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}

      - name: Docker Hub push
        run: docker push ${{ secrets.DOCKER_IMG }}

      - name: 배포하기
        uses: appleboy/ssh-action@v0.1.6
        with:
          host: ${{ secrets.WAS_HOST }}
          username: ec2-user
          key: ${{ secrets.KEY }}
          script: |
            docker stop $(docker ps -a -q) 
            docker rm $(docker ps -a -q) 
            docker pull ${{ secrets.DOCKER_IMG }}
            docker run -d -p 8080:8080 ${{ secrets.DOCKER_IMG }}

2. 해당하는 secrets들 등록

  • 트러블 슈팅: ssh.ParsePrivateKey: ssh: no key found -> .pem 파일을 그냥 전체 복붙 https://github.com/appleboy/ssh-action/issues/6
  • DOCKER 비밀번호를 넣기 보다는 access 토큰을 허브에서 발급 받아서 사용
  • WAS_HOST는 그냥 ec2.~~ 하는 주소

3. settings -> actions -> runners 새로운 러너 생성

  • ssh 열어주고 하나씩 설치
  • 마지막 configure에서 nohup ./run.sh &로 백그라운드 실행

4. 이제 main 브랜치에 push 해본다

-편안- 이제 플젝 시작할 때, 미리 CI CD 구축해두고 개발하면 더욱 쉬울 것 같다. 도커 최고

 

| 해야할 것들

  1. 서브 모듈로 rds 연결 (키 숨기기 용 private 생성)
 

[Git] 깃 서브모듈(Submodule)

Submodule Git Submodule은 하나의 저장소(부모)에 다른 저장소(자식)를 두고 관리하기 위한 도구로, 하나의 프로젝트에서 다른 프로젝트를 함께 사용해야 하는 경우에 많이 사용한다. 나는 프로젝트는

yoo-dev.tistory.com

2. 도커 이미지 삭제가 안되고 있는 듯? 확인해야겠다

 

| 래퍼런스

 

GitHub Action을 이용한 CI/CD

전체적인 구성 로컬 PC에서 개발을 한 후 Github에 Push를 합니다. Github Repository 특정 branch에 push가 되면 Github Action이 동작을 시작합니다. Github Actions가 Github Container Registry에 소스를 받은 후 Docker 이

lusida-coding.tistory.com

 

 

'Infra' 카테고리의 다른 글

[DevOps] Docker compose 환경변수  (1) 2023.05.22
[DevOps] nginx를 이용한 무중단 배포  (1) 2023.05.19
[docker] GitHub submodule  (0) 2023.05.16
[docker] 도커 ec2 배포 및 rds 연동  (0) 2023.05.12
[docker] 도커 맛보기  (0) 2023.05.12
Comments