-
Notifications
You must be signed in to change notification settings - Fork 4
[Init] CI/CD 파이프라인 구축 #6
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
Changes from 5 commits
ec33ff5
86d081b
2e47d52
c6b74dd
339baa9
9892587
8635bf1
f8304d1
7a72a4d
6dcc01e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| name: cd | ||
|
|
||
| on: | ||
| push: | ||
| branches: [main] | ||
|
|
||
| jobs: | ||
| build: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v5 | ||
| - name: Install mustache | ||
| run: sudo apt-get update && sudo apt-get install -y 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.AUTO_ACTIONS }} | ||
| with: | ||
| source-directory: "output" | ||
| destination-github-username: odukong | ||
| destination-repository-name: COMFIT-CLIENT | ||
| user-email: ${{ secrets.EMAIL }} | ||
| commit-message: ${{ github.event.commits[0].message }} | ||
| target-branch: ${{ github.ref_name }} | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. cd.yml의
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 저도 합세해서 동일한 이슈가 있어서 수정했었는데 유진이가 잘 캐치해주었네요 ㅎ.ㅎ 최고 !! |
||
| - name: Test get variable exported by push-to-another-repository | ||
| run: echo $DESTINATION_CLONED_DIRECTORY | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,112 @@ | ||
| name: ci | ||
|
|
||
| on: | ||
| push: | ||
| branches: [main, dev] | ||
| pull_request: | ||
| branches: [main, dev] | ||
|
|
||
| permissions: | ||
| contents: read # 코드 읽기 권한 | ||
| pull-requests: write # 자동리뷰어 설정을 위한 쓰기 권한 | ||
|
|
||
| jobs: | ||
| build-and-deploy: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| # 저장소 코드 다운로드 | ||
| - name: Checkout Code | ||
| uses: actions/checkout@v5 | ||
| # pnpm 설치 | ||
| - name: Install pnpm | ||
| uses: pnpm/action-setup@v4 | ||
| with: | ||
| version: 10 | ||
|
|
||
| # pnpm store 캐싱 | ||
| - name: Get pnpm store directory | ||
| id: pnpm-cache | ||
| run: echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT | ||
|
|
||
| - uses: actions/cache@v5 | ||
| with: | ||
| path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} | ||
| key: ${{ runner.os }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }} | ||
| restore-keys: ${{ runner.os }}-pnpm- | ||
|
|
||
| # node.js 환경 설정 | ||
| - name: Setup Node.js | ||
| uses: actions/setup-node@v5 | ||
| with: | ||
| node-version: "24.x" | ||
| # 라이브러리 설치 | ||
| - name: Install dependencies | ||
| run: pnpm install --frozen-lockfile | ||
| # 프로젝트 린트 검사 및 타입 검사 | ||
| - name: Check project | ||
| id: check_step | ||
| run: pnpm run lint && pnpm exec tsc --noEmit | ||
|
Comment on lines
+45
to
+48
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 제가 ci/cd에 대해 잘 몰라서 한 번 찾아봤는데, PR 코멘트 / Discord 스텝에 그래서
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. lint 검사 단계에 실패한 경우에는 비교적 무거운 build단계를 실행하지 않고, 바로 comment 스탭으로 넘어가기 위해 |
||
| # 프로젝트 빌드 | ||
| - name: Build project | ||
| id: build_step | ||
| run: pnpm run build | ||
| continue-on-error: true | ||
|
|
||
| # 빌드 결과 | ||
| - name: Output build result | ||
| if: github.event_name == 'pull_request' && always() | ||
| uses: marocchino/sticky-pull-request-comment@v2 | ||
| with: | ||
| header: build-result | ||
| message: | | ||
| ### 🚀 빌드 결과 | ||
| ${{ steps.check_step.outcome == 'success' && '✅ **린트 검사 완료**' || '❌ **린트 검사 실패**'}} | ||
| ${{ steps.build_step.outcome == 'success' && '✅ **빌드 성공**' || '❌ **빌드 실패**' }} | ||
|
|
||
| <details> | ||
| <summary>로그 확인하기</summary> | ||
| <br> | ||
| <a href="${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"> | ||
| Actions 탭에서 자세히 보기 | ||
| </a> | ||
| </details> | ||
|
|
||
| # 빌드 결과 디스코드 알람 보내기 | ||
| - name: Notify Discord Alarm | ||
| if: github.event_name == 'pull_request' && always() | ||
| run: | | ||
| PR_TITLE="${{ github.event.pull_request.title }}" | ||
| PR_USER="${{ github.event.pull_request.user.login }}" | ||
| PR_URL="${{ github.event.pull_request.html_url }}" | ||
|
|
||
| if [ "${{ steps.build_step.outcome }}" == "success" ]; then | ||
| COLOR=3066993 | ||
| TITLE="✅ 빌드 성공" | ||
| else | ||
| COLOR=15158332 | ||
| TITLE="❌ 빌드 실패" | ||
| fi | ||
|
|
||
| DESCRIPTION="**🚀 Title :** \`$PR_TITLE\`\n **👤작성자 :** \`$PR_USER\`\n\n**[🔎 PR보러가기]($PR_URL)**" | ||
| curl -H "Content-Type: application/json" \ | ||
| -d "{ | ||
| \"embeds\": [{ | ||
| \"title\": \"$TITLE\", | ||
| \"description\": \"$DESCRIPTION\", | ||
| \"color\": $COLOR | ||
| }] | ||
| }" \ | ||
| "${{ secrets.DISCORD_WEBHOOK_URL }}" | ||
| # 빌드 실패 시, 종료 | ||
| - name: Check Build Status | ||
| if: steps.build_step.outcome == 'failure' | ||
| run: exit 1 | ||
| assign: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: auto-assign-author-and-reviewer | ||
| if: github.event_name == 'pull_request'&&github.event.action=='opened' | ||
| uses: hkusu/review-assign-action@v1 | ||
| with: | ||
| assignees: ${{github.actor}} # 담당자 설정 | ||
| reviewers: hummingbbird, odukong, u-zzn, qowjdals23 | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| #!/bin/sh | ||
| cd ../ | ||
| mkdir output | ||
| cp -R ./COMFIT-CLIENT/* ./output | ||
| cp -R ./output ./COMFIT-CLIENT/ |
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. vercel 배포에 필요한 설정도 같이 해주는 꼼꼼함 .. 최고다오두콩
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 칭찬에 덩실덩실대는 오두콩이되.... |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| { | ||
| "rewrites": [ | ||
| { | ||
| "source": "/(.*)", | ||
| "destination": "/index.html" | ||
| } | ||
| ] | ||
| } |
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.
cd.yml에서 설치한 mustache가 현재 사용처가 보이지 않는 것 같은데, 실제로 템플릿 렌더링에 사용 중인지 궁금합니다! 아니라면 제거하는게 어떨까요!☺️
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.
허업 cd.yml 파일은 복사해서 가져오다보니 mustache 설치코드도 같이 가져와버렸네요..
말씀해주신대로 mustache는 CD 워크플로우 상에서 사용하지 않아 제거하도록 하겠습니다 🫶🏻