Create a Web API to do Jenkins deploy
import os import time import datetime from flask import Flask,jsonify,make_response,request from jenkinsapi.jenkins import Jenkins from jenkinsapi.utils.crumb_requester import CrumbRequester from gevent import monkey from gevent.pywsgi import WSGIServer monkey.patch_all() app = Flask(__name__) app.config.update(DEBUG=True) def log(txt): # log_path = os.getcwd()+'/access_log.txt' log_path = '/home/qa/Desktop/JandiAPI/access_log.txt' with open(log_path,'a') as file: msg = '%s\t%s\t%s\n' % (datetime.datetime.now(),str(request.remote_addr),txt) file.write(msg) # jinkins基本串連資料 def get_server_instance(): # Server Link jenkins_url = 'http://jenkins.com:6080/' # http://jenkins.com:6080/user/{username}/configure的API Token token = 'your token' # 因為有設定crumbed auth token,所以執行時要用它 requester = CrumbRequester(baseurl=jenkins_url, username='{username}', password=token) server = Jenkins(jenkins_url, username='{username}', password=token,requester=requester) return server # call Jenkins @app.route("/somejob", methods=['GET']) def build_job(): try: log('Build Job Start') # 取得Jenkins Server 設定 server = get_server_instance() # 要執行的job 名稱 job_IP_web = 'job1' job_IP_API = 'job2' # 確認是否有該job名稱再將job加入排程 if (server.has_job(job_IP_web)) and (server.has_job(job_IP_API)): job_instance1 = server.build_job(job_IP_web) job_instance1 = server.build_job(job_IP_API) msg = "%s and %s are added in build schedule. Please check Jenkins web." % (job_IP_web,job_IP_API) log('Build Job End') return msg except Exception as e: log(e) return e #404 @app.errorhandler(404) def not_found(error): log('404') return make_response(jsonify({'error': 'Not found'}), 404) if __name__ == "__main__": # app.run() http_server = WSGIServer(('', 5000), app) http_server.serve_forever()













