[CI/CD] Github Actions : yml 파일 예시

hzn·2022년 12월 8일
0

Deploy

목록 보기
3/10
post-thumbnail

Github Actions

Github Actions 공식문서 : https://docs.github.com/en/actions

  • Github가 공식적으로 제공하는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼
  • 레포지토리에서 특정 이벤트를 트리거로 GitHub 작업 워크플로(Workflow)를 구성할 수 있다.
  • 워크플로 : 하나 이상의 작업이 실행되는 자동화 프로세스로, 각 작업은 자체 가상 머신 또는 컨테이너 내부에서 실행된다.
  • 워크플로는 .yml (혹은 .yaml ) 파일에 의해 구성되며, 테스트, 배포 등 기능에 따라 여러개의 워크플로도 만들 수 있다.
  • 생성된 워크플로는 .github/workflows 디렉토리 이하에 위치한다.
  • 비공개 레포지토리의 경우 Github Actions가 작동할 때의 용량과 시간이 제한. 공개 레포지토리는 무료로 사용 가능

Github Action 예시

Github Action 설정돼 있는 예제 레포지토리를 클론해와서 Action 확인해보자!

💡 예제 레포지토리에서 직접 확인할 수는 없다.
(소유자가 아니면 Action 탭이 보이지 않는다)

  • 내가 소유한 레포지토리에서만 Action 탭을 볼 수 있음

1. 새로운 레포지토리 만들기

  • 예제 레포지토리 코드를 클론해 올 새로운 레포지토리 생성
  • public으로 만들어야 Github Action을 무료로 이용할 수 있다

2. 예제 레퍼런스 클론 - 내 레포지토리에 push

  • 원래는 코드 작성해서 프로젝트 완성시켜야 하지만...
  • 여기서는 예제 레퍼런스를 클론받아서 새 레포지토리를 원격 레포지토리로 등록(클론받은 레포를 원격 레포 주소에 등록)하고 코드를 push해서 프로젝트를 완성시킨 셈 치자 ㅎ
// 1. 예제 레퍼런스 클론 (나는 한 컴퓨터에 깃허브 계정 여러개라 유저 네임 꼭 붙여주기)
git clone git@github.com-Pikadev1771:codestates-seb/fe-sprint-my-agora-states-server-reference.git

// 2. 클론받은 디렉토리 이동
cd fe-sprint-my-agora-states-server-reference

// 3. 클론받은 (로컬) 레포지토리를 새로 만든 원격 리포지토리에 연결시키고, 앞으로 이 원격 레포지토리(의 주소)를 myRepo라고 부르겠음. (역시 유저 네임 붙여주기)
git remote add myRepo git@github.com-Pikadev1771:Pikadev1771/my-agora-states-practice.git

// 4. 로컬 레포지토리의 코드를 원격 레포지토리로 push
(myRepo라는 원격 레포지토리의 reference 브랜치로 push)
git push myRepo reference
  • 아래와 같이 코드가 모두 push가 된 모습을 확인할 수 있다.
  • 커밋 기록에 이런 주황색 원이 있는 것을 확인

3. Github Action 확인

  • Actions 탭으로 이동 - 등록된 workflow(여기서는 test1) 클릭

  • jobstest - Run npm test 등 모두 활성화(체크 표시) 돼있는지 확인

4. yml 파일 읽어보기

  • Github Action은 Github의 특정 이벤트에 맞게 다양한 작업을 시킬 수 있는 CI/CD 플랫폼.
    (예를 들어 push라는 이벤트가 일어나면 어떤 job을 할 지 설정할 수 있다)
  • EC2와 같은 하나의 가상 인스턴스를 실행시켜서 원하는 작업을 시킬 수 있다.
  • 실제로는 yml 파일 직접 작성해야 한다.. (여기서는 실습 레포에 이미 작성돼있는 것을 확인만 하는 것)

yml 파일 확인

./.github/workflows/pullRequest.yml

name: Bare Minimum Requirements

// 언제 job을 작동시킬지
on: [push, pull_request]

// 어떤 job을 할지
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Bare Minimum Requirements
        uses: actions/setup-node@v1
        with:
          node-version: '16'
      - run: npm install
      - run: npm test

0개의 댓글