2017-09-18 3 views
0

JenkinsのDjangoアプリケーションでいくつかのタスクを実行しようとしています。 DjangoはJenkinsのMySQLデータベースに接続できません(これはMac上にあります)。すべてがローカルでうまく動作することに注意してください。私は私の設定の一部を共有するつもりです:セッティングdjango.db.utils.OperationalError:(2026、 'SSL接続エラー:証明書を取得できません')

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') 
       } 
      } 
     } 
    } 

から

データベース証明書パスの環境変数は、実際に私は奇妙見つけた動作するようには思えません。私は私の設定で次のPythonコマンドでデバッグしている、それが期待される結果(ファイルパスとファイルの内容)をプリントアウトん:

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()) 

エラーメッセージ

django.db.utils.OperationalError: (2026, 'SSL connection error: Unable to get certificate') 

を私が本命で持っています共有フォルダとchmod 777のすべて。私は権限を持っていないとのchownへのmysql:

Sorry, user <myuser> is not allowed to execute '/usr/sbin/chown mysql:mysql client-cert.pem' as root on <myhost>. 

最後に、ここでは、それが関連している私は、タスクのキックするジェンキンスシェルスクリプトとして実行していますどのような場合には:でもsudoのと、しかし、mysqlの。ここでは、目に見えないジェンキンのパラメータが多数使用されています。設定はちょうど私の--settingsであり、その他のものはかなり自明です。

ジェンキンスシェルスクリプト

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!" 

私は広範囲に答えを探していると、まだ働く何かを見つけることができました。誰にもこの問題の解決策がありますか?

答えて

0

将来的に誰かを助ける場合に備えて私の解決策を掲載しますが、問題は私のJenkinsのパラメータが正しく設定されていないことです。他の誰かがこの問題に遭遇した場合は、すべてのパラメータ、スペル、およびそれらが参照している可能性のあるパスを再度確認してください。

関連する問題