티스토리 뷰

반응형

GitHub의 Issue와 같은 기능에 템플릿을 적용하는 기능은 전부터 가능했었지만 

Discussion에 템플릿을 적용하는 기능은 비교적 최신(2023.01)에 추가되었다.

 

간단히 GitHub Discussion을 활성화, 템플릿을 만들고 적용하는 과정을 소개하려 한다.

 


 

GitHub Discussion 활성화하기

 

저장소의 Private, Public 여부와 관계없이 Discussion 기능을 사용할 순 있지만 별도의 활성화 과정이 필요하다.

저장소, 혹은 조직의 Settings 탭을 한참 내리면 Discussion을 활성화하는 창이 보인다. 체크박스를 클릭해 활성화하자.

 

Discussions를 활성화해야 Discussion 탭이 보인다.

 

아래와 같이 Discussions 탭이 새로 생성된 것을 확인할 수 있다.

 

 

 

 

기본 제공되는 카테고리

 

기본 제공되는 카테고리와 템플릿이 있으나 한정적이다.

1. Open-ended discussion: 명확한 정답 선택 기능 없이 댓글을 통해 대화를 이어나갈 수 있는 게시글 형태.

2. Question / Answer: 질문을 작성하고 달린 답변 댓글 중 하나를 정답으로 선택할 수 있는 게시글 형태. 답변이 채택됐다면 게시글 목록에서도 답변이 완료됐음을 보여준다.

3. Announcement: 저장소 관리자만이 작성할 수 있는 공지용 게시글.

4. Poll: 게시글에 투표를 내장할 수 있는 형태. 아래와 같은 형태로 나타난다. 투표를 변경할 수 없으며 글 변경 시 투표 기록은 초기화된다.

 

 

 

 

 

새로운 템플릿의 카테고리 추가하기

 

1. 원하는 이름의 카테고리 하나 만들기

 

템플릿을 GitHub에서 바로 설정할 수 있는 Issue와 달리, Discussion은 별도로 YAML 파일을 작성해 올리는 작업이 필요하다.

먼저 새로운 카테고리를 만들어주자. 포멧은 상관없다.

 

 

 

 

2. 템플릿을 읽어올 수 있는 기본 경로 생성하기

 

저장소에 Discussion 템플릿을 읽을 수 있는 지정된 경로를 만들어주어야 한다.

메인 브랜치에 /.github/DISCUSSION_TEMPLATE/ 를 만들어준다.

 

당연히 CLI를 사용해도 되고 간단히 웹에서 바로 만들어도 된다
아래와 같은 경로가 만들어져야 한다

 

3. 만든 폴더에 .yml 형식의 템플릿 파일 생성하기

 

위에서 생성한 폴더에 {category_name}.yml 라는 이름으로 파일을 생성하면 해당 이름의 카테고리로 Discussion에서 글을 작성할 때 매번 지정된 템플릿이 제공된다.

 

다음은 GitHub 공식 문서에서 제공하는 샘플이다.

GitHub에서 제공하는 템플릿의 syntax는 여기를 참고하자.

YAML 파일에 대한 설명은 여기에서 확인 가능하다.

 

title: "[General] "
labels: ["General Introduction"]
body:
  - type: markdown
    attributes:
      value: |
        This is text that will show up in the template!
  - type: textarea
    id: improvements
    attributes:
      label: Top 3 improvements
      description: "What are the top 3 improvements we could make to this project?"
      value: |
        1.
        2.
        3.
        ...
      render: bash
    validations:
      required: true
  - type: markdown
    attributes:
      value: |
        ## Markdown header
        And some more markdown
  - type: input
    id: has-id
    attributes:
      label: Suggestions
      description: A description about suggestions to help you
    validations:
      required: true
  - type: dropdown
    id: download
    attributes:
      label: Which area of this project could be most improved?
      options:
        - Documentation
        - Pull request review time
        - Bug fix time
        - Release cadence
    validations:
      required: true
  - type: checkboxes
    attributes:
      label: Check that box!
      options:
        - label: This one!
          required: true
        - label: I won't stop you if you check this one, too
  - type: markdown
    attributes:
      value: |
        ### The thrilling conclusion
        _to our template_

 

 

위의 파일을 작성하면 해당 카테고리로 글을 작성하려고 할 때 아래와 같이 템플릿이 제공된다.

 

 

YAML 파일을 살펴보면 GitHub Issue와 마찬가지로 아래와 같은 기능들을 포함한 템플릿을 생성할 수 있다.

 

1. placeholder

2. 라벨과 연동

3. markdown으로의 템플릿 내용 렌더링

4. 글 작성자에게 텍스트, 드롭다운 혹은 체크박스 등의 방식 제공

3. 해당 필드가 필수인지 검증

 

 

해당 템플릿을 사용해 글을 만들었다

 

 

만약 커스텀한 템플릿이 형식에 맞지 않는다면 GitHub의 해당 파일에 들어가보자.

아래와 같이 템플릿 형식에 맞지 않는 부분이 무엇인지 친절하게 알려준다.

 

 

Issue, PR, Discussion 템플릿의 잘못된 형식에 대한 설명은 여기에서 확인할 수 있다.

 


아쉬운 점

 

GitHub Issue와 달리 템플릿 생성 과정이 직접 디렉터리를 만들고 YAML 파일을 만들어야만 해 아직은 불편하다.

이후 다른 GitHub 기능들처럼 편의 기능들이 제공될 것이라 예상한다.

언제든지 기능 혹은 화면 구성이 변경될 수 있음을 감안해 주길 바란다.

 

1. Poll(투표) 기능은 아직 템플릿을 통해 제공할 수 없다!

 

https://docs.github.com/en/discussions/managing-discussions-for-your-community/creating-discussion-category-forms

 

2. 한글과 띄어쓰기가 포함된 템플릿 파일은 인식하지 못한다!

템플릿과 해당 템플릿을 사용하는 카테고리의 또한 한글이나 띄어쓰기가 없어야 제대로 동작한다.

 

본문에서 사용한 저장소는 다음과 같다

https://github.com/jaehee329/github-functionalities

 

 

 

참고

 

https://docs.github.com/en/discussions/managing-discussions-for-your-community/creating-discussion-category-forms

반응형

'Git & GitHub' 카테고리의 다른 글

[Git] Git 커밋 메세지 컨벤션(Commit Message Convention)  (0) 2022.10.13