Symfoware

Symfowareについての考察blog

JenkinsのパラメータージョブをPythonでリモートから実行する

PythonでJenkinsのジョブが実行できるようになりました。
JenkinsのジョブをPythonでリモートから実行する

パラメーターを指定してのジョブ実行を試してみます。


ジョブの編集



「target_id」というパラメーターを追加しました。

699_01.png


シェルスクリプトでは、受け取ったパラメーターを表示するよう変更しています。

699_02.png


ここで指定された値を実行に時間のかかるジョブに渡す想定です。





Pythonプログラム



パラメーター付きのジョブを実行する際は、
「job/[job名]/buildWithParameters」
にGETリクエストを送信します。

「要因」の項目にもデータを送るサンプルはこのようになりました。



  1. # -*- coding:utf-8 -*-
  2. import urllib2, base64, urllib
  3. build_param = {}
  4. build_param['token'] = u'sample_token'
  5. build_param['target_id'] = '日本語パラメーター'
  6. build_param['cause'] = 'ここが要因'
  7. data = urllib.urlencode(build_param)
  8. # URLは[jenkins]/[ジョブ名]/buildWithParameters
  9. url = 'http://192.168.1.102:8080/job/test-job/buildWithParameters'
  10. # 設定画面で表示されたユーザID、APIトークンでベーシック認証
  11. username = 'symfo'
  12. password = 'eb6d158c477b8f8f700d54c2d9c6dc12'
  13. request = urllib2.Request(url + '?' + data)
  14. # http://stackoverflow.com/questions/2407126/python-urllib2-basic-auth-problem
  15. # You need the replace to handle encodestring adding a trailing newline
  16. # (https://docs.python.org/2/library/base64.html#base64.encodestring)
  17. base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
  18. request.add_header("Authorization", "Basic %s" % base64string)
  19. result = urllib2.urlopen(request)




ちゃんとパラメーターが送信できました。
日本語でも問題ありません。

699_03.png

関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2016/06/29(水) 00:50:51|
  2. Python
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<PHPからリモートでJenkinsのジョブを起動する | ホーム | JenkinsのジョブをPythonでリモートから実行する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1901-c6af4dc9
この記事にトラックバックする(FC2ブログユーザー)