# .discourse-compatibility 소개: 구버전 Discourse를 위한 고정된 플러그인/테마 버전

**URL:** https://meta.discourse.org/t/introducing-discourse-compatibility-pinned-plugin-theme-versions-for-older-discourse-versions/156971
**Category:** Announcements
**Tags:** new-feature
**Created:** [7월 6, 2020, 10:51오후 UTC](https://meta.discourse.org/t/introducing-discourse-compatibility-pinned-plugin-theme-versions-for-older-discourse-versions/156971 "2020-07-06T22:51:07Z")
**Posts on this page:** 1
**Showing post:** 1

<div class="post-metadata">

### Author: ![featheredtoast](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/featheredtoast/32/116994_2.png) [@featheredtoast](https://meta.discourse.org/u/featheredtoast)
#### Post date: [7월 6, 2020, 10:51오후 UTC](https://meta.discourse.org/t/introducing-discourse-compatibility-pinned-plugin-theme-versions-for-older-discourse-versions/156971/1 "2020-07-06T22:51:07Z")

</div>

여러분 안녕하세요 👋 , 오래된 Discourse 인스턴스에 설치할 때 플러그인과 테마가 특정 버전을 고정(pinning)할 수 있도록 도와주는 새로운 기능을 병합했습니다.

이제 플러그인 또는 테마 저장소의 루트 디렉토리에 `.discourse-compatibility` 파일을 포함할 수 있으며, 이 파일은 오래된 Discourse 버전으로 설치할 때 어떤 버전을 체크아웃할지 지정합니다.

* * *

## 배경

어떤 플러그인과 테마가 어떤 Discourse 버전과 호환되는지 기억하는 것은 번거로운 일입니다. 관리자라면 플러그인 커밋 히스토리를 읽지 않고도 자신의 Discourse 설치에 적합한 버전을 쉽게 찾아낼 수 있어야 합니다. 또한 플러그인 또는 테마 개발자라면 후방 호환성이 깨지는 변경사항을 적용하면서도 오래된 설치 환경이 깨지지 않도록 설치 버전을 관리할 수 있어야 합니다.

Discourse 소프트웨어 업데이트는 매우 빠르게 배포되는데, 이는 _훌륭한_ 점이지만 많은 플러그인을 사용하는 Discourse 인스턴스를 유지보수하는 것을 때로는 매우 어렵게 만듭니다. 특히 현재 안정판(stable)과 같은 다른 릴리스 주기/버션을 따르는 경우 더욱 그렇습니다. 여기서 제 계획은 안정판이나 다른 릴리스 주기를 따르는 사용자를 위한 업데이트 프로세스를 원활하게 하는 생태계를 조성하고, 해당 사이트 관리자가 대상 Discourse 버전과 호환되는 플러그인 버전을 빠르고 자동으로 가져올 수 있는 방법을 제공하는 것입니다.

> [@구형 Discourse 설치에서 플러그인 및 테마 버전 고정 (d-compat 브랜치)](https://meta.discourse.org/t/pinning-plugin-and-theme-versions-for-older-discourse-installs-discourse-compatibility/272665):
>
> open_book 배경 테마 및 플러그인 개발자는 일반적으로 Discourse의 latest 릴리스를 대상으로 개발하되, 하위 호환성에 대해 걱정하지 않으려는 경향이 있습니다. 하지만 구버전 Discourse를 실행 중인 사이트들은 해당 환경에서 작동하는 테마/플러그인 버전이 여전히 필요합니다. 이 간극을 메우기 위해, Discourse에 테마/플러그인의 이전 ‘고정(pinned)’ 버전을 체크아웃하도록 지시할 수 있습니다. 이를 위한 두 가지 메커니즘이 있으며, 순서대로 확인됩니다: 테마/플러그인 저장소 내 d-compat/\<YYYY\>.\<M\> git 브랜치 (주요 방법 — 모든 새로운 고정(pinning)에 권장됨). 저장소 루트 디렉터리에 있는 .discourse-compatibility YAML 파일 (원래 메커니즘이며, 여전히 폴백으로 지원됨). 두 가지가 모두 존재하는 경우, 브랜치가 우선합니다. herb d-compat/\<YYYY\>.\<M\> 브랜치 시스템 D…

> **원본 공지 (위에서 링크한 문서로 대체됨)**
>
> ## 구현
> 
> 먼저 주목할 점은: 여기서는 Discourse 코어의 태그에 의존합니다. Discourse의 베타 버전이 충분히 자주 배포되므로, 이를 기준으로 플러그인 버전을 고정할 수 있기 때문입니다. git 해시로 고정하는 것은 여러 가지 이유로 악몽과도 같으므로, 가장 가까운 베타/안정 태그를 가져오기 위해 git describe를 사용합니다.
> 
> 플러그인 또는 테마의 루트 디렉토리에 `.discourse-compatibility`이라는 이름의 버전 호환성 파일을 지원합니다. 이 파일은 호환성 매핑을 지정하는 내림차순(새로운 Discourse 버전이 먼저)으로 정렬된 목록입니다.
> 
> ## 예시
> 
> ```plaintext
> 2.5.0.beta2: git-hash-1234e5f5d
> 2.4.4.beta6: 4444ffff33dd
> 2.4.2.beta1: named-git-tag-or-branch
> 
> ```
> 
> 각 플러그인/테마에 대해 업그레이드 또는 재빌드 시, 현재 Discourse 버전과 같거나 그보다 최신인 항목을 찾을 때까지 더 늦은 날짜의 이름이 붙은 커밋/브랜치/태그를 체크아웃하는 것이 계속됩니다.  
> 예를 들어, 위의 버전 파일에서 현재 Discourse 버전이 `2.4.6.beta12`라면 파일을 스캔하여 `2.5.0.beta2` 항목을 선택합니다.
> 
> 현재 Discourse 버전이 `2.4.4.beta6`라면 `2.4.4.beta6`에 해당하는 항목을 선택합니다.
> 
> 더 최신 버전이 없으면 현재 체크아웃된 버전을 유지합니다.  
> 예를 들어, `2.5.0.beta3`의 경우 고정(pinning)이 발생하지 않습니다.
> 
> 더 이전 버전이 없으면 버전 파일에 나열된 가장 오래된 버전을 체크아웃합니다.  
> 예를 들어, `2.2.1.beta22`의 경우 주어진 “버전” 중 가장 오래된 항목인 `2.4.2.beta1` 항목을 체크아웃합니다.

* * *

여기서의 목표는 향후 테스트 통과(tests-passed) 상태가 아닌 대체 배포 환경을 유지보수하는 어려움을 줄이고, 언제 어디서 업그레이드할지에 대해 관리자에게 유연성을 제공하는 것입니다. 이를 위해 플러그인과 테마 개발자가 후방 호환성이 깨지는 변경사항을 개발하더라도 오래된 버전의 Discourse 설치 환경에 영향을 주지 않도록 하는 방법을 제공합니다.

---

_[View the full topic](https://meta.discourse.org/t/introducing-discourse-compatibility-pinned-plugin-theme-versions-for-older-discourse-versions/156971)._
