zcuric
(Zdravko)
21 Abril, 2020 09:30
1
Hola,
¿Tienen alguna sugerencia sobre cómo abordar la implementación de temas de manera CI/CD? El cliente espera nuevas versiones del tema cada dos semanas y nos gustaría lanzar el tema en un proceso automatizado. Estamos utilizando Discourse Docker.
Nos gustaría evitar la instalación manual para cada lanzamiento.
Nota al margen: no sé si esto es un error, pero parece que la rama no se guarda en la primera instalación del tema. (Necesito verificarlo para confirmarlo)
Gracias
2 Me gusta
fzngagan
(Faizaan Gagan)
21 Abril, 2020 09:52
2
Ya está disponible. Si instalas un tema a través de un repositorio Git, puedes actualizar el tema a la última confirmación con un solo clic.
zcuric
(Zdravko)
21 Abril, 2020 10:09
3
Lo sé, pero no es así como queremos hacerlo.
Queremos tener un proceso dinámico sin tocar el administrador de Discourse. Estaba pensando en usar el comando de temas discourse/lib/tasks/themes.rake at main · discourse/discourse · GitHub
docker exec -it app rails themes:install -- # datos del tema
No sé si este comando puede leer archivos. Por ejemplo, un archivo theme.yaml que contenga la información del tema para la instalación.
Ese archivo podría desplegarse en una carpeta compartida y el comando de docker podría leerlo desde allí e instalar el tema o realizar actualizaciones.
david
(David Taylor)
21 Abril, 2020 10:19
4
@markvanlan recientemente realizó algunos trabajos que podrían serle útiles
committed 02:17PM - 14 Apr 20 UTC
Hay información sobre su uso en los comentarios aquí:
#
# 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
8 Me gusta
zcuric
(Zdravko)
21 Abril, 2020 10:24
5
@david gracias, pero no me queda claro si puedo pasar la ruta del archivo como argumento. ¿Funcionaría esto?
bin/rake themes:install -- theme.yaml
Quizás pueda intentarlo.
david
(David Taylor)
21 Abril, 2020 10:29
6
Creo que deberías redirigirlo a STDIN, algo así como
cat theme_config.yml | bin/rake themes:install
Pero no lo he probado. Avísanos si funciona para ti
6 Me gusta
zcuric
(Zdravko)
21 Abril, 2020 11:21
7
Tu enfoque funciona perfectamente. ¡Gracias! El mío no.
Hice algunas pruebas modificando themes.rake añadiendo
rake themes:install themeFile="theme.yml"
Y esto:
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 ? "Entrada JSON inválida. \n#{ARGV.last}" : "YML inválido: \n#{theme_args}"
exit 1
end
end
log, counts = ThemesInstallTask.install(theme_args)
puts log
puts
puts "Resultados:"
puts " Instalados: #{counts[:installed]}"
puts " Actualizados: #{counts[:updated]}"
puts " Errores: #{counts[:errors]}"
if counts[:errors] > 0
exit 1
end
end
Funciona bien.
¿Cómo se ejecutan las pruebas para este archivo?
1 me gusta
Deberías poder hacer esto:
bin/rake themes:install theme.yml
Añadí soporte para pasar JSON, pero este código fue diseñado originalmente para recibir un archivo yml como argumento.
2 Me gusta
zcuric
(Zdravko)
21 Abril, 2020 12:30
9
Lanza que no es un JSON válido
Entrada JSON no válida.
theme.yml
Mi theme.yml
test:
url: "https://github.com/discourse/discourse-faria-theme"
2 Me gusta
¡Creo que debería funcionar! Investigaré por qué ya no funciona.
2 Me gusta
Está bien, el formato correcto es bin/rake themes:install < theme.yml. Documentaré esto mejor en el código
15 Me gusta
zcuric
(Zdravko)
21 Abril, 2020 13:14
12
¡Genial! ¡Gracias! Me alegra haber podido ayudar un poco
4 Me gusta