fix: Do not generate random password on Helm upgrade
Some checks failed
Helm Chart Release / release-chart (push) Failing after 11s
Update Docker Images and Helm Chart / update (push) Successful in 16s

Previously, when WP_ADMIN_PASSWORD was empty, the init container would
generate a random password and update the Secret. However, Helm upgrades
would start fresh containers and regenerate a new random password, causing
the Secret to not match WordPress's actual admin password.

Changes:
- Remove random password generation logic
- Require WP_ADMIN_PASSWORD to be explicitly set in values.yaml
- Exit with error if password is not provided during installation
- Only install WordPress once when database tables don't exist
- During upgrades, no installation occurs so password remains unchanged

This ensures:
1. Initial deployment: Admin must set WP_ADMIN_PASSWORD in values.yaml
2. Helm upgrades: No password changes occur (WordPress unchanged)
3. Helm rollbacks: Original password still works
4. Secret consistency: Secret always matches WordPress's actual password

Important for users:
- Initial deployment requires WP_ADMIN_PASSWORD in values.yaml
- If not provided, installation will fail with clear error message
- This prevents the password mismatch issue on upgrades

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-12 18:31:03 +09:00
parent 6d456aa4ad
commit b8ed763062

View File

@@ -146,9 +146,9 @@ spec:
echo "=== Starting WordPress Installation ===" echo "=== Starting WordPress Installation ==="
if [ -z "$WP_ADMIN_PASSWORD" ]; then if [ -z "$WP_ADMIN_PASSWORD" ]; then
WP_ADMIN_PASSWORD=$(tr -dc 'A-Za-z0-9!@#$%^&*' < /dev/urandom | head -c 16) echo "ERROR: WP_ADMIN_PASSWORD is not set. WordPress installation requires an admin password."
echo "Generated admin password: $WP_ADMIN_PASSWORD" echo "Skipping WordPress installation. Please set WP_ADMIN_PASSWORD in values.yaml"
echo "$WP_ADMIN_PASSWORD" > /var/www/html/wp-content/.initial-admin-password exit 1
fi fi
INSTALL_URL="http://127.0.0.1" INSTALL_URL="http://127.0.0.1"
@@ -164,9 +164,7 @@ spec:
echo "=== WordPress Installation Completed ===" echo "=== WordPress Installation Completed ==="
echo "Admin User: $WP_ADMIN_USER" echo "Admin User: $WP_ADMIN_USER"
if [ -f /var/www/html/wp-content/.initial-admin-password ]; then echo "Admin password was set from values.yaml"
echo "Admin Password: $(cat /var/www/html/wp-content/.initial-admin-password)"
fi
else else
echo "WordPress is already installed, skipping installation" echo "WordPress is already installed, skipping installation"
if [ -f /tmp/wp-cli.phar ]; then if [ -f /tmp/wp-cli.phar ]; then