• Jenkins一站成魔【1】传统安装与说明


    Jenkins一站成魔【1】传统安装与说明
    Jenkins一站成魔【2】传统项目CI/CD
    Jenkins一站成魔【3】Docker平台CI/CD
    Jenkins一站成魔【4】K8S平台CI/CD

    1、CI/CD 学习第一页

    CI/CD 的核心概念是持续集成、持续交付和持续部署。而今天的主角是 Jenkins

    Jenkins的特征:
    1、开源的Java语言开发,支持持续集成,持续部署。
    2、易安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可
    方便web界面配置管理。
    3、消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生
    成JUnit/TestNG测试报告。
    4、分布式构建:支持Jenkins能够让多台计算机一起构建/测试。
    5、文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
    6、丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如 git,svn,maven,
    docker等。

    • 服务器列表
    名称IP地址安装的软件
    代码托管服务器192.168.168.151Gitlab-12.4.2
    持续集成服务器192.168.168.152Jenkins-2.190.3,JDK1.8,Maven3.6.2,Git,SonarQube
    应用测试服务器192.168.168.153JDK1.8,Tomcat8.5

    2、Gitlab Install and Configuration

    2.1、Gitlab 安装

    主机 192.168.168.151

    1. 安装相关依赖
    yum -y install policycoreutils openssh-server openssh-clients postfix policycoreutils-python
    
    2. 启动ssh服务&设置为开机启动
    systemctl enable sshd && sudo systemctl start sshd
    
    3. 设置postfix开机自启,并启动,postfix支持gitlab发信功能
    systemctl enable postfix && systemctl start postfix
    
    4. 开放ssh以及http服务,然后重新加载防火墙列表
    firewall-cmd --add-service=ssh --permanent
    firewall-cmd --add-service=http --permanent
    firewall-cmd --reload
    # 如果关闭防火墙就不需要做以上配置
    systemctl disable firewalld && systemctl stop firewalld
    
    5. 下载gitlab包,并且安装
    在线下载安装包:
    wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.4.2-ce.0.el7.x86_64.rpm
    安装:
    rpm -ivh gitlab-ce-12.4.2-ce.0.el7.x86_64.rpm
    
    6. 修改gitlab配置
    vim /etc/gitlab/gitlab.rb
    修改gitlab访问地址和端口,默认为80,我们改为8000
    external_url 'http://192.168.168.151:8000'
    nginx['listen_port'] = 8000
    
    7. 重载配置及启动gitlab
    #此处耗时较长 耐心等待哦! 
    sudo gitlab-ctl reconfigure
    gitlab-ctl restart
    
    9. 把端口添加到防火墙
    firewall-cmd --zone=public --add-port=8000/tcp --permanent
    firewall-cmd --reload
    # 如果关闭防火墙就不需要做以上配置
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    http://192.168.168.151:8000
    启动成功后,在页面修改管理员root密码admin123,修改密码后即可登录;

    2.2、Gitlab添加组、创建用户、创建项目

    2.2.1)创建组

    使用管理员 root 创建组,一个组里面可以有多个项目分支,可以将开发添加到组里面进行设置权限,不同的组就是公司不同的开发项目或者服务模块,不同的组添加不同的开发即可实现对开发设置权限的管理。

    2.2.2)创建项目

    组Group 下创建项目

    2.2.3)创建用户

    创建用户的时候,可以选择Regular或Admin类型。

    创建user成功后,可以使用Edit功能给user一个密码

    2.2.4)将用户添加到组中

    选择某个用户组,进行Members管理组的成员

    Gitlab用户在组里面有5种不同权限:
    Guest:可以创建issue、发表评论,不能读写版本库 Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限 。
    Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限。
    Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个权限 。
    Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组长可以赋予这个权限

    2.2.5)在用户组中创建项目

    用新用户litaibai/admin123登录到Gitlab,然后在用户组中创建新的项目【 操作同 2)

    2.2.6)源码上传到Gitlab仓库

    同gitee,github,_ O(∩_∩)O哈哈~

    3、Jenkins Install and Configuration

    主机 192.168.168.152
    为解决plugins不能使用的问题,我没有耐性了,索性一路将jenkins直升2.346.1;

    3.1、Jenkins安装

    1)安装JDK
    rpm -qa | grep java       
    rpm -e --nodeps java*
    yum search jdk
    #yum search jdk | grep java-1.8.0
    yum list | grep java-11
    
    yum install -y java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-accessibility.x86_64 java-1.8.0-openjdk-devel.x86_64 java-1.8.0-openjdk-headless.x86_64
    # yum install -y java-11-openjdk.x86_64 java-11-openjdk-devel.x86_64 java-11-openjdk-headless.x86_64 java-11-openjdk-jmods.x86_64 java-11-openjdk-static-libs.x86_64
    
    java -version
    安装目录为:/usr/lib/jvm
    
    2)获取jenkins安装包
    下载页面:https://jenkins.io/zh/download/
    下载页面:下载路径:https://mirror.gruenehoelle.nl/jenkins/redhat-stable/
    安装文件:jenkins-2.361.1-1.1.noarch.rpm
    # rpm安装
    #wget --no-check-certificate https://mirror.gruenehoelle.nl/jenkins/redhat-stable/jenkins-2.190.1-1.1.noarch.rpm
    #wget --no-check-certificate https://mirror.gruenehoelle.nl/jenkins/redhat-stable/jenkins-2.289.2-1.1.noarch.rpm
    # wget --no-check-certificate https://mirror.gruenehoelle.nl/jenkins/redhat-stable/jenkins-2.303.1-1.1.noarch.rpm
    wget --no-check-certificate https://mirror.gruenehoelle.nl/jenkins/redhat-stable/jenkins-2.346.1-1.1.noarch.rpm
    
    3)把安装包上传到192.168.168.152服务器,进行安装
    yum -y install epel-release
    yum -y install daemonize
    rpm -ivh jenkins-2.346.1-1.1.noarch.rpm
    
    4)修改Jenkins配置
    vim /etc/sysconfig/jenkins
    修改内容如下:
    JENKINS_USER="root"
    JENKINS_PORT="8888"
    
    vim /usr/lib/firewalld/services/jenkins.xml 
    <port protocol="tcp" port="8888"/>
    
    vim /usr/lib/systemd/system/jenkins.service
    Environment="JENKINS_PORT=8888"
    
    systemctl daemon-reload
    
    5)启动Jenkins
    systemctl disable firewalld && systemctl stop firewalld
    systemctl start jenkins
    
    6)打开浏览器访问
    http://192.168.168.152:8888
    
    账户:admin
    密码:cat /var/lib/jenkins/secrets/initialAdminPassword
    
    7)跳过插件安装
    因为Jenkins插件需连接默认官网下载,速度非常慢且经常会失败,这里暂时选
    【选择插件来安装】>>【无】>>【创建第一个管理员用户】>>【保存并完成】>>【保存并完成】
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    如 john/admin123

    3.2、Jenkins国内插件地址修改

    Jenkins本身不提供很多功能,我们可以通过使用插件来满足我们的使用。例如从Gitlab拉取代码,使用
    Maven构建项目等功能需要依靠插件完成。接下来演示如何下载插件。

    修改Jenkins插件下载地址
    Jenkins国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址:
    Jenkins -> Manage Jenkins -> Manage Plugins,点击Available

    这样做是为了把Jenkins官方的插件列表下载到本地;

    3.2.1、rpm包Jenkins修改地址国内插件地址

    #http://updates.jenkinsci.org/download 修改为 https://mirrors.tuna.tsinghua.edu.cn/jenkins
    sudo sed -i 's#updates.jenkins.io/download/plugins#mirrors.tuna.tsinghua.edu.cn/jenkins/plugins#g' /var/lib/jenkins/updates/default.json
    sudo sed -i 's#www.google.com#www.baidu.com#g' /var/lib/jenkins/updates/default.json
    
    • 1
    • 2
    • 3

    最后,Manage Plugins点击Advanced,把Update Site改为国内插件下载地址

    https://updates.jenkins.io/update-center.json
    修改为--->>>
    https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
    
    • 1
    • 2
    • 3

    3.2.2、war包Jenkins修改地址国内插件地址

    find / -name *.UpdateCenter.xml
    
    vim /root/.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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    此时需要更换插件源,否则插件将安装失败
    将 https://updates.jenkins.io/download 改为 http://mirrors.tuna.tsinghua.edu.cn/jenkins
    将 https://www.google.com 改为 https://www.baidu.com

    sed -i 's/https:\/\/updates.jenkins.io\/download/http:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /root/.jenkins/updates/default.json
    sed -i 's/https:\/\/www.google.com/https:\/\/www.baidu.com/g' /root/.jenkins/updates/default.json
    
    • 1
    • 2

    3.2.3、重启jenkins

    Sumbit后,在浏览器输入重启url。
    http://192.168.168.152:8888/restart

    bash /opt/tomcat/bin/shutdown.sh
    bash /opt/tomcat/bin/startup.sh

    3.3、Jenkins中文汉化插件安装

    Jenkins -> Manage Jenkins -> Manage Plugins,点击Available,搜索 “Chinese”,安装,重启

    3.4、Jenkins用户权限管理

    我们可以利用 Role-based Authorization Strategy 插件来管理Jenkins用户权限

    3.4.1、安装 Role-based Authorization Strategy 插件

    3.4.2、开启权限全局安全配置

    【系统管理】->【全局安全配置】->【授权策略 “Role-Based Strategy”】->【 保存】

    3.4.3、创建角色

    【系统管理】->【Manage and Assign Roles】->【Manage Roles】

    Global roles:管理员等高级用户可以创建基于全局的角色 。
    Project roles:针对某个或者某些项目的角色 。
    Slave roles:节点相关的权限。

    我们添加以下三个角色:

    • baseRole:该角色为Global roles。这个角色需要绑定Overall下面的Read权限,是为了给所有用户绑定最基本的Jenkins访问权限。注意:如果不给后续用户绑定这个角色,会报错误:用户名 is missing the Overall/Read permission
    • role1:该角色为Project roles。使用正则绑定michael.*,意思是只能操作michael开头的项目。
    • role2:该角色为Project roles。使用正则绑定michelle.*,意思是只能操作michelle开头的项目。

    3.4.4、创建用户

    【系统管理】->【管理用户】->【新建用户】
    创建三个用户:michael/admin123、emily/admin123、michelle/admin123

    此时直接登录是没有任何权限的哦!!!

    3.4.5、给用户分配角色

    【系统管理】->【Manage and Assign Roles】->【Assign Roles】

    绑定规则如下:
    emily用户 绑定 baseRole 和 role1 角色;
    michelle用户 绑定 baseRole 和role2 角色;

    3.4.6、创建项目验证权限

    以john管理员账户创建两个项目 michael-goods 和 michelle-order ;

    以emily用户登录,只能看到michael-goods项目:

    以michelle用户登录,只能看到michelle-order项目:

    3.5、Jenkins凭证管理

    要在Jenkins使用凭证管理功能,需要安装Credentials Binding插件;
    凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。

    3.5.1、安装Credentials Binding插件

    【系统管理】->【插件管理】->【可选插件】->【Credentials Binding】->【安装】

    可以添加的凭证有5种:
    Username with password:用户名和密码
    SSH Username with private key: 使用SSH用户和密钥
    Secret file:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径
    设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。
    Secret text:需要保存的一个加密的文本串,如钉钉机器人或Github的api token
    Certificate:通过上传证书文件的方式

    常用的凭证类型有:
    Username with password(用户密码)
    SSH Username with private key(SSH密钥)

    接下来以使用Git工具到Gitlab拉取项目源码为例,演示Jenkins的如何管理Gitlab的凭证。

    3.5.2、安装Git插件和Git工具

    为了让Jenkins支持从Gitlab拉取源码,需要安装Git插件以及在CentOS7上安装Git工具。
    Git插件安装:

    CentOS7上安装Git工具:

    # yum安装git
    yum install git -y
    # 查看git版本
    git --version 
    
    • 1
    • 2
    • 3
    • 4

    3.5.3、创建使用【用户密码类型】凭证

    【系统管理】->【Manage Credentials】->【全局】->【添加一些凭据】





    3.5.4、创建使用【SSH密钥类型】凭证

    ssh-keygen -t rsa
    
    • 1

    暂无,不想记录了…

    3.6、Jenkins配置关联JdkMaven

    3.6.1、全局工具配置关联JdkMaven

    需要先操作 “ 4、Maven Install and Configuration
    【系统管理】->【全局工具配置】->【JDKMaven】->【应用、保存】


    3.6.2、添加Jenkins全局变量

    【系统管理】->【Configure System】->【全局属性】->【环境变量】

    添加三个变量:JAVA_HOMEM2_HOMEPATH+EXTRA

    4、Maven Install and Configuration

    192.168.168.152
    在Jenkins集成服务器上安装Maven来编译和打包项目。
    上传 apache-maven-3.6.2-bin.tar.gz/opt/ 文件夹

    # 解压
    tar -xzf apache-maven-3.6.2-bin.tar.gz
    
    • 1
    • 2

    配置环境变量

    # 配置java maven环境变量
    cat > /etc/profile.d/myjava.sh <<-EOF
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
    export MAVEN_HOME=/opt/apache-maven-3.6.2
    export PATH=${PATH}:${JAVA_HOME}/bin:${MAVEN_HOME}/bin
    EOF
    
    # 配置生效
    source /etc/profile
    # 查找Maven版本
    mvn -v
    
    # 一定要记得创建仓库路径并赋予权限;不然后面maven构建会不成功的哦!!!
    mkdir -p /opt/mavenrepo && chmod -R 777 /opt/mavenrepo
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    凌波微步 Maven 详细配置 在其他房间 … 如:本地仓库目录,项目编码,国内镜像等。

    5、Tomcat Install and Configuration

    192.168.168.153

    5.1 安装jdk

    # 安装jdk;此处使用openjdk
    rpm -qa | grep java
    rpm -e --nodeps java*
    yum search jdk | grep java-1.8.0
    
    yum install -y java-1.8.0-openjdk.x86_64 \
    java-1.8.0-openjdk-accessibility.x86_64 \
    java-1.8.0-openjdk-devel.x86_64 \
    java-1.8.0-openjdk-headless.x86_64
    # 安装目录为:/usr/lib/jvm
    java -version
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    oracle jdk install 见此处 https://blog.csdn.net/Michael_lcf/article/details/86300662

    5.2 安装tomcat

    # 关闭防火墙
    systemctl disable firewalld && systemctl stop firewalld
    # 安装Tomcat8.5,上传压缩包到 /opt/ 目录
    mkdir -p /opt/tomcat
    tar -xzvf /opt/apache-tomcat-8.5.47.tar.gz --strip-components 1 -C /opt/tomcat
    # 启动tomcat
    /opt/tomcat/bin/startup.sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    访问Tomcat:http://192.168.168.153:8080 不出意外,一只可爱的tomcat出现了…

    5.3 配置tomcat权限

    配置Tomcat用户角色权限,默认情况下Tomcat是没有配置用户角色权限的。

    vim /opt/tomcat/conf/tomcat-users.xml
    
    • 1
    <tomcat-users>
      ...
      <role rolename="tomcat"/>
      <role rolename="role1"/>
      <role rolename="manager-script"/>
      <role rolename="manager-gui"/>
      <role rolename="manager-status"/>
      <role rolename="manager-jmx"/>
      <role rolename="admin-gui"/>
      <role rolename="admin-script"/>
      <user username="tomcat" password="tomcat" roles="tomcat,manager-script,manager-gui,admin-gui,admin-script,manager-jmx"/>
    tomcat-users>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    注意:为了能使配置的用户登录到Tomcat,还需要注释掉以下配置才可以!

    vim /opt/tomcat/webapps/manager/META-INF/context.xml
    
    • 1
    
    
    • 1
    • 2
    • 3
    • 4

    重启Tomcat,访问测试

    # 停止
    /opt/tomcat/bin/shutdown.sh
    # 启动
    /opt/tomcat/bin/startup.sh
    
    • 1
    • 2
    • 3
    • 4

    测试:http://192.168.168.153:8080/manager/html
    账号密码:tomcat/tomcat

  • 相关阅读:
    数仓精品理论-做大数据还有没有前途?
    numpy数组索引、数组切片、数组形状修改、数组类型修改和数组去重
    13.爱芳地产项目小程序全栈项目经验之uniapp
    企业运营系统软件来固化流程管理
    zabbix主动监控和被动监控
    [JavaEE系列] 进程与线程之间的区别和联系
    react实现转盘抽奖功能
    SpringBoot日常:@Scheduled实现服务启动时执行一次
    VS2019+QT5.15调用动态库dll带有命名空间
    Apache POI各jar包的介绍
  • 原文地址:https://blog.csdn.net/Michael_lcf/article/details/124785548