Files
syskiller 5bad207526 포럼 한국어 번역 플러그인을 복구하고 배포 검사를 보강
비어 있던 운영 플러그인 경로를 전용 서비스 원본으로 복구했다.
음성 입장 안내와 주변 메뉴 및 관리자 번역을 실제 화면에서 확인했다.
관리자 주소용 내부 이름을 보존하고 보드 메뉴 두 곳의 제목을 복구했다.

검사: Ruby 문법과 YAML 11개 통과. 활성 번역 6004개와 음성 번역 561개 누락 0개.
일반 화면과 관리자 번역 및 보드 자산의 제공 해시를 확인했다.
PC와 390픽셀 모바일 안내창 및 관리자 메뉴 주소를 확인했다.
운영: app 컨테이너만 갱신. DB 구조 변경과 데이터 이전 없음.
백업: /var/discourse/shared/standalone/backups/forum-korean-20261015-1150
설정 백업은 별도 비밀 디렉터리의 권한 600 파일로 보관했다.
제한: DB 복원 시험과 다음 컨테이너 재생성은 이번 검사에 포함하지 않았다.
Trilium: Ubuntu 서버 운영 아래 Discourse 한국어 배포에 기록했다.
2026-10-14 22:44:52 +00:00

46 lines
2.1 KiB
Bash

#!/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