Où conserver la source de l'importateur personnalisé ?

Salut,

Je travaille sur un importateur personnalisé pour importer des données de notre forum Woltlab dans Discourse. Je l’ai fait en exécutant Discourse directement sur ma machine de développement sans Docker, et j’ai maintenant un tas de fichiers dans script/import_scripts/ qui contiennent mon code de migration. Ces fichiers résident pour l’instant dans un fork du dépôt GitHub officiel de Discourse.

J’aimerais migrer vers une installation officielle basée sur Docker maintenant, mais j’aurai besoin que mon code d’importateur soit disponible dans la nouvelle installation pendant un certain temps, car la migration devra être effectuée de manière progressive. Si possible, j’aimerais conserver le code d’importateur dans un dépôt séparé et le rendre disponible dans l’installation de production de manière propre.

Mes connaissances de Rails sont limitées, donc je pourrais manquer une approche évidente. Quelqu’un peut-il m’indiquer la bonne direction ?

Merci !
Hans

3 « J'aime »

Dans ce cas, je suggérerais l’une des options suivantes :

  1. pendant la migration progressive, basez votre instance sur votre fork. Si vous souhaitez inclure de nouvelles fonctionnalités, synchronisez simplement votre fork avec l’upstream régulièrement. Une fois la migration terminée, revenez à discourse/discourse

  2. clonez votre dépôt en dehors de docker et copiez les fichiers à l’intérieur. Faites-le après une reconstruction, sinon le script de précompilation trouvera le dépôt non propre et la construction prendra beaucoup plus de temps.

Je pense que la #1 serait la meilleure.

4 « J'aime »

Merci, @RGJ ! Je vais suivre cette voie.

J’ai modifié l’URL du dépôt à l’intérieur du conteneur Docker et j’ai pu exécuter mon importateur. Cependant, lorsque j’ai exécuté ./launcher rebuild app, le dépôt a été réinitialisé à l’amont. J’ai examiné le Dockerfile et il semble coder en dur le chemin du dépôt, mais il ne semble pas non plus que le conteneur de base soit construit localement, de sorte que les modifications apportées au Dockerfile n’ont pas l’effet désiré. Existe-t-il un moyen autorisé pour que cela fonctionne ?

Je suggère de travailler avec deux conteneurs. Vous pouvez le faire en créant une copie de votre fichier app.yml actuel (vous pouvez le trouver dans /var/discourse/containers) et en le renommant en quelque chose comme import.yml. Ensuite, mettez à jour le paramètre version vers votre branche d’importation personnalisée.

params:
  version: your-branch

Chaque fois que vous avez besoin d’exécuter l’importation, arrêtez le conteneur app, démarrez le conteneur import et exécutez le script à l’intérieur du conteneur import. Si des changements importants ont été apportés à Discourse, vous devrez peut-être rebaser votre branche avec le dernier commit du cœur et reconstruire le conteneur.

cd /var/discourse
./launcher enter import

# vous voulez passer à une autre branche ?
su discourse -c 'git checkout <branch>'

# vous voulez récupérer du nouveau code ?
su discourse -c 'git pull'

Une fois que vous avez terminé la migration, arrêtez le conteneur d’importation et redémarrez le conteneur d’application.

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

Crédits à @gerhard qui m’a appris à faire tout cela :backhand_index_pointing_up:

6 « J'aime »

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