python管理jenkins持续集成

一,jenkins安装部署

Linux下Jenkins 安装方式很多,源码包(WAR 文件)安装,镜像服务安装,yum命令安装等
命令安装最简单,其他方式可以自己baidu
安装步骤如下

1, 安装命令

sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo

sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key

sudo yum install jenkins

2, 修改配置

# 修改端口
vim /etc/sysconfig/jenkins

在这里插入图片描述

3,启动命令

service jenkins start  启动

service jenkins stop   停止

service jenkins restart  重启

4,首次登录

第一次登录需要密码,根据提示:

cat /var/lib/jenkins/secrets/initialAdminPassword

在这里插入图片描述
首次登录,需要下载一些插件,可以使推荐的插件,也可以自己选择下载
在这里插入图片描述
在这里插入图片描述
安装完成后,自动进入管理账户注册页面,注册好了,进入登录页面
在这里插入图片描述

5,jenkins一般和项目交互,需要一些用户凭证(eg:git)

在这里插入图片描述

二,python-jenkins

工作中我们会想通过http方式运行Jenkins job,这样就不需要每次都进入jenkins的页面操作了,而且可以统一集成。
在Jenkins官网上的Python-Jenkins API。
Python-Jenkins官网:https://pypi.python.org/pypi/python-jenkins/
Python-Jenkins Doc:http://python-jenkins.readthedocs.io/en/latest/index.html

1,安装

pip install python-jenkins

2,基本使用

import jenkins
# 登录jenkins
server = jenkins.Jenkins('http://192.168.59.149:8080', username='user', password='password')

# 构建参数化job
server.build_job('jobname', {'param1': 'aaa', 'param2': 'bbb'})

3,项目封装

import jenkins
import logging

# 日志格式设置
logger = logging.getLogger('jenkins')

class JenkinsDevOps:
    def __init__(self, jenkins_info_dict):
        self.url = jenkins_info_dict["url"]
        self.username = jenkins_info_dict["username"]
        self.password = jenkins_info_dict["password"]
        self.jenkins_server = jenkins.Jenkins(url=self.url, username=self.username, password=self.password)

    def determine_job(self, job_name):
        """
        检测项目是否存在
        :param job_name:  项目名称
        :return:
        """
        return self.jenkins_server.get_job_name(job_name)

    def build_job(self, job_name, parameters=None):
        """
        :param job_name: name of job
        :param parameters: parameters for job, or ``None``, ``dict``
        :return:
        """
        self.jenkins_server.build_job(job_name, parameters=parameters)

    def get_last_success_build(self, job_name):
        """
        获取上次成功的构建
        :param job_name:
        :return:
        """
        number = self.jenkins_server.get_job_info(job_name)["lastSuccessfulBuild"]["number"]
        return number

    def stop_job(self, job_name, number):
        """
        获取构建结果的日志
        :param job_name: 项目名称
        :param number: 构建号
        """
        self.jenkins_server.stop_build(job_name, number)

    def create_job(self, data):
   		"""
        新建项目job
        :param data:  包含job新建格式文本config.xml
        :return:
        """
        res = self.jenkins_server.create_job('app-run', open(data['config_xml'], encoding='utf-8').read())
        return res


if __name__ == '__main__':
    my_parameters = {"branch": "test", "item": "my_test_item"}
    my_jenkins_dict = {"url": "https://jenkins.xxx.cn/",
                       "username": "admin", "password": "xxxxxxxx"}
    item_name = "test-slave"
    # jenkins_main(my_jenkins_dict, item_name, my_parameters)

4,job新建格式文本config.xml

<?xml version='1.1' encoding='UTF-8'?>
<project>
  <actions/>
  <description></description>
  <keepDependencies>false</keepDependencies>
  <properties>
    <hudson.model.ParametersDefinitionProperty>
      <parameterDefinitions>
        <hudson.model.StringParameterDefinition>
          <name>Branch</name>
          <description>分支</description>
          <defaultValue>dev</defaultValue>
          <trim>false</trim>
        </hudson.model.StringParameterDefinition>
        <hudson.model.StringParameterDefinition>
          <name>Version</name>
          <description>版本号</description>
          <defaultValue>7.0.0-devops</defaultValue>
          <trim>false</trim>
        </hudson.model.StringParameterDefinition>
      </parameterDefinitions>
    </hudson.model.ParametersDefinitionProperty>
  </properties>
  <scm class="hudson.plugins.git.GitSCM" plugin="git@4.7.1">
    <configVersion>2</configVersion>
    <userRemoteConfigs>
      <hudson.plugins.git.UserRemoteConfig>
        <url>http://gitlab.com/hermes/system/app-job.git</url>
        <credentialsId>e11f0f10-d1a9-4d36-86b5-9184051c8cc5</credentialsId>
      </hudson.plugins.git.UserRemoteConfig>
    </userRemoteConfigs>
    <branches>
      <hudson.plugins.git.BranchSpec>
        <name>$Branch</name>
      </hudson.plugins.git.BranchSpec>
    </branches>
    <doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
    <submoduleCfg class="empty-list"/>
    <extensions/>
  </scm>
  <canRoam>true</canRoam>
  <disabled>false</disabled>
  <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
  <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
  <triggers/>
  <concurrentBuild>false</concurrentBuild>
  <builders>
    <hudson.tasks.Shell>
      <command>bash /opt/newcicd/scripts/java_build_job.sh</command>
      <configuredLocalRules/>
    </hudson.tasks.Shell>
  </builders>
  <publishers/>
  <buildWrappers/>
</project>[
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值