용어

CI (Continuous Integration)

CD (Continuous Deployment)

Github Actions

Workflow

자동화된 프로세스가 정의되어있는 파일로, .github/workflow 에 저장되어있음

Runner

Jobs

Learning by Doing

CI - 목표

└── project/
    ├── client/
    │   └── src
    └── server

준비물

상황

Untitled

Workflow 작성


Untitled


Untitled


Untitled

Untitled


Workflow 작성 코드

name : build + eslint

# 이벤트를 발생시킬 트리거
on:
	pull_request: # pull request, push 등등 가능
			branches: # branches로 지정할 수 있음
				- develop 
jobs: # 실행할 작업들! 병렬적으로 실행된다는걸 의식하자
	check:
		name: check #이름을 적어줘야 branch protection 설정에서 찾아줄 수 있다 
		runs-on: ubuntu-latest
		steps:
      - uses: actions/checkout@v3 
      - name: Install client dependencies # client 폴더에서 npm 설치
        run : |
            cd client
            npm install 
      - name: Install server dependencies # server 폴더에서 npm 설치
        run : |
            cd server
            npm install
            
      - name: Check eslint # eslint 돌리기
        run : |
            ./client/node_modules/.bin/eslint client/src --ext .js,.jsx
            ./server/node_modules/.bin/eslint server --ext .js,.jsx
            
      - name: Run build check # 빌드 돌리기
        run: |
            cd client
            npm run build

uses: actions/checkout@v3 ?

주의점 ! Jobs는 병렬

만약 위 코드를 아래와 같이 작성한다면 ?

name : build + eslint

# 이벤트를 발생시킬 트리거
on:
	pull_request: # pull request, push 등등 가능
			branches: # branches로 지정할 수 있음
				- develop 
jobs: # 실행할 작업들! 병렬적으로 실행된다는걸 의식하자
	check1:
		runs-on: ubuntu-latest
		steps:
      - uses: actions/checkout@v3 
			- run: |
					cd client
					npm install 
	check2:
		runs-on: ubuntu-latest
		steps:
			- run: |
          cd server
          npm install
	check3:
		runs-on: ubuntu-latest
		steps:
			- run: |
          ./client/node_modules/.bin/eslint client/src --ext .js,.jsx
          ./client/node_modules/.bin/eslint server --ext .js,.jsx

	check4:
		runs-on: ubuntu-latest
		steps:
			- run: |
          cd client
          npm run build

<aside> 🚫 돌아가지 않는다.

정확히는 두번째 check2에서부터 오류가 나올 것인데

이유는 jobs는 서로 독립된 인스턴스에서 실행되기 때문이다

check1에서 actions/checkout@v3를 통해서 코드를 내려받아도, check2에서는 깨끗한 인스턴스이기 때문에 server폴더같은건 없기 때문이다 https://www.daleseo.com/github-actions-jobs/

</aside>

Branch Protection 설정

Untitled


Untitled


Untitled


Pull Request 올리고 확인하기

Untitled


Untitled

Details를 눌러 들어가면


Untitled


Update

Untitled


우리팀의 활용방식 !

Untitled

CD는 다음 시간에