Github Actions + CI/CD

haruceki·2024년 8월 6일
0

Github Actions를 이용할 경우 Github에 내장되어 있는 CI/CD라 github와 통합이 쉽고, CI/CD 서버가 내장 되어 CI/CD서버를 따로 구축할 필요 없으며, 일정 수준까지 가격이 무료이다.

Github Actions 동작 방법은 repository의 .github/workflows 디렉토리에 필요한 Actions 파일들을 yaml 형식으로 작성하면 된다. 아래는 예시 CI와 CD를 위한 각각의 예시 파일이다.

Github Actions를 활용한 CI를 위한 설정 파일 예시

# Actions 이름 github 페이지에서 볼 수 있다.
name: 'CI'

# Event Trigger 특정 액션 (Push, Pull_Request)등이 명시한 Branch에서 일어나면 동작을 수행한다. => 동작 조건을 의미
on: 
    push: #push 했을때
        # 배열로 여러 브랜치를 넣을 수 있다.
        branches: [ develop, feature/* ] #이 하위에 있는 모든 브랜치를 의미함
    # github pull request 생성시
    pull_request: #pull request일어났을때 
        branches: 
            - develop # -를 쓴 여러 줄로 여러 브랜치를 명시하는 것도 가능

# 실제 어떤 작업을 실행할지에 대한 명시
jobs:
  ci: #이름. 제일 첫 줄의 name과 반드시 동일할 필요는 없다 
  # 스크립트 실행 환경 (OS)
  # 배열로 선언시 개수 만큼 반복해서 실행한다. ( 예제 : 1번 실행)
    runs-on: [ ubuntu-latest ] # 어떤 버전에서 동작할 것인지 - 우분투 최신버전에서 

    # 실제 실행 스크립트
    steps: 
      # uses는 github actions에서 제공하는 플러그인을 실행.(git checkout 실행)
      - name: checkout # 1단계 체크아웃 : 코드를 깃헙서버로 가져오는 단계 
        uses: actions/checkout@v4

      # with은 plugin 파라미터 입니다. (java 11버전 셋업)
      - name: java setup # 2단계는 자바설정 - setup-java@v2을 통해서 함 
        uses: actions/setup-java@v2
        with: #어떤 배포파일을 사용할건지, 어떤 버전으로 할지를 정함 
          distribution: 'adopt' # See 'Supported distributions' for available options
          java-version: '17'

      # run은 사용자 지정 스크립트 실행
      - name: run unittest # 3단계 그래들 테스트 - 쉘스크립트 사용 
        run: |
          ./gradlew clean test

Github Actions를 활용한 CD를 위한 설정 파일 예시

name: 'CD'

on: 
    push:
        branches: [ main ] #main 브랜치에 push가 일어났을 때
jobs:
  cd:
    runs-on: [ ubuntu-latest ] #우분투 최신 버전에서 실행 

    steps: 
      - name: checkout
        uses: actions/checkout@v4

      - name: java setup
        uses: actions/setup-java@v3
        with:
          distribution: 'adopt' # See 'Supported distributions' for available options
          java-version: '17'

      - name: run unittest
        run: |
          ./gradlew clean test
		  
		  #아래 과정은 상황마다 달라질 수 있으므로 이후에 자세히 알아볼 것임 
      - name: deploy to heroku #heroku라는 데로 배포한다.
	      uses: akhileshns/heroku-deploy@v3.12.12
		    with:
          heroku_api_key: ${{secrets.HEROKU_API_KEY}}
          heroku_app_name: "sampleapp-github-actions" #Must be unique in Heroku
          heroku_email: "nbcdocker@proton.me"

Cloudtype

GitHub Actions 의 workflow를 사용해서 소스 코드의 변경 사항을 저장소에 반영 시 자동으로 클라우드타입에 배포한 서비스가 업데이트 되도록 파이프라인을 구성할 수 있다

클라우드타입의 API key를 발급하고, 깃헙에서 github personal token을 발급받아서, 해당 정보를 설정파일에 넣으면 배포가 가능하게 된다.

참고한 사이트 : https://docs.cloudtype.io/guide/cicd/github-actions

profile
희망도 절망도 없이 매일 코딩을 한다.

0개의 댓글