fix: use ROOT_PASSWORD with default fallback instead of PASSWORD in run.sh#635
Merged
vharseko merged 2 commits intocopilot/update-dockerfile-cddl-headerfrom Apr 10, 2026
Conversation
Agent-Logs-Url: https://github.com/OpenIdentityPlatform/OpenDJ/sessions/6698e747-e39a-44ca-9fb2-dc2907d542c7 Co-authored-by: vharseko <6818498+vharseko@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Fix root password handling in run.sh
fix: use ROOT_PASSWORD with default fallback instead of PASSWORD in run.sh
Apr 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Removing
ENV ROOT_PASSWORD="password"from Dockerfiles (PR #633) left$ROOT_PASSWORDunset at runtime when no-e ROOT_PASSWORD=...is passed.bootstrap/setup.shand HEALTHCHECK reference$ROOT_PASSWORDdirectly, causing setup to fail with "You must provide the password of the Root User".Change
opendj-packages/opendj-docker/run.sh— replace the$PASSWORDintermediate variable with a direct export of$ROOT_PASSWORD:$ROOT_PASSWORDis now always set with"password"as fallback, making it available to all child scripts (setup.sh,replicate.sh, HEALTHCHECK) without any further changes$PASSWORDvariableOriginal prompt
Problem
PR #633 removed
ENV ROOT_PASSWORD="password"from the Dockerfiles, butbootstrap/setup.shand other scripts reference$ROOT_PASSWORDdirectly. When the container starts without-e ROOT_PASSWORD=...,$ROOT_PASSWORDis empty, causing:Root Cause
In
opendj-packages/opendj-docker/run.sh, line 45-46 currently read:The fallback value is stored in
$PASSWORD, butbootstrap/setup.sh(and HEALTHCHECK) use$ROOT_PASSWORD— which is now empty since theENVwas removed from the Dockerfile.Required Fix
In
opendj-packages/opendj-docker/run.sh, replace these two lines (lines 45-46):with just:
This ensures:
$ROOT_PASSWORDis always set with a default fallback of"password"— fixingsetup.shand all other scripts that reference it$PASSWORDvariable is removedNo other files need changes —
setup.sh, HEALTHCHECK, and all other consumers already use$ROOT_PASSWORD.The following is the prior conversation context from the user's chat exploration (may be truncated):
User: проанализируй почему после измнения тест buid.yml перестал проходить
Assistant: Логи очень длинные и содержат в основном Docker registry debug-логи. Мне нужно увидеть именно ту часть, где тест фактически падает. Давайте посмотрим workflow файл и найдём конкретную ошибку.
Assistant: Now let me look at the
run.shto understand howROOT_PASSWORDis used at container startup:Assistant: Now let me look at the actual failing job more closely to understand the specific error:
Assistant: Логи показывают только push-процесс Docker-образов в локальный registry — это нормальное поведение (blob unknown → create → move). Нужно посмотреть на фактическую ошибку шага
Docker test, где запускается контейнер. Давайте посмотрим, какие конкретно джобы упали:Assistant: Let me look at the specific failing step more closely. The logs are from the Docker build/push/test step. Let me check what the actual failure point is.
Assistant: ## Анализ падения build.yml в PR #633
Вывод: Изменения в PR #633 НЕ являются причиной падения теста. Тест
build-docker-alpineпадает по той же причине, что и наmaster.Что изменилось в PR
PR вносит 3 изменения в Dockerfile-ы:
ENV ROOT_PASSWORD="password"— заменён на комментарий--bindPassword $ROOT_PASSWORD→--bindPassword "${ROOT_PASSWORD:-password}"Почему тест НЕ сломан этими изменениями
Посмотрим на
run.sh(entrypoint контейнера):Скрипт
run.shпри setup использует${ROOT_PASSWORD:-password}, то есть еслиROOT_PASSWORDне задан, используется"password". Аналогично, HEALTHCHECK в новом Dockerfile тоже использует${ROOT_PASSWORD:-password}. Таким образом, поведение контейнера идентично — пароль по умолчанию"password"сохраняется через shell-подстановку.Реальная причина падения
Сравнивая логи текущего прогона (PR #633) и предыдущего успешного прогона на
master(от 2026-04-02), видно абсолютно одинаковую картину — это логи Docker Registry service container, а не ошибки самих тестов:"blob unknown to registry"— нормальные сообщения при multi-platformdocker pushв локальный registry (blob проверяется HEAD, не найден, затем загружается POST/PUT — это стандартное поведение)"manifest unknown"— аналогично, манифесты создаются после push всех слоёвЭти
ERROR-уровни в логах registry — штатная работа Docker Registry при push, а не реальные ошибки сборки.Что реально вызвало
conclusion: failureWorkflow run
24241617156имеетrun_attempt: 2— это был re-run. Наиболее вероятные причины падения:build-maven(матрица из 15 комбинаций Java × OS) — любой таймаут или нестабильный тест в одной из комбинаций роняет весь workflowРекомендация
Изменения в Dockerfile корректны и не влияют на тесты. Стоит перезапустить (re-run) failed jobs — если они пройдут, это подтвердит, что причина была в нестабильности инфраструктуры, а не в коде PR.
User: протестируй сборку и запуск dockerfile сам
Assistant: К сожалению, я не могу запустить Docker-контейнеры или выполнять команды на сер...
This pull request was created from Copilot chat.