-
[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 과정- 코드 작성후 커밋
- 깃허브에 푸시
- 푸시를 감지해서 Github Actions에 작성한 로직 실행
3-1) 빌드
3-2) 테스트
3-3) 배포 - 서버에서 배포된 최신코드로 서버를 재실행
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를 심플하고 빠르게 적용시키고 싶을때 사용하는게 적절해보인다
'CICD' 카테고리의 다른 글
[CI/CD] 컨테이너 환경에서 CI/CD 구축하기(+code deploy 적용) (0) 2024.12.14 [CI/CD] 컨테이너 환경에서 CI/CD 구축하기 (0) 2024.12.13 [CI/CD] github-actions를 이용한 CI/CD구축-3 (+AWS code deploy) (0) 2024.12.04 [CI/CD] Github-Actions로 CI/CD 구축하기-2 개선 (0) 2024.12.04 [CI/CD] Github-Actions로 CI/CD 구축하기-1 (0) 2024.12.04