jenkins

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成,Jenkins只是一个平台,真正运作的都是插件。主要用于持续、自动的构建/测试软件项目、监控外部任务的运行

jenkins 相关网站

Jenkins官网 https://jenkins.io/
Jenkins官网文档 https://www.jenkins.io/zh/doc/
学习文档 https://www.w3cschool.cn/jenkins/jenkins-5h3228n2.html

jenkins服务部署

引言

我以在云服务器 ESC (Elastic Compute Service)上搭建为例,ESC系统为 centos7.9。公网IP为121.51.39.239。里面涉及到的密码设置,可以自行选择密码配置,这里我统一设置为123123,避免搞混。

资源包

  • 有些资源在centos中无法通过 yum install 安装,需要下载后手动安装。
  • 下面的下载链接中有个 jenkins 资源压缩包,需要提前下载准备好。
    链接:https://pan.baidu.com/s/1g-OpIumZDH3XpuJjsuKNmA?pwd=f59e 提取码:f59e
  • 下载完成后,需要在Windows下解压出来得到 jenkins_src 文件夹,里面包括 jenkins安装包 (jenkins-2.331-1.1.noarch.rpm) , 以及 jenkins插件 (jenkins-plugins.tar.gz).后续将这两个文件上传到 centos 的根路径中。需要进行手动安装。
  • 如果想要获取最新的jenkins安装包:http://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/

开始部署

  1. 获取资源包
    将Windows下的 jenkins-plugins.tar.gz 和 jenkins-2.331-1.1.noarch.rpm 上传到 Centos的根路径

  2. 配置jenkins yum仓库(国外的访问很慢)

    cd /etc/yum.repos.d/
    wget http://pkg.jenkins.io/redhat/jenkins.repo
    rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key
    
  3. 开始安装JDK
    Jenkins是Java编写的,所以需要先安装JDK,这里采用yum安装,如果对版本有需求,可以直接在Oracle官网下载JDK。

    yum install -y java-1.8.0 git vim
    
  4. 创建jenkins用户

    useradd  jenkins
    passwd   jenkins
    123456
    cd /root
    cp jenkins-plugins.tar.gz 和 jenkins-2.331-1.1.noarch.rpm /home/jenkins
    su - jenkins
    cd /home/jenkins
    
  5. 快速安装jenkins
    本文使用yum进行安装,大家也可以使用编译安装。
    其他版本下载地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/

    yum -y localinstall jenkins-2.33*.rpm
    
  6. 配置国内的插件源

    vim /var/lib/jenkins/hudson.model.UpdateCenter.xml
    <?xml version='1.1' encoding='UTF-8'?>
    <sites>
      <site>
        <id>default</id>
        <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
      </site>
    </sites>
    
  7. 更改默认端口
    默认jenkins服务器端口为8080,如果端口被占用,则可使用其他端口,此处如果被占用,我将jenkins端口配置为8088.

    vim /etc/sysconfig/jenkins
    # Port Jenkins is listening on.
    # Set to -1 to disable
    #
    JENKINS_PORT="8088"
    
  8. 插件安装
    将插件包 jenkins-plugins.tar.gz 解压到插件目录

    rm /var/lib/jenkins/plugins -rf
    tar xf /home/jenkins/jenkins-plugins.tar.gz -C /var/lib/jenkins
    
  9. 启动jenkins服务

    systemctl start jenkins
    /sbin/chkconfig jenkins on
    

jenkins web页面

  1. Jenkins Web访问地址:
    http://121.51.39.239:8088

  2. 解锁
    新版本的jenkins为了保证安全,在安装之后有一个锁,需要设置密码之后才可以解锁
    在这里插入图片描述
    复制这个文件下面的ID,否则不可以进行安装。

    # cat /var/lib/jenkins/secrets/initialAdminPassword
    1323edda2df49b6b8787ecfdsa3a
    
  3. 插件选项
    在这里插入图片描述

  4. 设置密码
    首次登陆,用户名默认为admin,此时需要给你设置密码,否则下次登陆就无法登陆成功。

    a. 点击用户列表,点击admin
    在这里插入图片描述
    b. 点击设置里配置用户密码,点击保存
    在这里插入图片描述
    c. 然后会进入登录页面,输入用户名admin和密码123456
    在这里插入图片描述

对接ldap

如果你不清除 LDAP 服务器如何搭建,请参考我的博文 搭建LDAP服务器详细流程,里面详细介绍了LDAP 服务器的搭建流程。

  1. 点击系统管理-》全局安全配置
    在这里插入图片描述
  2. 安全域设置为LDAP,server url:ldap://121.51.39.239:389,端口号默认为389,然后点击高级服务器配置
    在这里插入图片描述
  3. 配置 user search base 和 group search base 为 dc=codesweet,dc=com,
    在这里插入图片描述 在这里插入图片描述
  4. 点击下面按钮,然后 manager DN 选择 cn=admin,dc=codesweet,dc=com
    在这里插入图片描述
  5. 然后点击保存,然后退出当前用户,用ldap上的用户登录。

jenkins 对接 gerrit

LDAP 增加 jenkins用户

  1. 增加一个用户组NonInteractiveUsers
  2. 增加一个用户jenkins,用户组为NonInteractiveUsers
    在这里插入图片描述

配置shh

  1. shell 终端下进入gerrit用户添加ssh秘钥,配置时给其配置密码123456
    su - jenkins
    [jenkins@CoderSweet ~]$ ssh-keygen -C jenkins@121.51.39.239
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/jenkins/.ssh/id_rsa):
    /home/jenkins/.ssh/id_rsa already exists.
    Overwrite (y/n)?
    [jenkins@CoderSweet ~]$ ssh-keygen -C jenkins@121.51.39.239
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/jenkins/.ssh/id_rsa):
    /home/jenkins/.ssh/id_rsa already exists.
    Overwrite (y/n)? y
    Enter passphrase (empty for no passphrase):123456
    Enter same passphrase again:123456
    Your identification has been saved in /home/jenkins/.ssh/id_rsa.
    Your public key has been saved in /home/jenkins/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:ChmnD18HlewHLrSmeK8xF9APXOgHrDST1k9XOx23x4A jenkins@121.51.39.239
    The key's randomart image is:
    +---[RSA 2048]----+
    |       + oo. oo..|
    |      *o*o= E  =+|
    |    .oo*=B o  o.+|
    |     =..=+= .  ..|
    |    =. oSoo.     |
    |    .=oo o       |
    |     .*..        |
    |       +.        |
    |      ..         |
    +----[SHA256]-----+
    
    cat ~/.ssh/id_rsa.pub
    
  2. 使用 jenkins 用户登录 gerrit
    添加公钥
    在这里插入图片描述
  3. 用gerrit的管理员用户,将jenkins用户添加到Non-Interactive Users组下,如下:
    在这里插入图片描述
    添加jenkins用户在这里插入图片描述
  4. 让Gerrit支持Verified标签功能
    如果安装Gerrit时没有或者没有选择添加Verified标签功能[‘lable Verified’],需要自己添加。
    如下是手动添加Verified标签功能的设置(由于我在安装Gerrit的时候没有选择安装Verified标签功能
    [如果在安装gerrit的时候没有选择安装这个标签功能,就需要在此处手动安装下。具体可以登陆gerrit,ProjectS->list->All-Projects->Access->Edit->Add Permission 看里面是否有Verfied的选项]
    在这里插入图片描述
    需要手动添加,步骤如下:
    在这里插入图片描述
    gerrit管理员用户使用git
    	[root@weizb-3 ~]# git clone ssh://admin@121.51.39.239:29418/All-Projects && scp -p -P 29418 admin@121.51.39.239:hooks/commit-msg All-Projects/.git/hooks/
    Cloning into 'All-Projects'...
    remote: Counting objects: 45, done
    remote: Finding sources: 100% (45/45)
    Receiving objects: 100% (45/45), 11.15 KiB | 0 bytes/s, done.
    Resolving deltas: 100% (3/3), done.
    remote: Total 45 (delta 3), reused 12 (delta 3)
    Note: checking out 'abaa7eede2c6a5f962ac5f81fcf6d7e96287b1a2'.                         
    [root@weizb-3 ~]# cd All-Projects/
    [root@weizb-3 All-Projects]# ll
    total 8
    -rw-r--r-- 1 root root  392 Aug  7 17:29 groups
    -rw-r--r-- 1 root root 2546 Aug  7 17:29 project.config
    [root@weizb-3 All-Projects]# 
    [root@weizb-3 All-Projects]# vim project.config
    [label "Verified"]                                                                                                                                                         
        function = MaxWithBlock
        value = -2 Fails
        value = -1 Fails
        value =  0 No score
        value = +1 Verified
        value = +2 Approved
        defaultValue = 0
    [root@weizb-3 All-Projects]# git commit -a -m 'Updated permissions'
    [detached HEAD 4b8f2e9] Updated permissions
     1 file changed, 8 insertions(+), 8 deletions(-)
    [root@weizb-3 All-Projects]# git push origin HEAD:refs/meta/config
    Counting objects: 5, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 432 bytes | 0 bytes/s, done.
    Total 3 (delta 1), reused 1 (delta 0)
    remote: Resolving deltas: 100% (1/1)
    remote: Processing changes: refs: 1, done    
    To ssh://admin@172.20.149.180:29418/All-Projects
       abaa7ee..4b8f2e9  HEAD -> refs/meta/config
    [root@weizb-3 All-Projects]# 
    
    用gerrit管理员账号登录Gerrit
    现在提交的Review请求只有Code Rivew审核,我们要求的是需要Jenkins的Verified和Code Review双重保障,在 Projects 的 Access 栏里,针对 Reference: refs/heads/ 项添加 Verified 功能,如下如下:
    Projects -> List -> All-Projects
    Projects -> Access -> Edit -> 找到 Reference: refs/heads/* 项 -> Add Permission -> Label Verified -> Group Name 里输入 Non-Interactive Users -> 回车 或者 点击Add 按钮 -> 在最下面点击 Save Changes 保存更改。
    (注意:提前把jenkins用户添加到Non-Interactive Users组内)
    在这里插入图片描述

jenkins 添加 gerrit 插件

在“系统管理”->“插件管理"->”可选插件"->搜索下面三个插件进行安装,如下:
在这里插入图片描述
然后点击 install without restart
在这里插入图片描述

匹配 gerrit plugin

  1. 进入系统管理,拉倒最下面可以看到下述,点击
    在这里插入图片描述

  2. 添加 server
    在这里插入图片描述

  3. 名称随意, type点击default cofig,然后点击create

  4. 然后点击高级,进行如下配置
    在这里插入图片描述
    在这里插入图片描述
    然后可以测试下连接
    在这里插入图片描述
    5. 保存完毕后,点击红按钮,重启checkgerrit服务器,保证状态正常
    在这里插入图片描述

配置smtp邮箱

  1. 点击系统管理-》系统配置,输入SMTP服务器,如果是qq,则输入smtp.qq.com,然后点击高级
    在这里插入图片描述
    密码填写的是smtp授权码,勾选ssl协议 在这里插入图片描述
    然后可以测试一下,输入一个邮箱,然后点击test,如果成功则会相应收到一封邮件,且web显示successful.
    在这里插入图片描述

jenkins 构建任务对接gerrit

  1. gerrit 上面新建一个项目 testJenkins
    在这里插入图片描述
  2. 在jenkins上新建任务
    在这里插入图片描述
    2. 输入任务名称,构建自由风格软件项目,点击确认
    在这里插入图片描述
    3. 源码管理选择Git,URL 里面输入http://121.51.39.239:8080/testJenkins.git
    在这里插入图片描述
    4. 构建触发器,选择Gerrit event,添加服务器,选择配置gerrit plugin中配置的gerritCheck在这里插入图片描述
    5. gerrit trigger 中想左边选择用户名,右边选择master
    在这里插入图片描述
    5. 构建中可以输入一些shell脚本
    在这里插入图片描述
    6. 然后保存
    7. 使用git, 在本地添加commit内容后,推送到gerrit
    git push origin master:refs/for/master
    
    1. jenkins上面可以看到构建信息在这里插入图片描述
    2. gerrit上面可以看到jenkins认证信息
      在这里插入图片描述
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐