zcuric
(Zdravko)
21 Aprile 2020, 9:30am
1
Ciao,
avete qualche suggerimento su come gestire il deployment dei temi in modo CI/CD? Il cliente si aspetta nuove release del tema ogni due settimane e vorremmo distribuire il tema tramite un processo automatizzato. Stiamo utilizzando Discourse Docker.
Vorremmo evitare l’installazione manuale per ogni release.
Nota a margine: non so se si tratti di un bug, ma sembra che il branch non venga salvato durante la prima installazione del tema. (Devo verificare ulteriormente per confermarlo)
Grazie
fzngagan
(Faizaan Gagan)
21 Aprile 2020, 9:52am
2
È già previsto. Se installi un tema tramite un repository Git, puoi aggiornare il tema all’ultimo commit con un singolo clic.
zcuric
(Zdravko)
21 Aprile 2020, 10:09am
3
Lo so, ma non è il modo in cui vogliamo procedere.
Vogliamo avere un processo dinamico senza toccare l’amministratore di Discourse. Stavo pensando di usare il comando dei temi discourse/lib/tasks/themes.rake at main · discourse/discourse · GitHub
docker exec -it app rails themes:install -- # dati del tema
Non so se questo comando possa leggere file. Ad esempio, un file theme.yaml che conterrebbe le informazioni sul tema per l’installazione.
Quel file potrebbe essere distribuito in una cartella condivisa e il comando docker potrebbe leggerlo da lì per installare il tema o apportare aggiornamenti.
david
(David Taylor)
21 Aprile 2020, 10:19am
4
@markvanlan ha recentemente svolto un lavoro che potrebbe esserti utile
committed 02:17PM - 14 Apr 20 UTC
Trovi alcune informazioni sull’utilizzo nei commenti qui:
#
# 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)
21 Aprile 2020, 10:24am
5
@david grazie, ma non mi è chiaro se posso passare il percorso del file come argomento. Funzionerebbe questo?
bin/rake themes:install -- theme.yaml
Forse potrei provare.
david
(David Taylor)
21 Aprile 2020, 10:29am
6
Credo che dovresti inviarlo in STDIN, quindi qualcosa come
cat theme_config.yml | bin/rake themes:install
Ma non l’ho ancora provato. Fammi sapere se funziona per te
zcuric
(Zdravko)
21 Aprile 2020, 11:21am
7
Il tuo approccio funziona perfettamente. Grazie! Il mio no.
Ho fatto qualche esperimento modificando themes.rake aggiungendo
rake themes:install themeFile="theme.yml"
E questo:
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 ? "Input JSON non valido. \n#{ARGV.last}" : "YML non valido: \n#{theme_args}"
exit 1
end
end
log, counts = ThemesInstallTask.install(theme_args)
puts log
puts
puts "Risultati:"
puts " Installati: #{counts[:installed]}"
puts " Aggiornati: #{counts[:updated]}"
puts " Errori: #{counts[:errors]}"
if counts[:errors] > 0
exit 1
end
end
Funziona perfettamente.
Come si eseguono i test per questo file?
Dovresti essere in grado di fare questo:
bin/rake themes:install theme.yml
Ho aggiunto il supporto per l’inserimento di JSON, ma questo codice è stato originariamente progettato per accettare un file yml come argomento.
zcuric
(Zdravko)
21 Aprile 2020, 12:30pm
9
Segnala che non è un JSON valido
Input JSON non valido.
theme.yml
Il mio theme.yml
test:
url: "https://github.com/discourse/discourse-faria-theme"
Credo che dovrebbe funzionare! Controllerò perché non funziona più.
Ok, il formato corretto è bin/rake themes:install < theme.yml. Lo documenterò meglio nel codice
zcuric
(Zdravko)
21 Aprile 2020, 1:14pm
12
Bene! Grazie! Sono felice di aver potuto dare una mano