Opções de configuração como código para Discourse?

Então não estou falando sobre a implantação da instância com banco de dados, etc.

Existe algum padrão para manter uma instância usando algum formato declarativo? Categorias, tags, políticas, etc. Pensei que seria bom para nossos usuários técnicos recomendarem mudanças via PR em vez de threads de tópicos e cumprimento manual, mas não vi nenhum plugin ou outra ferramenta “as code” focada na configuração organizacional do Discourse.

4 curtidas

Acho que a expectativa é que os sites usem a categoria pré-definida Site feedback para isso. A descrição dela é: “Discussão sobre este site, sua organização, como ele funciona e como podemos melhorá-lo.”

Essa é uma ideia interessante. Que benefício isso teria em vez de apenas ter usuários sugerindo mudanças em tópicos regulares? O objetivo é ter uma maneira de acompanhar as mudanças que foram feitas na configuração do site ao longo do tempo?

Configurações do site, categorias, tags, políticas, etc., podem ser configurados com a API do Discourse. Seria possível ter um script que gerenciasse a configuração do seu site via API em um repositório git. O script poderia ser executado quando um PR no repositório fosse aceito. Do meu ponto de vista, isso seria mais difícil do que fazer alterações manualmente na configuração do site através da interface do usuário.

2 curtidas

10-4 na Categoria. Por enquanto, eu estava fazendo um crowdsourcing em um padrão existente. Para mim, trata-se de obter o engajamento da comunidade no estilo gitops, então fiquei com este, mas posso transferi-lo para o outro, se ajudar.

E sim, usamos um pouco de configuração como código para muitas coisas, então você obtém o controle de revisão limpo, reversão determinística, revisão clara de alterações, etc. Mudanças baseadas em GUI não são ruins (e é o que fazemos hoje por meio de ciclos de feedback da comunidade), mas é uma operação manual e o contexto da decisão pode se perder com o tempo. E as construções organizacionais existem no meio entre a infraestrutura e o diálogo real, então não é uma coisa de implantação ou reidratação.

E sim, gatilhos baseados em PR (ou mesmo um Issue) podem disparar um runbook que descobre a alteração proposta e executa a operação. Fazer a análise de diff e linting pode ser difícil, é por isso que eu estava investigando para ver se alguém já havia tentado. A solicitação está definitivamente no campo do “bom ter” e só pode ressoar com uma certa demografia.

2 curtidas

Eu (e tenho certeza que nossa comunidade de linguagens de programação) adoraria essa habilidade. Em particular, eu gostaria de poder gerenciar temas, componentes e textos de sites em um repositório do GitHub onde as pessoas possam facilmente enviar pull requests. Configurações gerais do site também seriam boas, mas são essas três coisas que são mais difíceis de manter em uma interface web.

Se isso não for possível hoje — e acho que não é, pelo menos não para uma instância paga/hospedada — isso poderia ser reclassificado como uma solicitação de recurso?

1 curtida

Imediatamente após escrever isso, pensei em verificar a interface do usuário. Parece que isso é possível — pelo menos para criar/importar um tema de um repositório git! Como isso funciona para atualizações? Ele é capaz de puxar novos commits? Encontrei Installing a theme from a private Git repository, mas isso não discute atualizações.

É possível converter um tema ou componente existente para rastrear um repositório git?

Você pode exportar um tema, carregá-lo em um repositório e instalá-lo.

Todos os temas remotos têm uma seção no topo onde você pode decidir se deseja que ele seja atualizado automaticamente quando o Discourse for atualizado. Além disso, há um trabalho em segundo plano que verifica se uma versão mais recente está disponível, e você também pode verificar novas atualizações manualmente. Quando uma nova versão estiver disponível, o botão oferecerá a atualização do componente.

Você também pode encontrar essas informações no guia sobre Installing a theme or theme component.

Caso ainda não o tenha encontrado, há também um tutorial sobre desenvolvimento de temas

3 curtidas

Ótimo, obrigado @Moin! Isso cobre duas grandes fontes de personalização do nosso site.

Eu ainda gostaria muito de usar o git para gerenciar os Textos do Site, já que muitos deles (como as diretrizes e FAQ e afins) são longos, não triviais e podem ser de código aberto para contribuição e revisão da comunidade.

As outras configurações do site seriam boas de ter, mas definitivamente não são tão cruciais.

Geralmente, eles são baseados em um tópico na categoria de staff. Acho que você pode movê-los para uma categoria diferente e tornar a postagem um wiki. Então, seus membros podem editá-los.

Você também pode usar as configurações do site FAQ URL, Privacy policy URL e ToS URL e hospedá-los em outro lugar.

1 curtida

Sim, mas a configuração FAQ URL infelizmente tem outros comportamentos que tornam seu uso muito contraproducente para este propósito.

Apenas para apontar que está claro que já é possível gerenciar conteúdo em controle de versão, dê uma olhada neste tópico, ele é mantido no GitHub:

na parte inferior:

embora eu não tenha certeza se essa funcionalidade já foi lançada ou anunciada (ou se é essa a intenção)

1 curtida

Comecei a mexer em uma ação do GitHub que envia atualizações para a seção site_texts do painel de administração via API. No momento, é bem rudimentar (e está falhando para valores grandes com um 422 por algum motivo), mas é promissor.

Definitivamente precisa de mais trabalho.

1 curtida

Atualmente, não temos planos de lançá-la como uma ferramenta reutilizável. Mas você pode verificar o código da nossa sincronização aqui. Ela se baseia em todas as APIs REST normais do Discourse, incluindo uma consulta do data-explorer (detalhes aqui).

2 curtidas