가수면
깃허브 액션 (GitHub Actions) 설정 본문
https://docs.github.com/ko/actions/using-workflows/about-workflows
Next에서 Jest를 이용한 깃허브 액션 설정
1. 루트 경로에 .github/workflows 폴더 생성
2. 이름.yml 파일 생성
3. 워크 플로우 설정
// .github\workflows\main.yml
name: CI
on: [push, pull_request] // 워크플로우 트리거 이벤트 설정
jobs:
build-and-test:
runs-on: ubuntu-latest // ubuntu 최신 버전 환경을 가정하고 테스트
steps:
- name: Checkout code
uses: actions/checkout@v3 // GitHub 저장소의 코드를 해당 실행 환경에 체크아웃
- name: Setup Node.js
uses: actions/setup-node@v3 // 지정된 버전의 노드 설치
with:
node-version: "18"
- name: Install dependencies
run: npm ci
- name: Run Jest tests
run: npm run test // 실제 test 명령어
- name: Build the app
run: npm run build // 실제 build 명령어
on
만약 main 브랜치만 테스트하려면
on:
push:
branches:
- main
strategy
matrix - 여러 노드 버전에 대한 테스트 가능하게 해줌
strategy:
matrix:
node-version: [16.x, 18.x]
steps:
//...
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
uses
외부 액션을 사용하겠다는 것을 의미
jest로 깃허브 액션 테스트 시 주의사항
--watch를 붙이면 테스트가 무한히 로딩되므로 깃허브 액션 테스트 명령어를 별도로 생성하여 개발 환경에서 사용할 테스트 명령어와 깃허브 액션에서 사용할 테스트 명령어를 구분해둬야 한다.
ex)
// package.json
"test": "jest --watch",
"test:ci": "jest",
// .github\workflows\main.yml
- name: Run Jest tests
run: npm run test:ci // 실제 test 명령어
병합 설정
레포의 setting -> Branches -> add rule -> Branch name pattern(규칙 적용할 브랜치 이름. 와일드카드는 *) 입력 -> Require status checks to pass before merging 체크 -> Status checks that are required. 부분에 테스트 추가 (디폴트: build-and-test) -> 생성
자동 병합
레포의 setting -> General -> Pull Requests탭 -> Allow auto-merge 체크
이후 pr 시 아래처럼 오토 병합 버튼이 활성화됨
Organization 저장소에서 포크한 저장소로 자동 푸쉬 시키기
참고 자료
https://vanilla-van-6e4.notion.site/vercel-47312c7c2a9c492dbdabc40c47489cfa
1. 토큰 발급
https://github.com/settings/tokens
위 경로 (내 계정 setting -> Developer Settings -> Personal access tokens (classic))를 통해 토큰을 생성한다.(이 때 발급된 토큰번호는 다시 확인할 수 없으니 잘 메모)
Select scopes는 repo를 체크해주면 된다.
2. organization 저장소에 secrets 설정
organization에 있는 레포의 setting으로 가서 API_TOKEN_GITHUB 등의 이름으로 방금 발급 받은 토큰을 secrets에 설정해준다.
3. organization 저장소의 최상위 경로에 build.sh 파일 생성
build.sh 파일 안에 아래 코드를 작성한다.
#!/bin/sh
cd ../
mkdir output
cp -R ./원격 레포 이름/* ./output
cp -R ./output ./원격 레포 이름/
4. 워크 플로우를 작성한다.
// .github/workflows/git-push.yml
name: git push into another repo to deploy
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
container: pandoc/latex
steps:
- uses: actions/checkout@v3
- name: Install mustache (to update the date)
run: apk add ruby && gem install mustache
- name: creates output
run: sh ./build.sh
- name: Pushes to another repository
id: push_directory
uses: cpina/github-action-push-to-another-repository@main
env:
API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }}
with:
source-directory: "output"
destination-github-username: "깃허브 아이디"
destination-repository-name: "포크한 레포 이름"
user-email: "깃허브 이메일 주소"
commit-message: ${{ github.event.commits[0].message }}
target-branch: main
- name: Test get variable exported by push-to-another-repository
run: echo $DESTINATION_CLONED_DIRECTORY
'웹 개발 > Git' 카테고리의 다른 글
깃 대소문자 구분시키기 (0) | 2023.04.25 |
---|---|
github.io로 배포 (0) | 2023.04.05 |
레포지토리 복사하기 (0) | 2022.12.16 |
Git 명령어 (0) | 2022.10.26 |