Automação de temas

Olá a todos, sou novo aqui :slight_smile:
Estou executando uma versão Dockerizada do bitnami Discourse (a mais recente) em um cluster Kubernetes, parece ser um ótimo projeto. No entanto, estou enfrentando um tipo de problema ao tentar automatizar a instalação de um tema. Essencialmente, preciso construir, implantar, executar e configurar esta imagem Docker a partir de um CICD, para que tudo esteja pronto no primeiro login. Sobre as configurações, há a instalação do tema personalizado. Pelo que pude entender de vários fóruns e documentações, não há uma maneira nativa de instalá-lo programaticamente, encontrei apenas um guia passo a passo (corrija-me se estiver errado, por favor).

Minha primeira ideia foi adicionar os arquivos do tema “manualmente” no sistema de arquivos do Discourse via k8s, mas, pelo que vejo, o Discourse gerencia seus arquivos de uma maneira estranha, renomeando-os de acordo com sua própria lógica interna e tornando impossível prever.

Olhando com mais detalhes, encontrei esta ótima CLI chamada discourse_theme, o problema aqui é que eu ainda precisaria gerar uma chave de API do Discourse primeiro, caso contrário, ela não funcionará (novamente… corrija-me se estiver errado).
Então, no final, tenho algumas perguntas:
Primeiro, existe uma maneira diferente/nativa de instalar programaticamente um tema no Discourse que eu perdi?
E, por outro lado, existe uma maneira de obter uma chave de API do Discourse a partir de um script?
E, no final, alguém conhece algum truque do Kubernetes para contornar esse tipo de problema?

Muito obrigado desde já
Atenciosamente

Isso é suportado ao usar nosso método de instalação oficial: Install a Theme programatically

1 curtida

Eu acho que a única solução é construir uma imagem que inclua os plugins que você deseja, enviá-la para um repositório docker, iniciá-la com as variáveis de ambiente apropriadas e, em algum momento, ver que o banco de dados foi migrado e os assets foram pré-compilados e enviados para o S3 na (pelo menos) primeira vez que a imagem for executada. Você pode querer migrar uma vez com SKIP_POST_DEPLOYMENT_MIGRATIONS definido enquanto a imagem antiga estiver em execução e, em seguida, novamente após a nova imagem ter sido iniciada e as antigas terem sido desligadas com SKIP_POST_DEPLOYMENT_MIGRATIONS desativado ou executar a tarefa rake db:ensure_post_migrations.

Você pode executar uma tarefa rake em uma de suas imagens em execução, algo como

rake api_key:create_master[‘descrição da chave’]

O acima pode ser suficiente para você avançar um pouco. Já executei instâncias kubernetes para clientes no GCP e AWS no passado. Nunca fiquei 100% satisfeito com o funcionamento (funcionou perfeitamente da perspectiva do cliente, apenas não foi muito elegante da minha, mas também não foi tão inelegante que eu me incomodasse em consertar!). Não tenho muito mais a oferecer aqui, mas sinta-se à vontade para me contatar diretamente se precisar de mais ajuda.

1 curtida