抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

Jenkins是做什么的?

Jenkins是一款开源软件项目,基于JAVA开发而成的可持续发布的工具,用于管理和监控重复性的工作,而且支持各种插件。

Jenkins的功能

1> 持续软件版本发布和测试
2> 监控外部调用执行的工作状态

Jenkins安装环境准备

Jenkins 2.3以上需要使用JDK-11
安装并配置JDK的环境变量
    /etc/profile:
        export JAVA_HOME=/usr/local/jdk                                                          
        export PATH=$JAVA_HOME/bin:$PATH
    source /etc/profile
测试:
    java --version

JAVA下载链接请点我

Jenkins war包下载

链接:http://updates.jenkins-ci.org/download/war/
标注:目前我在使用2.320

Jenkins 部署方式

1> 因为Jenkins时通过JAVA语言编写而成的所以可以通过安装Tomcat来启动Jenkins(我这里使用的是Java直接启动)
2> 直接通过Java命令来启动Jenkins服务
    java -jar jenkins.war --http-Port=9999
即可通过本地IP访问即可。

通过systemd来管理Jenkins

1> 编写启动脚本
  vim start.sh
    #!/bin/bash
    export JAVA_HOME=/usr/local/jdk
    export PATH=$JAVA_HOME/bin:$PATH
    export JENKINS_HOME=/var/lib/jenkins
    CMD_PATH="/usr/local/jenkins"
    java -jar ${CMD_PATH}/${1}.war &>> ${JENKINS_HOME}/${1}.log  --httpPort=9999 &
    echo $! > $JENKINS_HOME/${1}.pid
2> 编写停止脚本
  vim stop.sh
    #!/bin/bash
    CMD_PATH="/var/lib/jenkins/jenkins.pid"
    sdk=$1
    PID=$(cat /var/lib/jenkins/${sdk}.pid)
    kill -9 $PID
    cat /dev/null > ${CMD_PATH}
3> 编写systemd管理的服务文件
    systemd管理的服务默认路径:/usr/lib/systemd/system/*
        [Unit]
        Description=Jenkins SDK Application
        After=network.target

        [Service]
        Type=forking
        Environment=JAVA_HOME=/usr/local/jdk
        ExecStart=/usr/local/jenkins/start.sh jenkins
        ExecStop=/usr/local/jenkins/stop.sh jenkins
        PrivateTmp=True
        Group=root
        User=root

        [Install]
        WantedBy=multi-user.target
4> 执行命令:systemctl daemon-reload && systemctl start jenkins && echo $?
   标注:输出为0则启动成功;systemctl status jenkins (查看jenkins启动状态)
5> 访问方法:http://HOST_IP:9999

Jenkins + Gitlab 持续集成部署(所需插件)

标注:需要下载下面这些插件(Gitlab、Gitlab Hook为必须项!)
Active Choices Plug-in :主要为流水线脚本提供额外的参数类型进行处理。
Gitlab :该插件允许gitlab触发在Jenkins中构建完成并显示出结果。
Gitlab Authentication Token Root :该插件是使用gitlab OAuth进行身份验证
Gitlab Hook:通过gitlab 的web 钩子出发项目的推送部署
Git Parameter :在自己的项目中能配置git相关的参数;例如:branches、name、defaultValue、type、tagFilter、branchFilter
Email Extension :邮件推送的扩展插件,支持使用邮件模版进行消息推送。

Jenkins + Gitlab持续集成配置

1> 登录gitlab,点击个人菜单下的设置(setting),再点击访问令牌,生成后保存下来。
2> 配置Jenkins中gitlab的认证信息以及url地址
    Connection Name:随便填写,自己可以能够辨识即可。
    Git Host URL:填Gitlab的域名地址或者ip地址
    Credentials:认证配置
        点击Add按钮;类型选择为Gitlab API Token,将之前复制的Token填入即可。

Gitlab
3> 添加成功后将该认证信息选中,点击Test connection是否返回success。

gitlab免密登录

a> 配置免密
    1> 将jenkins与gitlab配置为免密登录
        ssh-copy-id -i /root/.ssh/id_rsa.pub root@SERVER-IP
    2> 脚本
        '''
            #!/bin/bash
            rpm -q sshpass &> /dev/null || yum -y install sshpass
            [ -f /root/.ssh/id_rsa ] || ssh-keygen -f /root/.ssh/id_rsa -P ''

            num=1

            while read IP;do
                passwd=`awk -v aknum=$num 'NR==aknum {print $0}' pass`
                echo $passwd
                let num+=1
                export SSHPASS=$passwd
                sshpass -e ssh-copy-id -p 64444 -o StrictHostKeyChecking=no $IP
            done <  hosts.list
        '''
b> 配置gitlab的免密连接
    将Jenkins服务器中的账户公钥拷贝到对应gitlab账户中用户的SSH key当中

Gitlab
c> Jenkins配置
1> 点击系统管理选择Manage credentials添加新的凭据。
2> 类型选择为SSH Username with private key。
3> 其他的自己填写,能够辨识即可。
4> 下面勾选Enter directly点击Add直接将Jenkins服务器中的私钥内容粘贴进去即可。
Gitlab
d> 创建任务
1> Jenkins中创建任务进行测试
复制图中任务的URL
Gitlab
2> 打开Gitlab找到对应的Git项目库
点击设置 >> 集成 >> 把复制的URL填入并根据自己的需要来配置通过什么事件来触发Jenkins中对应的任务(添加完成之后点击Test选择Push events测试推送事件是否能够触发Jenkins中对应的任务 !)
Gitlab

评论