Onde guardar o código fonte do importador customizado?

Olá,

Tenho trabalhado em um importador personalizado para poder importar dados do nosso fórum Woltlab para o Discourse. Fiz isso executando o Discourse diretamente na minha máquina de desenvolvimento sem Docker, e agora tenho um monte de arquivos em script/import_scripts/ que contêm meu código de migração. Esses arquivos residem em um fork do repositório oficial do Discourse no GitHub por enquanto.

Gostaria de migrar para uma instalação oficial baseada em Docker agora, mas precisarei que meu código importador esteja disponível na nova instalação por algum tempo, pois a migração precisará ser feita de forma contínua. Se possível, gostaria de manter o código importador em um repositório separado e torná-lo disponível na instalação de produção de forma limpa.

Meu conhecimento de Rails é limitado, então posso estar perdendo uma abordagem óbvia. Alguém pode me indicar a direção certa?

Obrigado!
Hans

3 curtidas

Neste caso, eu sugeriria uma das seguintes opções:

  1. Durante a migração contínua, baseie sua instância no seu fork. Se você quiser incluir novas funcionalidades, basta sincronizar seu fork com o upstream regularmente. Quando a migração for concluída, volte para discourse/discourse

  2. Clone seu repositório fora do docker e copie os arquivos. Faça isso após uma reconstrução, caso contrário, o script de pré-compilação encontrará o repositório sujo e a compilação levará muito mais tempo.

Eu acho que a opção #1 seria a melhor.

4 curtidas

Obrigado, @RGJ! Seguirei por esse caminho.

Alteri a URL do repositório dentro do contêiner docker e consegui executar meu importador. No entanto, quando executei ./launcher rebuild app, o repositório foi redefinido para o upstream. Analisei o Dockerfile e ele parece codificar o caminho do repositório, mas também não parece que o contêiner base seja construído localmente, então as alterações no Dockerfile não têm o efeito desejado. Existe alguma maneira sancionada de fazer isso funcionar?

Sugiro trabalhar com dois contêineres. Você pode fazer isso criando uma cópia do seu arquivo app.yml atual (você pode encontrá-lo em /var/discourse/containers) e renomeando-o para algo como import.yml. Em seguida, atualize o parâmetro version para o seu branch de importação personalizado.

params:
  version: seu-branch

Sempre que precisar executar a importação, pare o contêiner app, inicie o contêiner import e execute o script dentro do contêiner import. Se alterações significativas foram feitas no Discourse, você pode precisar fazer rebase do seu branch com o último commit do core e reconstruir o contêiner.

cd /var/discourse
./launcher enter import

# quer mudar para um branch diferente?
su discourse -c 'git checkout <branch>'

# quer puxar novo código?
su discourse -c 'git pull'

Assim que terminar a migração, pare o contêiner de importação e reinicie o contêiner do aplicativo.

cd /var/discourse
./launcher stop import
./launcher start app

Créditos a @gerhard que me ensinou a fazer tudo isso :backhand_index_pointing_up:

6 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.