오픈소스 프로젝트 주제 선정
오픈소스 주제는 개발 과정에 필요성을 해소하는 주제로 선정하는 것이 좋다.
정한 주제가 없다면 다음과 같은 기능을 주제로 선정한다.
- 복잡한 구동 과정 없이 결과를 확인할 수 있는 기능
- 확장성이 있는 기능
예시로 lodash.js, underscore.js, immer.js가 있다.
오픈소스 저장소 생성 및 설정
1. 깃허브에서 사용자 아이콘을 클릭하여 Your organizations를 클릭한다.
2. New organization을 클릭한다.
3. 조직 이름과 내 이메일을 작성한다. My personal account를 선택하면 하고 넘어가면 된다.
4. 조직 멤버를 추가하는 화면이 나타난다. 일단 skip 한다.
5. organization 생성이 완료되었다.
6. 상단의 레포지토리 탭에 들어가서 새로운 레포지토리를 생성할 수 있다.
7. 레포지토리를 생성하고, 생성한 레포지토리의 settings의 branches에서 Add classic branch protection rule을 클릭한다.
8. 다음과 같이 설정하고, 저장한다.
이 설정은 인증을 받아야 브랜치 병합을 할 수 있도록 해준다. 브랜치 병합 전 브레이크 역할을 한다고 생각하면 된다.
오픈소스 문서 템플릿 및 README 작성
이슈 템플릿과 PR 템플릿은 모두 .github 폴더 안에 작성한다.
이슈 템플릿 작성
issue_template.md 파일을 다음과 같이 작성한다.
# <오픈소스이름> issue 양식
## 이슈
<!-- issue 제목을 적어주세요 -->
## 설명
<!-- 설명을 적어주세요 -->
## TODO
- [ ] 할 일1
- [ ] 할 일2
PR 템플릿 작성
pull_request_template.md 파일을 다음과 같이 작성한다.
# <오픈소스이름> pull request 양식
## PR 작업
<!-- PR 제목을 적어주세요 -->
## 설명
<!-- 설명을 적어주세요 -->
## TODO
- [ ] 할 일1
- [ ] 할 일2
README 작성
README.md 파일을 다음과 같이 작성한다.
# 오픈소스이름
<!-- 작성한 오픈 소스의 간단한 설명 -->
## 특징
- 특징1
- 특징2
- 특징3
## 설치
``` bash
npm install 오픈소스이름
```
## 사용법
``` js
const test = require('test');
// ...
```
## 기여하기
1. 저장소를 fork 한다.
2. 새 브랜치를 만들고, 수정 사항을 push 한다.
3. PR을 요청하고, 문서 양식에 맞게 내용을 기입한다.
## 라이센스
MIT 라이센스에 따라 제공되는 오픈 소스 SW 입니다.
PR 관리 github action 설정
github action은 깃허브에서 제공하는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 서비스이다.
.github/workflows/workflow.yml 파일을 다음과 같이 작성하면 PR을 보내면 자동으로 체크해준다.
name: Pull Request Check # 워크 플로우 이름
on: # 워크플로우 실행 트리거
pull_request: # pull_request가 실행될 때만
types: [opend, synchronize] # PR 생성되고 업데이트 할 때
jobs: # 작업 정의
check:
runs-on: ubuntu-latest # 우분투 환경
permissions: # 권한 설정
pull-requests: write # PR에 쓰기 권한 설정
steps:
- uses: actions/github-script@v7
with:
script: |
async function run() {
const pull_request = context.payload.pull_request; # pull_request 객체 가져오기
if (pull_request === undefined) {
console.log("This is not a pull request");
return;
}
const body = pull_request.body;
if (!body) {
// PR에 코멘트 추가
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pull_request.number,
body: "",
});
// PR 닫기
awiat github.rest.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pull_request.number,
state: "closed"
});
}
}
'데브코스' 카테고리의 다른 글
[19주차 - DAY3] 웹 기반 문서 편집기 제작 프로젝트(2) (0) | 2024.07.03 |
---|---|
[19주차 - DAY2] 웹 기반 문서 편집기 제작 프로젝트(1) (0) | 2024.06.28 |
[18주차 - DAY4] 오픈소스 기여(3) (0) | 2024.06.27 |
[19주차 - DAY1] npm을 통한 오픈소스 배포 (0) | 2024.06.26 |
[19주차 - DAY1] 오픈소스 기여(5) (0) | 2024.06.26 |