[#135] 카카오 로그인 로그인 로직 수정 #101
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
pull_request: | |
branches: | |
- main | |
env: | |
GITHUB_TOKEN: ${{ secrets.DND_11_8_FRONTEND_TOKEN }} | |
GITHUB_ACTIONS: true | |
jobs: | |
build: | |
name: Build and Test | |
timeout-minutes: 15 | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 2 | |
- uses: pnpm/action-setup@v3 | |
with: | |
version: 8 | |
- name: Setup Node.js environment | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
cache: "pnpm" | |
- name: Install dependencies | |
run: pnpm install | |
- name: Build | |
id: build | |
run: pnpm build 2>&1 | tee build.txt | |
- name: Comment when build failed | |
if: steps.build.outcome == 'failure' | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{ env.GITHUB_TOKEN }} | |
script: | | |
const fs = require('fs'); | |
const build = fs.readFileSync('build.txt', 'utf-8'); | |
const { data: comments } = await github.rest.issues.listComments({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: context.payload.pull_request.number, | |
}); | |
const Convert = require('ansi-to-html'); | |
const convert = new Convert(); | |
const body = ` | |
<h2>Build Failed</h2> | |
<pre>${convert.toHtml(build)}</pre> | |
`; | |
const existingComment = comments.find(comment => comment.body.includes('Build Failed')); | |
if (existingComment) { | |
await github.rest.issues.updateComment({ | |
comment_id: existingComment.id, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body, | |
}); | |
} else { | |
await github.rest.issues.createComment({ | |
issue_number: context.payload.pull_request.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body, | |
}); | |
} | |
- name: Test | |
id: test | |
run: pnpm test 2>&1 | tee test.txt | |
- name: Comment when test failed | |
if: steps.test.outcome == 'failure' | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{ env.GITHUB_TOKEN }} | |
script: | | |
const fs = require('fs'); | |
const test = fs.readFileSync('test.txt', 'utf-8'); | |
const { data: comments } = await github.rest.issues.listComments({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: context.payload.pull_request.number, | |
}); | |
const Convert = require('ansi-to-html'); | |
const convert = new Convert(); | |
const body = ` | |
<h2>Test Failed</h2> | |
<pre>${convert.toHtml(test)}</pre> | |
`; | |
const existingComment = comments.find(comment => comment.body.includes('Test Failed')); | |
if (existingComment) { | |
await github.rest.issues.updateComment({ | |
comment_id: existingComment.id, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body, | |
}); | |
} else { | |
await github.rest.issues.createComment({ | |
issue_number: context.payload.pull_request.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body, | |
}); | |
} | |
- name: Save test coverage result | |
run: pnpm coverage 2>&1 | tee coverage.txt | |
- name: Comment test coverage result | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{ env.GITHUB_TOKEN }} | |
script: | | |
const fs = require('fs'); | |
const coverage = fs.readFileSync('coverage.txt', 'utf-8').split("=============================== Coverage summary ==============================="); | |
const { data: comments } = await github.rest.issues.listComments({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: context.payload.pull_request.number, | |
}); | |
const Convert = require('ansi-to-html'); | |
const convert = new Convert(); | |
const body = ` | |
<h2>Test Coverage</h2> | |
${convert.toHtml(coverage[0])} | |
\`\`\`text | |
=============================== Coverage summary =============================== | |
${convert.toHtml(coverage[1])} | |
\`\`\` | |
`; | |
const existingComment = comments.find(comment => comment.body.includes('Test Coverage')); | |
if (existingComment) { | |
await github.rest.issues.updateComment({ | |
comment_id: existingComment.id, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body, | |
}); | |
} else { | |
await github.rest.issues.createComment({ | |
issue_number: context.payload.pull_request.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body, | |
}); | |
} | |
- name: Assign reviewer when all steps success | |
if: success() | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{ env.GITHUB_TOKEN }} | |
script: | | |
const frontendDevelopers = ['gihwan-dev', 'hijiyun', 'chajuhui123']; | |
const prCreator = context.payload.pull_request.user.login; | |
const reviewers = frontendDevelopers.filter((developer) => developer !== prCreator); | |
if (reviewers.length > 0) { | |
await github.rest.pulls.requestReviewers({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
pull_number: context.payload.pull_request.number, | |
reviewers: reviewers, | |
}); | |
} |