-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FE] 모노레포 환경 설정에 따른 workflow 변경 #535
Conversation
Test Results 23 files 23 suites 3s ⏱️ Results for commit 78db03e. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생했어요~~~ 덕분에 행동 디자인을 편하게 배포할 수 있을 것 같아요. (돌려봐야하겠지만)
방학 중에 고생 많았어요 :)
description: 'New Version(semver)' | ||
required: true | ||
default: 'patch' | ||
type: choice | ||
options: | ||
- patch | ||
- minor | ||
- major |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
client release로 행동디자인과는 다른 부분인 것 같은데 시멘틱 버저닝을 관리하기 위해서 patch, minor, major를 추가한 것일까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
두가지를 한번에 client
라고 묶어놨어요. 두개가 모두 같은 버전으로 반영될거에요~
GIT_AUTHOR_NAME: ${{ github.actor }} | ||
GIT_AUTHOR_EMAIL: ${{ github.actor }}@users.noreply.github.com | ||
- name: Set PACKAGE_VERSION | ||
run: echo "PACKAGE_VERSION=$(cat lerna.json | jq -r .version)" >> $GITHUB_ENV |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 깃헙 env는 개인마다 따로 가지고 있어야하나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아뇽 여기선 workflow dispatch를 한 사람의 정보가 자동으로 들어갑니다~!
uses: actions/github-script@v6 | ||
with: | ||
script: | | ||
const result = await exec.getExecOutput(`gh api "/repos/{owner}/{repo}/releases/generate-notes" -f tag_name="v${process.env.PACKAGE_VERSION}" --jq .body`, [], { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
여기도 PACKAGE_VERSION이 있는데 어떤 값을 넣어두면 되는지 공유부탁드려요~
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
값을 넣는게 아니라, 위의 STEP에서 lerna.json 을 통해 가져온 값이 process.env로 저장되는 것입니다~
- name: Set PACKAGE_VERSION
run: echo "PACKAGE_VERSION=$(cat lerna.json | jq -r .version)" >> $GITHUB_ENV
``
- name: Checkout | ||
uses: actions/checkout@v3 | ||
- name: Setup Node | ||
uses: actions/setup-node@v3 | ||
with: | ||
node-version: '20.15.1' | ||
registry-url: 'https://registry.npmjs.org' | ||
- name: Git Identity | ||
run: | | ||
git config --global user.name 'github-actions[bot]' | ||
git config --global user.email 'github-actions[bot]@users.noreply.github.com' | ||
git remote set-url origin https://x-access-token:${GITHUB_TOKEN}@github.com/$GITHUB_REPOSITORY | ||
env: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 코드로 인해서 행동 디자인이 자동 배포 되는걸까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 부분을 말씀하시는 거라면, 이 부분은 단지 github 정보를 넣어주는 프로세스입니다!
# === `echo "${ registry-url }/:_authToken=${ NODE_AUTH_TOKEN }" > .npmrc` | ||
# NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} # [EXAMPLE] | ||
# for publishing packages to npm | ||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
여기는 github repo에 시크릿으로 설정해주신거죠?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
맞습니다~!
모노레포 적용 재 논의가 필요하여 close 합니다 |
issue
구현 사항
1. lerna를 이용한 CI 수정
client/package.json
의 스크립트는 아래와 같습니다.npx lerna run ~~
명령어를 실행시키면packages
내부의 모든 패키지에서npm run ~~
을 실행시킵니다.npx lerna run lint
를 예로 들면 client에서도, design에서도 모두npm run lint
를 실행시킵니다.--scope=package-name
을 사용하면 범위를 지정할 수 있습니다.lerna를 이용하여
/client
경로에서도 내부의haengdong-client
,haengdong-design
의 테스트 및 빌드를 한번에 진행할 수 있습니다.따라서, workflow도
client
와design
모두 일괄적으로 테스트 할 수 있도록 변경하였습니다.2. lerna를 이용한 디자인시스템 릴리즈 PR 생성 CI
fe-dev branch에 버전을 신경쓰지 않고 계속 merge한 뒤 main 브랜치로 release할 때, 해당 workflow를 실행하면 release에 대한 pr이 생성됩니다.
이는 main에 merge되어야 적용되므로 별도로 main으로 향하는 PR을 만들겠습니다.
위 workflow를 이용해 release PR을 만들었습니다. 해당 PR을 확인하고, main에 merge하게 된다면 아래와 같은 workflow가 작동합니다.