• Jenkins持续集成&安装配置


    转载地址:https://blog.csdn.net/weixin_41947378/article/details/111559374

    一、什么是持续集成?

    持续集成是一个开发的实践,需要开发人员定期集成代码到共享存储库。这个概念是为了消除发现的问题,后来出现在构建生命周期的问题。持续集成要求开发人员有频繁的构建。最常见的做法是,每当一个代码提交时,构建应该被触发。

    1. CI/DI简介

    互联网软件的开发和发布,已经形成了一套标准流程,假如把开发工作流程分为以下几个阶段:

    编码 --> 构建 --> 集成 --> 测试 --> 交付 --> 部署

    在这里插入图片描述

    如上图所示,[持续集成(Continuous Integration)][持续交付(Continuous Delivery)][持续部署(Continuous Deployment)]有着不同的软件自动化交付周期。

    交付就是发布一个版本,该版本已经测试没有问题了。

    2. 持续集成[CI]

    上面整个流程中最重要的组成部分就是持续集成(Continuous integration,简称CI)。

    持续集成指的是,频繁地(一天多次)将代码集成到主干。将软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。

    它的好处主要有两个:

    • 1. 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易;
    • 2. 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。

    在这里插入图片描述

    持续集成并不能消除Bug,而是让它们非常容易发现和改正。持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。

    3. 持续交付

    持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。

    持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上

    即 预发环境验收

    在这里插入图片描述

    持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。

    4. 持续部署[CD]

    持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。

    持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。

    持续部署的前提是能自动化完成测试、构建、部署等步骤。

    在这里插入图片描述

    总的来说,持续集成、持续交付、持续部署提供了一个优秀的 DevOps 环境。对于整个开发团队来说,能很大地提升开发效率,好处与挑战并行。无论如何,频繁部署、快速交付以及开发测试流程自动化都将成为未来软件工程的重要组成部分。

    二、Jenkins

    1. jenkins是什么?

    Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。

    Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。

    官网:https://www.jenkins.io/zh/ 官方文档:https://www.jenkins.io/zh/doc/

    Jenkins特性:

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

    在这里插入图片描述

    伴随着Jenkins,有时人们还可能看到它与Hudson关联。Hudson是由 Sun Microsystems 开发的一个非常流行的开源,基于Java 的持续集成工具,后来被Oracle收购。Sun被Oracle收购之后,一个从 Hudson 源代码的分支由 Jenkins 创建出台

    2. Jenkins安装

    安装Jenkins 官方文档

    2.1 系统要求

    最低推荐配置:

    • 256MB可用内存
    • 1GB可用磁盘空间(作为一个Docker容器运行jenkins的话推荐10GB)

    为小团队推荐的硬件配置:

    • 1GB+可用内存
    • 50 GB+ 可用磁盘空间

    软件配置:

    • Java 8—​无论是Java运行时环境(JRE)还是Java开发工具包(JDK)都可以。

    注意: 如果将Jenkins作为Docker 容器运行,这不是必需的

    2.2 War方式安装

    有很多种安装方式,这里我们用war方式安装。
    在这里插入图片描述

    在这里插入图片描述

    3. 安装后设置向导

    3.1 解锁 Jenkins

    当您第一次访问新的Jenkins实例时,系统会要求您使用自动生成的密码对其进行解锁。

    1. 浏览到 http://localhost:8080(或安装时为Jenkins配置的任何端口),并等待 解锁 Jenkins 页面出现。
      在这里插入图片描述
    2. 从Jenkins控制台日志输出中,复制自动生成的字母数字密码(在两组星号之间)。
      # 执行该命令直接查看密码
      cat /var/lib/jenkins/secrets/initialAdminPassword
      
      • 1
      • 2
    3. 在 解锁Jenkins 页面上,将此 密码 粘贴到管理员密码字段中,然后单击 继续

    注意:

    • 如果您以分离模式在Docker中运行Jenkins,则可以从Docker日志(above) 访问Jenkins控制台日志。
    • Jenkins控制台日志显示可以获取密码的位置(在Jenkins主目录中)。 必须在新Jenkins安装中的安装向导中输入此密码才能访问Jenkins的主UI。 如果您在设置向导中跳过了后续的用户创建步骤, 则此密码还可用作默认admininstrator帐户的密码(使用用户名“admin”)

    3.2 自定义jenkins插件

    解锁 Jenkins之后,在 Customize Jenkins 页面内, 您可以安装任何数量的有用插件作为您初始步骤的一部分。

    两个选项可以设置:

    • 安装建议的插件 - 安装推荐的一组插件,这些插件基于最常见的用例.
    • 选择要安装的插件 - 选择安装的插件集。当你第一次访问插件选择页面时,默认选择建议的插件。

    在这里插入图片描述

    如果您不确定需要哪些插件,请选择 安装建议的插件 。 您可以通过Jenkins中的Manage Jenkins > Manage Plugins 页面在稍后的时间点安装(或删除)其他Jenkins插件 。

    设置向导显示正在配置的Jenkins的进程以及您正在安装的所选Jenkins插件集。这个过程可能需要几分钟的时间

    这里我选择安装推荐的插件
    在这里插入图片描述

    3.3 创建第一个管理员用户

    最后,在customizing Jenkins with plugins之后,Jenkins要求您创建第一个管理员用户。出现“ 创建第一个管理员用户 ”页面时, 请在各个字段中指定管理员用户的详细信息,然后单击 保存完成 。当 Jenkins准备好了 出现时,单击开始使用 Jenkins。
    在这里插入图片描述

    注意:这个页面可能显示 Jenkins几乎准备好了! 相反,如果是这样,请单击 重启 。如果该页面在一分钟后不会自动刷新,请使用Web浏览器手动刷新页面。如果需要,请使用您刚刚创建的用户的凭据登录到Jenkins,并准备好开始使用Jenkins!

    这里我直接创建用户名为admin,密码自定义:
    在这里插入图片描述

    点击保存并完成,然后进行实例配置:
    在这里插入图片描述

    提示配置jenkins URL,这里保持默认即可,继续点击保存并完成
    在这里插入图片描述

    提示jenkins已经就绪,现在就可以开始使用jenkins了:
    在这里插入图片描述


    3.4 jenkins实例似乎已离线问题

    在这里插入图片描述

    解决方案:

    • 1. 直接访问插件配置页面进行修改:/jenkins/pluginManager/advanced
      在这里插入图片描述

    • 2. 修改升级站点的url

      https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
      http://mirror.xmission.com/jenkins/updates/update-center.json
      http://ftp.tsukuba.wide.ad.jp/software/jenkins/updates/current/update-center.json
      http://updates.jenkins.io/update-center.json
      在这里插入图片描述

    • 3. 重启Jenkins
      重启后再次输入密码进入就是正常的啦,正常的页面如下:
      在这里插入图片描述

    4. Jekins相关配置

    4.1 Jenkins配置文件

    #查看jenkins的配置文件,定义了home、JAVA_CMD、user、port等基础配置,保持默认即可
    cat /etc/sysconfig/jenkins
    
    • 1  JENKINS_PORT:jekins启动的端口
    • 2  JENKINS_USER:jekins用户名

    需要关注两个配置,可以按需修改:

    • JENKINS_PORT:jekins启动的端口
    • JENKINS_USER:jekins用户名
      1 ## Path:        Development/Jenkins
      2 ## Description: Jenkins Automation Server
      3 ## Type:        string
      4 ## Default:     "/var/lib/jenkins"
      5 ## ServiceRestart: jenkins
      6 #
      7 # Directory where Jenkins store its configuration and working
      8 # files (checkouts, build reports, artifacts, ...).
      9 #
     10 JENKINS_HOME="/var/lib/jenkins"
     11 
     12 ## Type:        string
     13 ## Default:     ""
     14 ## ServiceRestart: jenkins
     15 #
     16 # Java executable to run Jenkins
     17 # When left empty, we'll try to find the suitable Java.
     18 #
     19 JENKINS_JAVA_CMD=""
     20 
     21 ## Type:        string
     22 ## Default:     "jenkins"
     23 ## ServiceRestart: jenkins
     24 #
     25 # Unix user account that runs the Jenkins daemon
     26 # Be careful when you change this, as you need to update
     27 # permissions of $JENKINS_HOME and /var/log/jenkins.
     28 #
     29 JENKINS_USER="jenkins"
     30 
     31 ## Type:        string
     32 ## Default: "false"
     33 ## ServiceRestart: jenkins
     34 #
     35 # Whether to skip potentially long-running chown at the
     36 # $JENKINS_HOME location. Do not enable this, "true", unless
     37 # you know what you're doing. See JENKINS-23273.
     38 #
     39 #JENKINS_INSTALL_SKIP_CHOWN="false"
     40 
     41 ## Type: string
     42 ## Default:     "-Djava.awt.headless=true"
     43 ## ServiceRestart: jenkins
     44 #
     45 # Options to pass to java when running Jenkins.
     46 #
     47 JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
     48 
     49 ## Type:        integer(0:65535)
     50 ## Default:     8080
     51 ## ServiceRestart: jenkins
     52 #
     53 # Port Jenkins is listening on.
     54 # Set to -1 to disable
     55 #
     56 JENKINS_PORT="8080"
     57 
     58 ## Type:        string
     59 ## Default:     ""
     60 ## ServiceRestart: jenkins
     61 #
     62 # IP address Jenkins listens on for HTTP requests.
     63 # Default is all interfaces (0.0.0.0).
     64 #
     65 JENKINS_LISTEN_ADDRESS=""
     66 
     67 ## Type:        integer(0:65535)
     68 ## Default:     ""
     69 ## ServiceRestart: jenkins
     70 #
     71 # HTTPS port Jenkins is listening on.
     72 # Default is disabled.
     73 #
     74 JENKINS_HTTPS_PORT=""
     75 
     76 ## Type:        string
     77 ## Default:     ""
     78 ## ServiceRestart: jenkins
     79 #
     80 # Path to the keystore in JKS format (as created by the JDK 'keytool').
     81 # Default is disabled.
     82 #
     83 JENKINS_HTTPS_KEYSTORE=""
     84 
     85 ## Type:        string
     86 ## Default:     ""
     87 ## ServiceRestart: jenkins
     88 #
     89 # Password to access the keystore defined in JENKINS_HTTPS_KEYSTORE.
     90 # Default is disabled.
     91 #
     92 JENKINS_HTTPS_KEYSTORE_PASSWORD=""
     93 
     94 ## Type:        string
     95 ## Default:     ""
     96 ## ServiceRestart: jenkins
     97 #
     98 # IP address Jenkins listens on for HTTPS requests.
     99 # Default is disabled.
    100 #
    101 JENKINS_HTTPS_LISTEN_ADDRESS=""
    102 
    103 
    104 ## Type:        integer(1:9)
    105 ## Default:     5
    106 ## ServiceRestart: jenkins
    107 #
    108 # Debug level for logs -- the higher the value, the more verbose.
    109 # 5 is INFO.
    110 #
    111 JENKINS_DEBUG_LEVEL="5"
    112 
    113 ## Type:        yesno
    114 ## Default:     no
    115 ## ServiceRestart: jenkins
    116 #
    117 # Whether to enable access logging or not.
    118 #
    119 JENKINS_ENABLE_ACCESS_LOG="no"
    120 
    121 ## Type:        integer
    122 ## Default:     100
    123 ## ServiceRestart: jenkins
    124 #
    125 # Maximum number of HTTP worker threads.
    126 #
    127 JENKINS_HANDLER_MAX="100"
    128 
    129 ## Type:        integer
    130 ## Default:     20
    131 ## ServiceRestart: jenkins
    132 #
    133 # Maximum number of idle HTTP worker threads.
    134 #
    135 JENKINS_HANDLER_IDLE="20"
    136 
    137 ## Type:        string
    138 ## Default:     ""
    139 ## ServiceRestart: jenkins
    140 #
    141 # Pass arbitrary arguments to Jenkins.
    142 # Full option list: java -jar jenkins.war --help
    143 #
    144 JENKINS_ARGS=""

    4.2 主程序目录

     1 ls /var/lib/jenkins/      #查看程序主目录
     2 
     3 config.xml                                      nodes
     4 hudson.model.UpdateCenter.xml                   plugins
     5 hudson.plugins.git.GitTool.xml                  queue.xml.bak
     6 identity.key.enc                                secret.key
     7 jenkins.CLI.xml                                 secret.key.not-so-secret
     8 jenkins.install.InstallUtil.lastExecVersion     secrets
     9 jenkins.install.UpgradeWizard.state             updates
    10 jenkins.model.JenkinsLocationConfiguration.xml  userContent
    11 jobs                                            users
    12 logs                                            workflow-libs
    13 nodeMonitors.xml
    • jobs 浏览器上面创建的任务都会存放在这里
    • logs 存放jenkins相关的日志
    • nodes 多节点时用到
    • plugins 插件所在目录
    • secrets 密码秘钥所在目录 //jobs和plugins目录比较重要

    5. 插件安装

    如果jenkins需要安装什么插件,可以直接安装即可。选择 系统管理 -> 管理插件

    在这里插入图片描述

    1)Maven Integration plugin 安装此插件才能构建maven项目
    在这里插入图片描述

    2)Deploy to container Plugin 安装此插件,才能将打好的包部署到tomcat上
    在这里插入图片描述

    6. 全局工具配置

    选择 系统管理 -> 全局工具配置

    6.1 JDK配置

    先把JDK安装到所在服务器,略,然后在Jenkins 全局工具配置 里,选择新增JDK,配置JAVA_HOME:

    在这里插入图片描述

    6.2 maven配置

    6.2.1 安装maven

    在所在服务器安装maven:

    官网地址:http://maven.apache.org/download.cgi

    安装比较简单,解压即可,配置一下本地仓库,镜像地址即可,过程略。
    配置环境变量:vim /etc/profile

    1  export M2_HOME=/data/apache-maven-3.6.1
    2  export M2=$M2_HOME/bin
    3  export PATH=$M2:$PATH

    在这里插入图片描述

    6.2.2 Jenkins配置maven

    同理在全局工具配置 里,选择新增Maven,配置MAVEN_HOME:
    在这里插入图片描述

    6.3 git配置

    6.3.1 git地址错误

    在这里插入图片描述

    原因分析:这是由于git客户端版本过低造成的!或者系统中没有安装git所造成的

    Jenkins本机默认使用"yum install -y git" 安装的git版本比较低,应该自行安装更高版本的git
    如果想要使用最新版的git,那还是得自己下载源码安装。

    6.3.2 安装git

    安装git

     1 # 安装编译git时需要的依赖
     2 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
     3 yum install  gcc perl-ExtUtils-MakeMaker
     4 
     5 # 安装编译源码所需依赖的时候,yum自动帮你安装了git,这时候你需要先卸载这个旧版的git。
     6 yum -y remove git
     7 
     8 cd /usr/local/src/
     9 wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.1.1.tar.gz # 下载源码包
    10 tar -zvxf git-2.1.1.tar.gz
    11 cd git-2.1.1
    12 
    13 make prefix=/usr/local/git all # 编译git源码
    14 make prefix=/usr/local/git install # 安装git至/usr/local/git路径

    添加git到环境变量

    1 echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
    2 source /etc/bashrc

    查看更新后的git版本和所在路径

    1 git --version
    2 whereis git

    6.3.3 设置git

    同理在全局工具配置 里,配置Git:

    查看git安装地址:
    在这里插入图片描述

    Path to Git executable,在此处填入 “whereis git” 查询出的地址 + “/bin/git” (如上面"whereis git"的地址为"/usr/local/git",则应该填入 “/usr/local/git/bin/git”) 并保存

    在这里插入图片描述

  • 相关阅读:
    高斯消元模板(通用+异或)
    矩阵快速幂模板
    hdu 6185 递推+矩阵快速幂
    欧几里得小结
    乘法逆元模板
    vijo 1456最小总代价
    MariaDB数据库
    docker基本命令
    std::tuple
    boost::asio
  • 原文地址:https://www.cnblogs.com/URNOTBENBEN/p/14387990.html
Copyright © 2020-2023  润新知