자동화된 프로세스가 정의되어있는 파일로, .github/workflow
에 저장되어있음
YAML
로 작성된 스크립트└── project/
├── client/
│ └── src
└── server
client/src
와 server
내부의 .js
및 .jsx
파일들에 대해서 eslint
를 체크client
에서 build가 성공적으로 수행되는지 확인하기Update
: 기본 브랜치를 branch 설정에 들어가서 develop으로 설정해야 한다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
따라서 우리가 작성한 코드를 다운로드 해야 하는데, 이걸 모두 yml 코드로 작성하는건 번거롭다
따라서 github에서 제공하는, workflow를 묶어서 제공하는 기능이 있는데, 이게 actions고, checkout@v3으로 제공한다
만약 위 코드를 아래와 같이 작성한다면 ?
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>
Details를 눌러 들어가면