J'essaie d'exécuter certaines tâches dans une application Django sur Jenkins. Django ne parvient pas à se connecter à la base de données MySQL sur Jenkins (qui est sur un mac). Je devrais noter que tout fonctionne bien localement. Je vais partager certaines de mes paramètres:django.db.utils.OperationalError: (2026, 'Erreur de connexion SSL: Impossible d'obtenir le certificat')
bases de données de paramètres
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '<myhost>',
'NAME': '<myname>',
'USER': '<myuser>',
'OPTIONS': {
'ssl': {
'ca': os.environ.get('SSL_CA_CERT_PATH'),
'cert': os.environ.get('SSL_CLIENT_CERT_PATH'),
'key': os.environ.get('SSL_CLIENT_KEY_PATH')
}
}
}
}
Les variables d'environnement pour les chemins de cert semblent effectivement travailler que je trouve bizarre. Je déboguée avec les commandes de python suivantes dans mes paramètres et il fait imprimer les résultats attendus (chemins de fichiers et le contenu du fichier):
print(os.environ.get('SSL_CA_CERT_PATH'))
txt_opn = open(str(os.environ.get('SSL_CA_CERT_PATH')))
print(txt_opn.read())
print(os.environ.get('SSL_CLIENT_CERT_PATH'))
txt_opn = open(str(os.environ.get('SSL_CLIENT_CERT_PATH')))
print(txt_opn.read())
print(os.environ.get('SSL_CLIENT_KEY_PATH'))
txt_opn = open(str(os.environ.get('SSL_CLIENT_KEY_PATH')))
print(txt_opn.read())
Message d'erreur
django.db.utils.OperationalError: (2026, 'SSL connection error: Unable to get certificate')
j'ai les certs en un dossier partagé et chmod 777 tout. Je n'ai pas la permission de chown à mysql: mysql cependant, même avec sudo:
Sorry, user <myuser> is not allowed to execute '/usr/sbin/chown mysql:mysql client-cert.pem' as root on <myhost>.
Enfin, dans le cas où est il est pertinent, voici ce que je suis en cours d'exécution en tant que script shell de jenkins pour lancer des tâches. Il est évident que de nombreux paramètres jenkins invisibles sont utilisés ici. Les réglages sont juste mes - réglages, et tout le reste est assez explicite.
Jenkins Shell Script
export SSL_CA_CERT_PATH=$SSL_CA_CERT_PATH
export SSL_CLIENT_CERT_PATH=$SSL_CLIENT_CERT_PATH
export SSL_CLIENT_KEY_PATH=$SSL_CLIENT_KEY_PATH
echo "Making Virtual Environment..."
/usr/local/bin/virtualenv venv
source ./venv/bin/activate
echo "Installing Requirements..."
pip install -r requirements.txt --process-dependency-links
echo "Making Migrations..."
python manage.py makemigrations $SETTINGS
echo "Migrating Database Schema..."
python manage.py migrate $SETTINGS
echo "Running Jobs..."
IFS=',' read -r -a jobs_array <<< "$JOBS"
for JOB in "${jobs_array[@]}"
do
if [ "$GROUPED" = true ]; then
echo "Preparing to start Job Group $JOB..."
python manage.py runjobs $JOB $SETTINGS
else
echo "Preparing to start $JOB job..."
python manage.py runjob $JOB $SETTINGS
fi
done
echo "Jobs Completed!"
je cherche une réponse loin et ont encore été en mesure de trouver quelque chose qui fonctionne. Quelqu'un at-il une solution à ce problème?