Skip to content
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

feat/#39 changeset 세팅 및 npm 배포 CI/CD 설정 #67

Merged
merged 55 commits into from
Oct 9, 2024
Merged
Show file tree
Hide file tree
Changes from 33 commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
ddfecf8
chore: changeset 설치
ShinYoung-Kim Jul 31, 2024
d7aa1ae
chore: changelog 레포 설정 추가 및 access 변경
ShinYoung-Kim Jul 31, 2024
0f95fed
chore: publish 명령어 생성
ShinYoung-Kim Jul 31, 2024
da9b456
chore: changeset github action 생성
ShinYoung-Kim Jul 31, 2024
93ac761
feat: changeset 파일 생성
ShinYoung-Kim Jul 31, 2024
b637d29
chore/#25 husky, lint-staged 세팅 (#44)
gs0428 Aug 17, 2024
691dfaf
feat/#54 패키지 매니저 버전 강제하도록 설정 (#57)
ghdtjgus76 Aug 17, 2024
7306422
chore/#37 jest 설정 (#43)
minai621 Aug 20, 2024
b70cd26
feat/#12 Primitive UI codegen 세팅 (#42)
ghdtjgus76 Aug 20, 2024
803da60
chore: release action node 버전 변경
ShinYoung-Kim Aug 20, 2024
74cab14
chore/#38 playwright 테스트 설정 (#61)
minai621 Aug 26, 2024
11aea23
feat/#51 공통 prettier 설정 불러오도록 설정 변경 (#56)
ghdtjgus76 Aug 30, 2024
375c51e
chore/#46 D-day Labeler workflow 추가 (#66)
minai621 Aug 30, 2024
2dbdc44
fix/#47 빌드 버그 해결 (#64)
ShinYoung-Kim Sep 1, 2024
c669a48
chore/#65 jest.setup.ts 설정 (#72)
minai621 Sep 1, 2024
30ff7e8
chore: local github action test용 secret 파일 gitignore에 추가 (#68)
ShinYoung-Kim Sep 2, 2024
798ea46
feat/#48 Divider 컴포넌트 개발 (#73)
gs0428 Sep 4, 2024
11051d0
fix/#74 템플릿 수정 (#79)
gs0428 Sep 4, 2024
5af121c
docs/#75 컴포넌트 pr 템플릿 생성 (#80)
gs0428 Sep 4, 2024
ab93186
feat: yml 커밋 메시지 추가
ShinYoung-Kim Sep 12, 2024
e058602
chore: config ignore 추가
ShinYoung-Kim Sep 12, 2024
a5f9e1d
feat/#50 github action 워크플로우 최적화 (#90)
ghdtjgus76 Sep 12, 2024
8311f48
feat/#85 codegen에 e2e 테스트 코드 템플릿 생성 및 적용 (#92)
ghdtjgus76 Sep 13, 2024
b96c727
test/#84 Divider vrt 테스트 추가 (#91)
gs0428 Sep 15, 2024
56c2338
chore: changeset 설치
ShinYoung-Kim Sep 20, 2024
0282834
chore: changelog 레포 설정 추가 및 access 변경
ShinYoung-Kim Sep 20, 2024
87f7b2d
chore: publish 명령어 생성
ShinYoung-Kim Sep 20, 2024
f18ae6c
chore: changeset github action 생성
ShinYoung-Kim Sep 20, 2024
b4b9ab7
feat: changeset 파일 생성
ShinYoung-Kim Sep 20, 2024
0700110
chore: release action node 버전 변경
ShinYoung-Kim Sep 20, 2024
f697357
feat: yml 커밋 메시지 추가
ShinYoung-Kim Sep 20, 2024
e17fa1d
chore: config ignore 추가
ShinYoung-Kim Sep 20, 2024
62eb4d4
Merge branch 'feat/#39' of https://github.com/team-warrr/warrr-ui int…
ShinYoung-Kim Sep 20, 2024
db6f664
chore: action 파일 최적화 반영
ShinYoung-Kim Sep 20, 2024
138f606
chore: name 수정
ShinYoung-Kim Sep 20, 2024
ef18c76
chore/#93 husky 오류 해결 (#112)
ShinYoung-Kim Sep 25, 2024
e9a2112
chore: changeset 설치
ShinYoung-Kim Oct 9, 2024
1aa43c3
chore: changelog 레포 설정 추가 및 access 변경
ShinYoung-Kim Oct 9, 2024
e7ea8c8
chore: publish 명령어 생성
ShinYoung-Kim Oct 9, 2024
b0a82dd
chore: changeset github action 생성
ShinYoung-Kim Oct 9, 2024
4f224f3
feat: changeset 파일 생성
ShinYoung-Kim Oct 9, 2024
f82e0e6
chore: release action node 버전 변경
ShinYoung-Kim Oct 9, 2024
602ef6b
feat: yml 커밋 메시지 추가
ShinYoung-Kim Oct 9, 2024
7c6892c
chore: config ignore 추가
ShinYoung-Kim Oct 9, 2024
b6a3d1b
chore: changeset 설치
ShinYoung-Kim Oct 9, 2024
310c475
chore: publish 명령어 생성
ShinYoung-Kim Oct 9, 2024
449e0a8
chore: changeset github action 생성
ShinYoung-Kim Oct 9, 2024
b85cc3a
chore: action 파일 최적화 반영
ShinYoung-Kim Oct 9, 2024
4fb0a21
chore: name 수정
ShinYoung-Kim Oct 9, 2024
41b014f
Merge branch 'feat/#39' of https://github.com/team-warrr/warrr-ui int…
ShinYoung-Kim Oct 9, 2024
9cdd409
chore: 코더레빗 코드리뷰 반영
ShinYoung-Kim Oct 9, 2024
5ef7913
Merge branch 'develop' into feat/#39
ShinYoung-Kim Oct 9, 2024
39f47c7
fix: script " 삭제
ShinYoung-Kim Oct 9, 2024
12454aa
Merge branch 'feat/#39' of https://github.com/team-warrr/warrr-ui int…
ShinYoung-Kim Oct 9, 2024
3c1d665
fix: lock 파일 수정
ShinYoung-Kim Oct 9, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .changeset/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Changesets

Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
with multi-package repos, or single-package repos to help you version and publish your code. You can
find the full documentation for it [in our repository](https://github.com/changesets/changesets)

We have a quick list of common questions to get you started engaging with this project in
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
6 changes: 6 additions & 0 deletions .changeset/big-eggs-crash.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"warrr": patch
"primitive": patch
---

changeset 생성 실습
16 changes: 16 additions & 0 deletions .changeset/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"$schema": "https://unpkg.com/@changesets/config@3.0.2/schema.json",
"changelog": [
"@changesets/cli/changelog",
{
"repo": "team-warrr/warrr-ui"
}
],
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": ["primitive-docs", "themed-docs"]
}
46 changes: 46 additions & 0 deletions .github/ISSUE_TEMPLATE/component-template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
name: Component Template
about: Describe this issue template's purpose here.
title: "컴포넌트 이슈 작성 템플릿"
labels: "🎯 기능 구현"
assignees: ""
---

### **용도 (Usage)**

<!-- 컴포넌트의 사용 용도에 대해 명시합니다.
피그마에 작성해둔 내용을 위주로 사용하고, 덧붙일 내용이 있다면 붙이면 됩니다.

> 콘텐츠 섹션을 시각적으로 구분할 때 사용합니다. 레이아웃의 구조를 명확히 하며, 사용자의 정보 탐색을 돕습니다.

-->

### **기능 (Props)**

<!-- 컴포넌트의 props 별 기능에 대해 명시합니다.

> - orientation: horizontal, vertical -> Divider의 방향을 작성합니다. 이에 따라 aria 태그 및 HTML 태그가 변경됩니다.

-->

### **참고 (Reference)**

<!-- 컴포넌트 개발 시 참고한 자료들을 적습니다.

- [NextUI](https://nextui.org/docs/components/divider)

-->

### **마일스톤 (Milestones)**

<!-- 프로젝트를 제 시간에 맞추기 위해 테크 스펙의 내용을 바탕으로 추정한 마일스톤을 공유합니다. 실험 계획, 배포 날짜를 포함해 최대한 자세히 적습니다.

> ~ 9/25: BPL 컴포넌트 개발
9/28 ~ 9/29: 실험 변수 추가, 로컬 변수 추가
9/30 ~ 10/4: 추석 연휴!
10/5: 하단 탭 확장 가능한 구조로 리팩토링
10/6 ~ 10/8: 비즈니스 로직 구현
10/12 ~ 10/20: 사용자 이벤트 부착 및 미진한 내용 보충
10/20: 2.45.0 코드 프리즈 (이때까지 내부 기능 테스트, 이벤트 로깅 테스트)
10/21 ~ 10/23: 2.45.0 릴리즈 QA
11/4: 2.45.0 Rollout -->
26 changes: 26 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE/component_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<!-- PR 제목 한 번 확인해주세요!
브랜치 이름 + 주된 작업 요약
ex. feat/#1 프로젝트 세팅 -->

### 예상 동작 (Expected Behavior)

<!-- 컴포넌트를 사용했을 때의 예상 동작에 대해 작성합니다.

> 콘텐츠 섹션이 시각적으로 구분이 됩니다.
> 레이아웃의 구조를 명확히 하며, 사용자의 정보 탐색을 돕습니다.

-->

### 고민했던 내용 (Considerations)

<!-- 컴포넌트를 개발하며 어떤 것을 고민했는지, 작성한 로직 이외에 다른 대안이나 방법이 있었는지를 기술합니다.

> [radix ui의 Separator](https://github.com/radix-ui/primitives/blob/660060a765634e9cc7bf4513f41e8dabc9824d74/packages/react/separator/src/Separator.tsx#L10)의 경우 ORIENTATIONS 변수를 생성 후 Orientaion이라는 type을 만들었습니다.

warrr-ui에서는 Orientation의 type은 2개만 사용될 예정이고, `type Orientation = "horizontal" | "vertical";`로 작성하는 것이 가독성면에서 더 좋다고 판단하여 이와같이 작성하였습니다.

-->

### 관련 이슈

- resolved #(issue_num)
2 changes: 2 additions & 0 deletions .github/environments/versions.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
PNPM_VERSION=8.15.6
NODE_VERSION=20
44 changes: 35 additions & 9 deletions .github/workflows/chromatic_auto_deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,27 +16,53 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: 레포지토리 체크아웃
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Node.js 설정
- name: 환경 변수 설정
id: set-env
run: |
chmod +x ./scripts/set-env.sh
./scripts/set-env.sh

- name: node.js 설정
uses: actions/setup-node@v4
with:
node-version: 20

- name: Corepack 활성화
run: corepack enable
node-version: ${{ env.NODE_VERSION }}

- name: pnpm 설치
run: corepack prepare pnpm@latest --activate
uses: pnpm/action-setup@v4
with:
version: ${{ env.PNPM_VERSION }}

- name: pnpm 의존성 캐시
id: cache-pnpm
uses: actions/cache@v4
with:
path: |
~/.pnpm-store
node_modules
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-

- name: 의존성 설치
run: pnpm install --no-frozen-lockfile
run: |
chmod +x ./scripts/install-dependencies.sh
./scripts/install-dependencies.sh

- name: 토큰 존재 여부 체크
run: |
if [ -n "${{ secrets.PRIMITIVE_UI_CHROMATIC_TOKEN }}" ]; then
echo "PRIMITIVE_UI_CHROMATIC_TOKEN is set"
else
echo "PRIMITIVE_UI_CHROMATIC_TOKEN is not set"
fi

- name: chromatic에 배포
id: publish_chromatic
uses: chromaui/action@v1
uses: chromaui/action@latest
with:
projectToken: ${{ secrets.PRIMITIVE_UI_CHROMATIC_TOKEN }}
token: ${{ secrets.GITHUB_TOKEN }}
Expand Down
107 changes: 107 additions & 0 deletions .github/workflows/label-vrt-update.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
name: VRT 스냅샷 업데이트
on:
pull_request:
types: [labeled]

jobs:
update-snapshots:
if: github.event.label.name == 'VRT'
runs-on: ubuntu-latest
steps:
- name: 레포지토리 체크아웃
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: 환경 변수 설정
id: set-env
run: |
chmod +x ./scripts/set-env.sh
./scripts/set-env.sh

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

환경 설정 및 설치 단계의 투명성 개선 제안

현재 환경 변수 설정과 의존성 설치를 위해 별도의 셸 스크립트를 사용하고 있습니다. 워크플로우의 가독성과 유지보수성을 높이기 위해 이러한 단계를 인라인 명령으로 변경하는 것을 고려해보세요.

예를 들어:

- name: 환경 변수 설정
  run: |
    echo "NODE_VERSION=16" >> $GITHUB_ENV
    echo "PNPM_VERSION=6.32.3" >> $GITHUB_ENV

- name: 의존성 설치
  run: pnpm install

- name: playwright 설치
  run: pnpm exec playwright install --with-deps

이렇게 하면 워크플로우 파일 내에서 모든 단계를 직접 확인할 수 있어 디버깅과 수정이 더 쉬워집니다.

Also applies to: 51-59

- name: node.js 설정
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}

- name: pnpm 설치
uses: pnpm/action-setup@v4
with:
version: ${{ env.PNPM_VERSION }}

- name: pnpm 의존성 캐시
id: cache-pnpm
uses: actions/cache@v4
with:
path: |
~/.pnpm-store
node_modules
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-

- name: playwright 브라우저 캐시
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: ${{ runner.os }}-playwright-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-playwright-

- name: 의존성 설치
run: |
chmod +x ./scripts/install-dependencies.sh
./scripts/install-dependencies.sh

- name: playwright 설치
run: |
chmod +x ./scripts/install-playwright.sh
./scripts/install-playwright.sh

- name: 스토리북 빌드
run: pnpm run build-storybook

working-directory: packages/primitive
- name: 스토리북 실행
run: |
npx serve -l 6006 packages/primitive/storybook-static &
echo $! > .storybook-pid
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Storybook 실행 시 pnpm dlx 사용 제안

현재 Storybook을 실행하기 위해 npx serve를 사용하고 있습니다. 프로젝트의 패키지 관리자인 pnpm과의 일관성을 위해 pnpm dlx serve를 사용하는 것이 좋습니다.

다음과 같이 수정해 보세요:

- name: 스토리북 실행
  run: |
    pnpm dlx serve -l 6006 packages/primitive/storybook-static &
    echo $! > .storybook-pid

이렇게 하면 프로젝트 전체에서 일관된 패키지 관리 방식을 유지할 수 있습니다.


- name: 스냅샷 업데이트
run: pnpm run e2e:update

- name: 스토리북 프로세스 종료
if: always()
run: kill $(cat .storybook-pid)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

명령어 치환 시 따옴표 사용을 고려해 주세요.

kill 명령어에서 $(cat .storybook-pid)와 같은 명령어 치환 시, 프로세스 ID에 공백이나 특수 문자가 포함된 경우 단어 분할 문제가 발생할 수 있습니다. 이를 방지하기 위해 명령어 치환을 따옴표로 감싸는 것이 좋습니다.

다음과 같이 수정해 보세요:

-run: kill $(cat .storybook-pid)
+run: kill "$(cat .storybook-pid)"
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
run: kill $(cat .storybook-pid)
run: kill "$(cat .storybook-pid)"
Tools
actionlint

75-75: shellcheck reported issue in this script: SC2046:warning:1:6: Quote this to prevent word splitting

(shellcheck)


- name: 변경된 스냅샷 커밋 및 푸시
run: |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

보안을 위해 "github.head_ref"를 환경 변수로 전달하는 것을 고려해 주세요.

인라인 스크립트에서 "github.head_ref"를 직접 사용하는 것은 잠재적으로 신뢰할 수 없는 입력이므로 보안 위험이 될 수 있습니다. 대신 환경 변수를 통해 값을 전달하는 것이 좋습니다. 자세한 내용은 GitHub Actions 보안 강화 가이드를 참조하세요.

다음과 같이 수정해 보세요:

run: |
+  PR_HEAD_REF=${{ github.head_ref }}
  git config --local user.email "action@github.com"
  git config --local user.name "GitHub Action"
  git add .playwright
  git diff --staged --quiet || git commit -m "Update VRT snapshots in .playwright folder"
-  git push origin HEAD:${{ github.head_ref }}  
+  git push origin HEAD:$PR_HEAD_REF
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
run: |
run: |
PR_HEAD_REF=${{ github.head_ref }}
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add .playwright
git diff --staged --quiet || git commit -m "Update VRT snapshots in .playwright folder"
git push origin HEAD:$PR_HEAD_REF
Tools
actionlint

78-78: "github.head_ref" is potentially untrusted. avoid using it directly in inline scripts. instead, pass it through an environment variable. see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions for more details

(expression)

git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add .playwright
git diff --staged --quiet || git commit -m "Update VRT snapshots in .playwright folder"
git push origin HEAD:${{ github.head_ref }}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

보안을 위한 github.head_ref 사용 방식 개선 필요

현재 스크립트에서 github.head_ref를 직접 사용하고 있습니다. 이는 잠재적인 보안 위험이 될 수 있습니다. 대신 환경 변수를 통해 이 값을 전달하는 것이 좋습니다.

다음과 같이 수정해 보세요:

- name: 변경된 스냅샷 커밋 및 푸시
  env:
    HEAD_REF: ${{ github.head_ref }}
  run: |
    git config --local user.email "action@github.com"
    git config --local user.name "GitHub Action"
    git add .playwright
    git diff --staged --quiet || git commit -m "Update VRT snapshots in .playwright folder"
    git push origin HEAD:$HEAD_REF

이렇게 하면 github.head_ref의 값을 환경 변수로 전달하여 보안을 강화할 수 있습니다.

🧰 Tools
🪛 actionlint

78-78: "github.head_ref" is potentially untrusted. avoid using it directly in inline scripts. instead, pass it through an environment variable. see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions for more details

(expression)


- name: PR 코멘트 작성
uses: actions/github-script@v6
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: '## VRT 스냅샷 업데이트 완료\n\n스냅샷이 성공적으로 업데이트되었습니다. 변경된 스냅샷이 이 PR에 포함되었습니다. 리뷰해주세요.'
})

- name: VRT 레이블 제거
uses: actions/github-script@v6
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
github.rest.issues.removeLabel({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
name: 'VRT'
})
22 changes: 22 additions & 0 deletions .github/workflows/pr-dday-labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: PR D-day Labeler

on:
schedule:
- cron: "0 15 * * *"
pull_request:
types: [opened, reopened]
workflow_dispatch:

permissions:
contents: read
pull-requests: write

jobs:
label-prs:
runs-on: ubuntu-latest
steps:
- name: PR D-day Labeler
uses: team-warrr/pr-dday-labeler@1.0.3
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }}
Loading
Loading