포스트

2024.08.11 프로그래머스 - 오픈소스 기여 - 5

오픈소스 기여하기 - 5

오픈소스를 만들 때 중요한 것

  • README.md

    리드미 파일은 오픈소스 세계에 있어서 필수라고 볼 수 있다.

    README 파일을 통해 해당 오픈소스(프로젝트) 에 관심이 있는 사용자가

    정보를 얻을 수 있다.

    오픈소스를 통해 사용자 자신이 어떤 부분의 이득을 취할 수 있는지,

    또는 해당 소스를 보고 사용법을 이해하고, 기여하고자 하는 부분을 찾을 수 있다는 점

    개발 프로젝트에 있어 README.md 파일은 시작이자 끝을 담당하는 것 같다.

오픈소스를 만들 때 고려할것

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
오픈소스를 만들 때는 Rule 이 생각보다 더 중요하다.

PR 에 대한 규칙을 정의하여 main 브랜치 (master) 에 무분별한 PR이 Merge 되는 것을 방지할 수 있고,

또한 긍정적인 유지보수, 및 의견 교환을 위한 PR Template, Issue Template 과 같은

사용자(기여자) 를 위한 많은 부분이 규칙으로 설정 되어야 한다.

사용은 자유롭지만, 기여자들과 함꼐 만들어 감에 있어서는

어느정도의 규칙을 강제해야 한다.

Github 의 내부 Settings 내의 Rule,

.github 템플릿 폴더 내부에 issue_template.md, pull_request_template.md 파일 제작을 통해 

위에서 설명한 규칙을 적용 시킬 수 있다.

PR 검증 자동화

1
.github 폴더 내에 workflow.yml 파일 작성으로 PR 또는 다른 actions가 필요한 부분의 자동화를 진행할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
name: Pull Request Check # 워크플로우 이름

on: # 워크플로우 실행 트리거
  pull_request: # pull_request가 실행될 때만
    types: [opened, synchronize] # PR이 생성되거나 업데이트될 때

jobs: # 작업 정의
  check: # github action이 실행되기 위해 체크하는 단계
    runs-on: ubuntu-latest # 우분투 환경
    permissions: # 권한 설정
      pull-requests: write # PR에 쓰기 권한 설정
    steps: # 실제 일어나는 작업 단계
      - uses: actions/github-script@v7
        with:
          script: | # 스크립트 시작
            const pull_request = context.payload.pull_request; # pull_request 객체 가져오기

            if (pull_request === undefined) { # PR이 없는 경우
              console.log("This is not a pull request");
              return;
            }

            const body = pull_request.body; # PR 내부 본문 가져오기

            if (!body) {
              # PR에 코멘트 추가
              await github.rest.issues.createComment({
                owner: context.repo.owner, # 저장소 소유자
                repo: context.repo.repo, # 저장소 이름
                issue_number: pull_request.number, # PR 번호
                body: "해당 PR은 가이드 라인을 준수하지 않았습니다. 때문에 PR을 닫도록 하겠습니다. 가이드라인을 준수해서 다시 PR을 요청해주세요." # 코멘트 내용
              });

              # PR 닫기
              await github.rest.pulls.update({ # PR을 닫음
                owner: context.repo.owner,
                repo: context.repo.repo,
                pull_number: pull_request.number,
                state: "closed" # 상태를 닫힘으로 변경
              });
            }

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.