지난글들 통합+수정+추가 버전
👉https://millersplanet.tistory.com/98
👉https://millersplanet.tistory.com/114
🔎 참고: git hooks
https://git-scm.com/book/ko/v2/Git%EB%A7%9E%EC%B6%A4-Git-Hooks
Git - Git Hooks
여기서 한가지 알아둘 점은 저장소를 Clone 해도 클라이언트 훅은 복사되지 않는다는 점이다. 만든 정책이 반드시 적용되도록 하려면 서버 훅을 이용해야만 하며 작성은 정책 구현하기 부분을 참
git-scm.com
prepare-commit-msg : 커밋 메시지 컨벤션
.git/hooks 폴더
#!/bin/bash
MESSAGE=$(cat $1)
COMMITFORMAT="(Feat|Fix|Docs|Style|Refactor|Design|Comment|Rename|Remove|Teest|!HOTFIX|!BREAKING CHANGE): (.*)"
if ! [[ "$MESSAGE" =~ $COMMITFORMAT ]]; then
echo ""
echo " Commit Message 포맷을 아래 예시와 같이 지켜주세요."
echo " 사용가능한 commit의 Prefix는 아래와 같습니다."
echo ""
echo "======================= 반드시 콜론(:) 을 붙여야 합니다. ========================="
echo ""
echo " Feat: 새로운 기능을 추가"
echo " Fix: 버그 수정"
echo " Design: CSS 등 사용자 UI 디자인 변경"
echo " !BREAKING CHANGE: 커다란 API 변경의 경우"
echo " !HOTFIX: 급하게 치명적인 버그를 고쳐야하는 경우"
echo " Style: 코드 포맷 변경, 세미 콜론 누락, 코드 수정이 없는 경우"
echo " Refactor: 코드 리팩토링"
echo " Comment: 필요한 주석 추가 및 변경"
echo " Docs: 문서 수정"
echo " Test: 빌드 업무 수정, 패키지 매니저 수정, 패키지 관리자 구성 등 업데이트, Production Code 변경 없음"
echo " Rename: 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우"
echo " Remove: 파일을 삭제하는 작업만 수행한 경우"
echo ""
echo "=================================================================================="
echo ""
echo -e " 아래 EXAMPLE과 같이 첫째 줄에 Prefix와 함께 요약을 남기고 한 줄 개행 후 상세 내용을 작성해주세요. \n Merge Request 시 Overview에 자동으로 Title, Description 작성이 완료됩니다."
echo ""
echo "================================== E X A M P L E ================================="
echo ""
echo -e " git commit -m \"Feat: 기능 A 추가\n\n 1. 000파일 추가 \n 2. 2222파일추가\n 3. 00 관련 비즈니스 로직 추가\""
echo ""
echo "=================================================================================="
echo ""
exit 1
fi
➕ 더 알아보니 commitlint 쓰는게 나을 것 같다.
https://theodorusclarence.com/shorts/husky-commitlint-prettier
Husky, Commitlint, and Prettier Configuration | theodorusclarence.com
Configuration to check commit message, and run prettier pre-commit
theodorusclarence.com
lint-staged (husky) : Lint 관련
husky, lint-staged 설치
npm install --save-dev husky
npm install --save-dev lint-staged
.package.json 수정
{
...
"scripts": {
...
},
"lint-staged": {
"src/**/*.{ts,tsx}": [
"eslint --ext .tsx --ext .ts ./src --fix"
],
"./src/**": [
"prettier --write ."
]
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
...
}
post-merge (husky) : git pull 후 npm install 자동화
.husky 폴더
#!/bin/zsh
. "$(dirname "$0")/_/husky.sh"
IFS=$'\n'
# regex supports mono-repos with a package.json at root-level and at package-level
PACKAGE_LOCK_REGEX="(^packages\/.*\/package-lock\.json)|(^package-lock\.json)"
# extract all paths to package-lock.json files
PACKAGES=("$(git diff --name-only HEAD@{1} HEAD | grep -E "$PACKAGE_LOCK_REGEX")")
if [[ ${PACKAGES[@]} ]]; then
for package in $PACKAGES; do
echo "📦 $package was changed. Running npm install to update your dependencies..."
DIR=$(dirname package)
cd "$DIR" && npm install
done
fi
🚨 bash, zsh 등과 관련해 문제가 생길 경우
스택오버플로우: https://stackoverflow.com/questions/63731706/bash-git-hook-runs-correctly-on-linux-but-fails-on-mac
Write you script like that with the sh shebang and check it with https://www.shellcheck.net/
✔️ webhooks로 디스코드 연결하기로 했는데, 채널 설정이 필요해서 매니저님께 문의드리기로 함.
간단하니까 걱정 안해도 될듯.
✔️ github actions는 배포 자동화에는 확실히 필요할 것 같고, 수업 들으면서 더 고민해보는 걸로.
💜 Jira 연동
일단 Jira > 앱 > 더 많은 앱 살펴보기 > Github for Jira > Get Started 해서 Repository 지정
Jira에서 이슈 생성 👉 브랜치 생성
브랜치 생성된 것 확인, checkout해서 작업
commit 시 Jira 이슈의 티켓 번호를 커밋 메시지 앞에 작성해주면 연동된다.
🚨 브랜치 이름이 티켓 번호여야 한다.
pnpm add husky jira-prepare-commit-msg -D
pnpm husky install
jira-prepare-commit-msg는 일종의 플러그인
.husky/prepare-commit-msg
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
pnpm jira-prepare-commit-msg $1
package.json
{
"jira-prepare-commit-msg": {
"messagePattern": "[$J] $M",
"allowEmptyCommitMessage": false,
"ignoredBranchesPattern": "^(master|main|dev|develop|development|release)$"
}
}
이렇게 연동해두면 Jira에서 커밋 추적이 가능하다.
✔️ key, 프로젝트 로고, URL 설정 가능
✔️ 알림은 이메일이 기본으로 설정되어 있는데 슬랙이나 디스코드로도 설정 가능
Jira 넘 좋다... 사랑에 빠짐...
➕ 그냥 갑자기... 일기...
이 업계 사람들이랑 사고방식이 다른 것 같아서 좀 당황했는데
사고방식이라기보단 공부방식이 다른 것 같다
어릴때부터 답지 보면서 풀지 말라는 말 제일 싫어했던 사람임을
요즘 다시 체감하고 있다...ㅋㅋㅋㅋㅋ
보면서 천번 하면 시험때 풀린다고~
➕ 그냥 참고용 gitmoji
gitmoji
:truck: Move or rename resources (e.g.: files, paths, routes).
gitmoji.dev
'개발' 카테고리의 다른 글
github actions (0) | 2024.07.17 |
---|---|
vercel 배포 시 주의사항 (vite) (0) | 2024.07.16 |
yarn berry, zero install (0) | 2024.07.16 |
New friends (0) | 2024.07.16 |
Zustand (0) | 2024.07.15 |