여러분 안녕하세요. Discourse를 개발하는 도중 문제가 생겼습니다.
보통 저는 Git에서 파일을 클론한 후
변경 사항을 만들고
Git에 커밋을 합니다.
그 다음 제 팀원은 git pull을 해서
제 변경 사항을 모두 가져갑니다.
Discourse에서는 이와 유사한 방식을 어떻게 구현할 수 있을까요?
다른 사람들이 집에서 설치할 수 있도록 변경 사항을 어떻게 적용할 수 있을까요?
여러분 안녕하세요. Discourse를 개발하는 도중 문제가 생겼습니다.
보통 저는 Git에서 파일을 클론한 후
변경 사항을 만들고
Git에 커밋을 합니다.
그 다음 제 팀원은 git pull을 해서
제 변경 사항을 모두 가져갑니다.
Discourse에서는 이와 유사한 방식을 어떻게 구현할 수 있을까요?
다른 사람들이 집에서 설치할 수 있도록 변경 사항을 어떻게 적용할 수 있을까요?
Discourse 테마나 플러그인을 개발 중이라면, 둘 다 Git 저장소에 문제없이 보관할 수 있습니다.
답변 감사합니다. 주제에 대해 말씀하신 대로 맞습니다. 그렇다면 컴포넌트와 설정의 동기화는 어떻게 되나요?
플러그인 코드에서 필요한 경우 마이그레이션 및/또는 시드 콘텐츠를 정의할 수 있습니다. 또한 사이트 설정이 적절한 값을 갖도록 보장할 수도 있습니다.
설정을 완전히 복제하고 싶습니다
백업을 수행한 후 필요한 위치에 복원할 수 있습니다.
저는 백업에 S3를 사용하고, 이렇게 하면 모든 사이트가 동일한 백업 세트를 공유할 수 있습니다. 프로덕션에서 백업을 수행하면, 즉시 스테이징 사이트에서 이를 복원하여 현재 데이터와 함께 정상적으로 작동하는지 확인할 수 있습니다.
S3는 무엇인가요? 이 기능을 사용해보고 싶습니다.
Object Storage를 업로드에 사용하는 방법 (S3 & 클론)과 S3로 파일 및 이미지 업로드 설정하기에서 시작하는 것이 좋습니다. 백업만 사용할 경우 설정이 매우 간단합니다.
Backblaze와 Wasabi는 가격이 저렴합니다. 또한 Storj.io도 백업용으로 사용해 본 적이 있는 제품을 제공하고 있습니다.
개인적인 의견입니다. 백업에 대한 여기의 도움되는 댓글들을 폄하하려는 의도는 아니지만, 한 발짝 물러서서 보면 '동기화’된 Discourse 인스턴스가 실제로 얼마나 많은 노력을 기울일 가치가 있는지 확신하지 못하겠습니다.
Discourse 코어에 PR을 보내거나 플러그인을 개발할 계획이 아니라면, 플러그인이나 TC(테마 컴포넌트) 개발이 가장 효과적이고, 사용자 지정에 대해 가장 강력하고 효율적인 솔루션을 제공합니다.
플러그인과 테마 컴포넌트 개발의 핵심은, 여러분이 통제를 할 수 없는 여러 Discourse 인스턴스에 배포될 수 있다는 점입니다.
따라서 개발을 위해 약간 고유한 로컬 Discourse 인스턴스를 사용하는 것은 전혀 문제가 되지 않습니다. (합리적인 범위 내에서)
핵심 워크플로우는 플러그인이나 TC를 공유 저장소, 아마도 Github에서 최신 상태로 유지하는 것을 포함해야 합니다.
전적으로 동의합니다. 실제 데이터와 비교하여 확인해야만(또는 가장 쉽게) 검증할 수 있는 커스터마이징이 있는 고객들이 몇 명 있는데, 이런 고객들은 현재 데이터를 기반으로 사이트를 확인하는 것을 매우 좋아합니다.
네, 그건 맞는 말씀입니다. 어떤 일을 하려는지에 따라, 그리고 고객 기반이 어떤지에 따라(단일 대상인지, 여러 고객인지?) 달라집니다. 또한 얼마나 많은 통제권을 기대하는지에 따라서도요.
모두의 조언에 감사드립니다. 가장 가능성 높은 시나리오는 Discourse 코어에 PR을 보내는 것입니다. 따라서 어셈블리를 git에 업로드하고, git에서 서버로 전송할 수 있는 기능이 필요합니다.
Discourse 코어에 PR을 제출하는 경우, 로컬 설치의 정확한 설정은 크게 중요하지 않습니다(최신 버전인지 확인하는 것만으로도 충분합니다). 코드 기여는 어차피 매우 통제된 과정이기 때문입니다. 특히 테스트 케이스가 있기 때문에 설정이나 콘텐츠의 작은 차이는 문제가 되지 않을 가능성이 큽니다.
일반적으로 공동 작업을 할 때는 PR을 보내기 전에 조직의 저장소로 포크하여 그곳에서 작업을 진행하나요?
아니요, 저는 공동 기여물을 작업하지 않습니다. 개인적으로 사용하기 위해 작업합니다.
저는 그렇게 말한 적이 없습니다.
git 포크에서 discourse를 설치하는 방법은 무엇인가요?
Discourse 코어에 변경 사항을 적용하고 제 git 저장소에 추가할 것입니다.
그럼 왜 설치를 동기화해야 하는지 궁금합니다.
포크를 git clone하면 됩니다.
일반적으로 개발에는 docker를 사용하지 않지만, 사용 중이라면 컨테이너에 들어가서 포크를 체크아웃하면 됩니다.
예를 들어,
지금 저는 Discourse를 설정해 두었습니다.
그리고 모든 준비가 끝난 후, 빌드를 업데이트합니다.
그 후 개발을 다시 이어서 진행합니다. 관리 패널에서 몇 가지 설정을 변경합니다. 설정 항목이 많을 수 있습니다.
빌드를 업데이트하려고 하면 설정도 함께 업데이트해야 합니다.
이 경우, 설정을 수동으로 설정해야 합니다.
설정은 영구적으로 유지되며, 혼자 작업하고 있으므로 백업/동기에 집중할 필요가 왜 있는가요?
(또한 토픽 제목도 혼란스럽네요. 왜 "팀 내에서"인가요?)
클론이나 체크아웃을 수행할 때 데이터베이스(설정이 저장되는 곳)를 지우지 않습니다.
마이그레이션(존재하는 경우)을 언제 실행할지는 사용자가 직접 관리합니다. 그렇지 않으면 DB는 안정적이어야 합니다.