#!/usr/bin/env bash set -euo pipefail root_dir="$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)" container="${DISCOURSE_CONTAINER:-app}" plugin_path="/var/www/discourse/plugins/itosm-korean-localization" source_path="${DISCOURSE_PLUGIN_SOURCE:-/home/syskiller/discourse-korean-localization}" # 컨테이너만 고치면 재생성할 때 예전 번역으로 돌아갈 수 있으므로 영구 원본에서만 배포합니다. if [[ "$root_dir" != "$(realpath "$source_path")" ]]; then echo "영구 원본 경로에서 배포해야 합니다: $source_path" >&2 exit 1 fi cd "$root_dir" corepack yarn test docker inspect "$container" >/dev/null docker exec "$container" mkdir -p "$plugin_path/config/locales" "$plugin_path/assets" docker cp plugin.rb "$container:$plugin_path/plugin.rb" docker cp config/locales/client.ko.yml "$container:$plugin_path/config/locales/client.ko.yml" docker cp config/locales/server.ko.yml "$container:$plugin_path/config/locales/server.ko.yml" docker cp assets/. "$container:$plugin_path/assets/" docker exec -i "$container" ruby < scripts/patch_boards.rb docker exec -u discourse -e RAILS_ENV=production -w /var/www/discourse "$container" \ bundle exec rake assets:precompile:build_plugins docker exec -u discourse -e RAILS_ENV=production -e SKIP_EMBER_CLI_COMPILE=1 \ -e DONT_PRECOMPILE_CSS=1 -w /var/www/discourse "$container" bundle exec rake assets:precompile # HTTP 응답만 검사하면 번역 플러그인이 빠져도 배포 성공으로 처리됩니다. # 웹 프로세스를 재시작하기 전에 별도 Rails 부팅으로 번역을 검사합니다. DISCOURSE_CONTAINER="$container" bash scripts/verify_deployment.sh --runtime-only docker restart "$container" >/dev/null for attempt in {1..30}; do if curl --silent --fail "${DISCOURSE_URL:-https://forum.itosm.co.kr}" >/dev/null; then DISCOURSE_CONTAINER="$container" bash scripts/verify_deployment.sh echo "Discourse 한국어 보완 배포 완료" exit 0 fi sleep 3 done echo "컨테이너 재시작 뒤 서비스가 정상 상태로 돌아오지 않았습니다." >&2 exit 1