本来非常喜欢偷懒

最好就是不干活那种

所以最近在研究把Jenkins模块集成起来

做成傻瓜界面这样就给他们用


本人Python搓望大神不要喷,多多指导


jenkins的Python模块模块安装

pip:
pip install python-jenkins
easy_install:
easy_install python-jenkins

使用:

class jenkins_tools():
    def __init__(self):
        cf = get_conf()
        self.username = cf.get('jenkins', 'username')
        self.password = cf.get('jenkins', 'password')
        self.php_jenkins = '''			#本屌自己的jenkins的conf文件
        <project>				#这里可以去抄jenkins的项目文件夹里面的配置文件
          <actions/>				#记得不要加xml头,源码哪里帮我们加了,自己加就是作死
          <description></description>		#项目需求不一样,配置文件也不一样,你们不要抄我的
          <keepDependencies>false</keepDependencies>
          <properties>
            <hudson.model.ParametersDefinitionProperty>
              <parameterDefinitions>
                <hudson.model.StringParameterDefinition>
                  <name>Branch</name>
                  <description></description>
                  <defaultValue>%s</defaultValue>
                </hudson.model.StringParameterDefinition>
              </parameterDefinitions>
            </hudson.model.ParametersDefinitionProperty>
          </properties>
          <scm class="hudson.scm.NullSCM"/>
          <canRoam>true</canRoam>
          <disabled>false</disabled>
          <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
          <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
          <triggers/>
          <concurrentBuild>false</concurrentBuild>
          <builders>
            <hudson.tasks.Shell>
              <command>xxxxxxx</command>	
            </hudson.tasks.Shell>
          </builders>
          <publishers/>
          <buildWrappers/>
        </project>
            '''
        self.java_newjenkins = '''		#本屌的另外一个jenkins的conf文件
            <project>
              <actions/>
              <description></description>
              <keepDependencies>false</keepDependencies>
              <properties>
                <hudson.model.ParametersDefinitionProperty>
                  <parameterDefinitions>
                    <hudson.model.StringParameterDefinition>
                      <name>Branch</name>
                      <description></description>
                      <defaultValue>%s</defaultValue>
                    </hudson.model.StringParameterDefinition>
                  </parameterDefinitions>
                </hudson.model.ParametersDefinitionProperty>
              </properties>
              <scm class="hudson.scm.NullSCM"/>
              <canRoam>true</canRoam>
              <disabled>false</disabled>
              <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
              <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
              <triggers/>
              <concurrentBuild>false</concurrentBuild>
              <builders>
                <hudson.tasks.Shell>
                  <command>xxxx</command>	
                </hudson.tasks.Shell>
              </builders>
              <publishers/>
              <buildWrappers/>
            </project>
                '''

    def __conn_jenkins_server(self, url):
        try:
	    #获得一个jenkins的操作实例
            server = jenkins.Jenkins(url, username=self.username, password=self.password)
            return server
        except Exception:
            logging.warning('login jenkins failed!')
            return None
	
    def create_project(self, host_ip, project_name, git_path, git_branch, url, environment):
        server = self.__conn_jenkins_server(url)
        if server:
            server.create_job(project_name, self.php_jenkins)	#参数1写的是项目名称,参数2是xml文档
            return True
        else:
            return None

    def project_built(self, url, project_name, git_branch):	#这个函数作用是构建项目
        server = self.__conn_jenkins_server(url)		
        server.build_job(project_name, {'Branch': git_branch})

    def check_project_exist(self, project_name, url):		#这个函数是检查项目是否已经存在虽然写得很挫忘不要见怪
        server = self.__conn_jenkins_server(url)
        name = server.get_job_name(project_name)
        if name is None:
            return False
        return True


详细可以看官方文档:http://python-jenkins.readthedocs.io/en/latest/api.html


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐