안녕하세요,
CI/CD 방식으로 테마 배포를 어떻게 접근해야 할지 조언을 구합니다. 클라이언트는 2주마다 새로운 테마 릴리스를 기대하고 있으며, 우리는 자동화된 프로세스로 테마를 배포하고 싶습니다. 현재 discourse docker를 사용하고 있습니다.
각 릴리스마다 수동 설치를 피하고 싶습니다.
참고로, 이것이 버그인지 모르겠지만, 첫 번째 테마 설치 시 브랜치가 저장되지 않는 것 같습니다. (확인해봐야겠습니다)
감사합니다
안녕하세요,
CI/CD 방식으로 테마 배포를 어떻게 접근해야 할지 조언을 구합니다. 클라이언트는 2주마다 새로운 테마 릴리스를 기대하고 있으며, 우리는 자동화된 프로세스로 테마를 배포하고 싶습니다. 현재 discourse docker를 사용하고 있습니다.
각 릴리스마다 수동 설치를 피하고 싶습니다.
참고로, 이것이 버그인지 모르겠지만, 첫 번째 테마 설치 시 브랜치가 저장되지 않는 것 같습니다. (확인해봐야겠습니다)
감사합니다
이미 해당 기능이 있습니다. 테마를 git 저장소에서 설치한 경우, 한 번의 클릭으로 테마를 최신 커밋으로 업데이트할 수 있습니다.
그 점은 알지만, 우리가 원하는 방식은 아닙니다.
discourse admin에 손대지 않고 동적 프로세스를 구축하고 싶습니다. themes 명령어를 사용하는 방안을 고려하고 있습니다: discourse/lib/tasks/themes.rake at main · discourse/discourse · GitHub
docker exec -it app rails themes:install -- # theme data
이 명령어가 파일을 읽을 수 있는지 모르겠습니다. 예를 들어, 설치할 테마의 정보를 포함하는 theme.yaml 파일 같은 경우 말이죠.
해당 파일을 공유 폴더에 배포하고, docker 명령어가 그곳에서 파일을 읽어 테마를 설치하거나 업데이트할 수 있을 것입니다.
@markvanlan 님이 최근 진행하신 작업이 도움이 될 수 있을 것 같습니다.
여기 코드의 주석에 사용법이 나와 있습니다:
@david 감사합니다. 하지만 파일 경로를 인수로 전달할 수 있는지는 명확하지 않습니다. 이렇게 하면 동작할까요?
bin/rake themes:install -- theme.yaml
한번 시도해 볼 수도 있겠네요.
STDIN으로 파이프하는 방식일 것 같습니다. 예를 들어 다음과 같이 사용할 수 있습니다.
cat theme_config.yml | bin/rake themes:install
하지만 직접 테스트해 보지는 않았습니다. 잘 작동하는지 알려주세요 ![]()
제안하신 방식은 잘 작동합니다. 감사합니다! 제 방식은 작동하지 않아요. ![]()
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을 전달하도록 지원하도록 추가했지만, 이 코드는 원래 yml 파일을 인수로 받도록 설계되었습니다.
잘못된 JSON이라고 오류가 발생합니다.
Invalid JSON input.
theme.yml
제 theme.yml 파일 내용입니다.
test:
url: "https://github.com/discourse/discourse-faria-theme"
이것은 동작해야 합니다! 왜 더 이상 작동하지 않는지 확인해 보겠습니다.
좋아요, 올바른 형식은 bin/rake themes:install < theme.yml입니다. 코드에 이 부분을 더 잘 문서화하겠습니다 ![]()
좋아요! 감사합니다! 조금이나마 도움이 되어 기쁩니다 ![]()