ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Github-Actions] Github-Actions와 CI/CD 알아보기
    CICD 2024. 12. 4. 12:28

    Github-Actions와 CI/CD 알아보기

     

    CI/CD (Continuous  Integration Continuous Deployment)

    테스트->통합->배포의 과정을 자동화하는것

     

    왜 CI/CD를 써야할까

    서비스 운영시에 코드를 수정해야할일이 굉장히 많이 일어난다.(디버깅, 새로운 기능추가)
    그럴때마다 새로운 코드 배포시에 ec2에 접속해서 새로운 코드를 다운받고 재실행해야한다.
    이러한 과정은 매우 반복적이고 번거로운일이기 때문에 자동화하고자하는 목적.


    CI/CD의 과정

    개발-커밋-빌드-테스트-배포(테스트 성공시)

     


    CI/CD를 구축시 사용되는 툴

    • Github Actions
    • Jenkins
    • Circle CI
    • Travis CI 

     

     

    현업에서는 Jenkins를 활용하는가?

    현업에서는 Github Actions 뿐만아니라 Jenkins도 많이 쓴다.
    둘중 하나만 써도 CI/CD를 완전히 구축할 수 있다.

     

    Github Actions를 사용한 이유:

     

    Jenkins의 단점

    별도의 서버에 구축을해야한다.
    따라서 서버이용이 추가로 발생한다.

    반면 Github Actions는 서버 구축 없이 기능을 사용할 수 있어서 서버비용이 들지 않고 세팅하는 번거로움이 들지않는다.
    현업에서는 결국 둘다 많이쓴다.

     

     

    (참고)카카오엔터프라이즈가 깃허브액션을 사용하는이유:

    https://tech.kakao.com/posts/516

     

     

    Github Actions

    Github Actions는 로직(빌드,테스트,배포)을 실행시킬 수 있는 일종의 컴퓨터이다.

     

     


    Github Actions의 CI/CD 과정

    1. 코드 작성후 커밋
    2. 깃허브에 푸시
    3. 푸시를 감지해서 Github Actions에 작성한 로직 실행
      3-1) 빌드
      3-2) 테스트
      3-3) 배포
    4. 서버에서 배포된 최신코드로 서버를 재실행



    CI/CD적용하기

    프로젝트 폴더 생성

     -> .github/workflows/deploy.yml

     

    폴더의 이름이 틀리면 실행안된다.

     

     

     

     

    Github-Actions 문법

    // workflow
    name: Github Actions 실행시키기  
    
    // event: 실행되는 시점
    // main 브랜치에 푸시되면 아래 워크플로우실행
    on:
      push:
        branches:
          - main
    
    // 하나의 워크플로우는 1개이상의 job으로 구성된다.
    // 여러 job은 기본 적으로 병렬적으로 수행된다.
    jobs:
    
      // job을 식별하기위한 id
      My-Deploy-Job:
        // ubuntu 환경 / 최신버전
        runs-on: ubuntu-latest
    
        // step: 특정작업을 수행하는 가장 작은단위
        // job은 여러 step들로 구성되어있다.
        steps:
          - name: Hello World 찍기2
            run: echo "Hello World"
    
          - name: 여러 명령어문장작성하기
          	// 여러 명령어실행하기위해서 |를 쓴다
            run: | 
              echo "Good"
              echo "Morning"
    
          - name: 깃허브 액션 자체에 저장되어있는 변수 사용해보기
          	// 깃허브 커밋 해시값과 레포지토리(유저/레포지토리) 출력해보기
            run: |
              echo $GITHUB_SHA
              echo $GITHUB_REPOSITORY
    
          - name: 노출이 되면 안되는 값
          	// 레포지토리-setting-secrets 에서 환경변수 설정가능
            run: |
              echo ${{ secrets.MY_NAME}}
              echo ${{ secrets.MY_HOBBY}}


    *추가기능은 깃허브 액션 공식문서 참고하기

     

    Github Actions의 장단점


    장점

    1. git pull을 활용해서 변경된 부분만 코드를 업데이트하기때문에 CI/CD속도가 빠르다.
    (대부분의 CI/CD 방식들은 전체프로젝트를 갈아끼우는 방식으로 사용한다)

     

    2. CI/CD툴로 Github Actions만 사용하기 때문에 인프라 구조가 복잡하지 않고 간단하다

     

    단점

    1. 빌드 작업을 EC2에서 직접 진행하기때문에 운영중인 서버의 성능에 영향을 미칠 수 있다.


    2. 깃허브 계정정보가 EC2에 저장되기때문에 개인 프로젝트 또는 믿을 만한 사람들과 진행하는 토이 프로젝트에서만 사용해야한다.

    (보안이슈)

     

     

    Github Action를 언제사용하는게 좋을까?

    개인 프로젝트에서 CI/CD를 심플하고 빠르게 적용시키고 싶을때 사용하는게 적절해보인다

Designed by Tistory.