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













