zcuric
(Zdravko)
Avril 21, 2020, 9:30
1
Bonjour,
Avez-vous des suggestions sur la manière d’aborder le déploiement de thèmes dans une démarche CI/CD ? Le client s’attend à de nouvelles versions de thèmes toutes les deux semaines, et nous souhaiterions les livrer via un processus automatisé. Nous utilisons Discourse Docker.
Nous aimerions éviter l’installation manuelle à chaque version.
Petite note : je ne sais pas s’il s’agit d’un bug, mais il semble que la branche ne soit pas enregistrée lors de la première installation du thème. (Je dois vérifier cela pour confirmer.)
Merci.
fzngagan
(Faizaan Gagan)
Avril 21, 2020, 9:52
2
Cela existe déjà. Si vous installez un thème via un dépôt Git, vous pouvez mettre à jour le thème vers le dernier commit en un seul clic.
zcuric
(Zdravko)
Avril 21, 2020, 10:09
3
Je le sais, mais ce n’est pas la méthode que nous souhaitons adopter.
Nous voulons un processus dynamique sans toucher à l’administrateur Discourse. J’envisage d’utiliser la commande des thèmes discourse/lib/tasks/themes.rake at main · discourse/discourse · GitHub
docker exec -it app rails themes:install -- # données du thème
Je ne sais pas si cette commande peut lire des fichiers. Par exemple, un fichier theme.yaml contenant les informations du thème pour l’installation.
Ce fichier pourrait être déployé dans un dossier partagé, et la commande Docker pourrait le lire depuis cet emplacement pour installer le thème ou effectuer des mises à jour.
david
(David Taylor)
Avril 21, 2020, 10:19
4
@markvanlan a récemment effectué un travail qui pourrait vous être utile
committed 02:17PM - 14 Apr 20 UTC
Vous trouverez des informations sur son utilisation dans les commentaires ici :
#
# 2 different formats are accepted:
#
# == JSON format
#
# bin/rake themes:install -- '--{"discourse-something": "https://github.com/discourse/discourse-something"}'
# OR
# bin/rake themes:install -- '--{"discourse-something": {"url": "https://github.com/discourse/discourse-something", default: true}}'
#
# == YAML file formats
#
# theme_name: https://github.com/example/theme.git
# OR
# theme_name:
# url: https://github.com/example/theme_name.git
# branch: "master"
# private_key: ""
# default: false
# add_to_all_themes: false # only for components - install on every theme
#
This file has been truncated. show original
zcuric
(Zdravko)
Avril 21, 2020, 10:24
5
@david merci, mais ce n’est pas très clair pour moi de savoir si je peux passer le chemin d’un fichier comme argument. Est-ce que cela fonctionnerait ?
bin/rake themes:install -- theme.yaml
Je pourrais peut-être essayer.
david
(David Taylor)
Avril 21, 2020, 10:29
6
Je pense que vous devrez le rediriger vers STDIN, donc quelque chose comme
cat theme_config.yml | bin/rake themes:install
Mais je n’ai pas testé cela. Faites-nous savoir si cela fonctionne pour vous
zcuric
(Zdravko)
Avril 21, 2020, 11:21
7
Votre approche fonctionne parfaitement. Merci ! La mienne, non.
J’ai un peu expérimenté en modifiant themes.rake en ajoutant
rake themes:install themeFile="theme.yml"
Et ceci :
task "themes:install" => :environment do |task, args|
if ENV['themeFile']
theme_args = YAML.load_file(ENV['themeFile'])
else
theme_args = (STDIN.tty?) ? '' : STDIN.read
use_json = theme_args == ''
theme_args =
begin
use_json ? JSON.parse(ARGV.last.gsub('--', '')) : YAML::load(theme_args)
rescue
puts use_json ? "Entrée JSON invalide. \n#{ARGV.last}" : "YML invalide : \n#{theme_args}"
exit 1
end
end
log, counts = ThemesInstallTask.install(theme_args)
puts log
puts
puts "Résultats :"
puts " Installés : #{counts[:installed]}"
puts " Mis à jour : #{counts[:updated]}"
puts " Erreurs : #{counts[:errors]}"
if counts[:errors] > 0
exit 1
end
end
Ça fonctionne bien.
Comment lancer les tests pour ce fichier ?
Vous devriez pouvoir faire ceci :
bin/rake themes:install theme.yml
J’ai ajouté la prise en charge du passage de JSON, mais ce code a été conçu à l’origine pour accepter un fichier yml comme argument.
zcuric
(Zdravko)
Avril 21, 2020, 12:30
9
Il indique que ce n’est pas un JSON valide
Entrée JSON invalide.
theme.yml
Mon theme.yml
test:
url: "https://github.com/discourse/discourse-faria-theme"
Je pense que cela devrait fonctionner ! Je vais vérifier pourquoi cela ne fonctionne plus.
D’accord, le bon format est bin/rake themes:install < theme.yml. Je vais mieux documenter cela dans le code
zcuric
(Zdravko)
Avril 21, 2020, 1:14
12
Super ! Merci ! Ravi d’avoir pu aider un peu