zcuric
(Zdravko)
1
こんにちは、
CI/CD の仕組みでテーマをデプロイする方法について、ご提案はありますか?お客様は 2 週間に 1 回のペースで新しいテーマのリリースを求めており、自動化されたプロセスでテーマをリリースしたいと考えています。Discourse Docker を使用しています。
各リリースごとに手動でのインストールは避けたいと考えています。
余談ですが、バグかどうかはわかりませんが、テーマを初めてインストールした際にブランチが保存されないようです。(確認のために再度チェックする必要があります)
ありがとうございます。
fzngagan
(Faizaan Gagan)
2
すでに機能しています。Git リポジトリ経由でテーマをインストールすれば、ワンクリックで最新コミットにテーマを更新できます。
zcuric
(Zdravko)
3
それは承知していますが、私たちが目指す方法ではありません。
Discourse の管理画面に手を入れずに、動的なプロセスを実現したいと考えています。そこで、以下の themes コマンドを活用できないか考えています。
docker exec -it app rails themes:install -- # theme data
このコマンドがファイルを参照できるかどうかは不明です。例えば、インストール情報を記述した theme.yaml などのファイルがあれば、それを共有フォルダに配置し、docker コマンドがそこから読み取ってテーマをインストールまたは更新できるようにしたいと考えています。
david
(David Taylor)
4
@markvanlan が最近、あなたにとって役立つかもしれない作業を行いました
ここには、コメントに使用情報があります:
zcuric
(Zdravko)
5
@david ありがとうございます。ただし、ファイルのパスを引数として指定できるかどうかは明確ではありません。これは機能するでしょうか?
bin/rake themes:install -- theme.yaml
試してみてもよいかもしれません。
david
(David Taylor)
6
STDIN にパイプする必要があると思います。例えば、
cat theme_config.yml | bin/rake themes:install
ただし、これはまだテストしていません。動作するか確認してくださいね。
zcuric
(Zdravko)
7
あなたのアプローチは問題なく動作します。ありがとうございます!私の場合は動作しません 
themes.rake を少し変更して実験してみました。
rake themes:install themeFile="theme.yml"
そして、以下を追加しました:
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 ? "Invalid JSON input. \n#{ARGV.last}" : "Invalid YML: \n#{theme_args}"
exit 1
end
end
log, counts = ThemesInstallTask.install(theme_args)
puts log
puts
puts "Results:"
puts " Installed: #{counts[:installed]}"
puts " Updated: #{counts[:updated]}"
puts " Errors: #{counts[:errors]}"
if counts[:errors] > 0
exit 1
end
end
問題なく動作します 
このファイルの spec を実行するにはどうすればよいですか?
以下のように実行できるはずです:
bin/rake themes:install theme.yml
JSON の受け渡しにも対応させましたが、このコードは当初、引数として YAML ファイルを受け取るように設計されていました。
zcuric
(Zdravko)
9
無効な JSON 入力であるとエラーが表示されます
Invalid JSON input.
theme.yml
私の theme.yml
test:
url: "https://github.com/discourse/discourse-faria-theme"
それは機能するはずです!なぜもう機能しなくなったのか確認します。
はい、正しい形式は bin/rake themes:install < theme.yml です。コード内でこれをより詳しくドキュメント化します 