Skip to content

[FEAT] 테스트 파일 삭제 #21

[FEAT] 테스트 파일 삭제

[FEAT] 테스트 파일 삭제 #21

Workflow file for this run

name: PR Assignment
on:
pull_request:
types: [opened, ready_for_review, reopened]
permissions:
pull-requests: write
jobs:
get_meta_data:
runs-on: ubuntu-latest
outputs:
assignees: ${{ steps.get_meta_data.outputs.assignees }}
author: ${{ steps.get_meta_data.outputs.author }}
pr_number: ${{ steps.get_meta_data.outputs.pr_number }}
owner: ${{ steps.get_meta_data.outputs.owner }}
repo: ${{ steps.get_meta_data.outputs.repo }}
steps:
- name: Get PR meta data
uses: actions/github-script@v7
id: get_meta_data
with:
script: |
const pr = context.payload.pull_request;
const assignees = pr.assignees.map(assignee => assignee.login);
const author = pr.user.login;
const pr_number = pr.number;
const { owner, repo } = context.repo;
core.setOutput('assignees', assignees);
core.setOutput('author', author);
core.setOutput('pr_number', pr_number);
core.setOutput('owner', owner);
core.setOutput('repo', repo);
assign_assignee:
runs-on: ubuntu-latest
needs: get_meta_data
steps:
- name: Assign PR to author
uses: actions/github-script@v7
with:
script: |
try {
const assignees = JSON.parse('${{ needs.get_meta_data.outputs.assignees || '[]' }}');
if (assignees.length > 0) {
console.log('이미 assignee가 지정되어 있습니다.');
return;
}
const author = '${{ needs.get_meta_data.outputs.author }}';
const pr_number = '${{ needs.get_meta_data.outputs.pr_number }}';
const owner = '${{ needs.get_meta_data.outputs.owner }}';
const repo = '${{ needs.get_meta_data.outputs.repo }}';
await github.rest.issues.addAssignees({
owner,
repo,
issue_number: pr_number,
assignees: [author]
});
} catch(error) {
console.log('Assignee를 지정하는 중 오류가 발생했습니다:', error);
}
assign_reviewers:
runs-on: ubuntu-latest
if: github.event.pull_request.draft == false
needs: get_meta_data
env:
REVIEWERS: cl-o-lc,dmdeh,HolMoly,yoouyeon,zelkovaria
steps:
- name: Assign reviewers
uses: actions/github-script@v7
with:
script: |
try {
const assignees = JSON.parse('${{ needs.get_meta_data.outputs.assignees || '[]' }}');
const author = '${{ needs.get_meta_data.outputs.author }}';
const pr_number = '${{ needs.get_meta_data.outputs.pr_number }}';
const owner = '${{ needs.get_meta_data.outputs.owner }}';
const repo = '${{ needs.get_meta_data.outputs.repo }}';
const reviewers = process.env.REVIEWERS.split(',');
// author와 assignees를 제외한 reviewers 목록을 필터링
const filteredReviewers = reviewers.filter(reviewer => {
return reviewer !== author && !assignees.includes(reviewer);
});
if (filteredReviewers.length === 0) {
console.log('할당할 reviewer가 없습니다.');
return;
}
await github.rest.pulls.requestReviewers({
owner,
repo,
pull_number: pr_number,
reviewers: filteredReviewers
});
} catch (error) {
console.log('reviewer를 지정하는 중 오류가 발생했습니다:', error);
}