jenkins 订阅
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 [1] 展开全文
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 [1]
信息
应    用
Java开发
外文名
Jenkins
属    于
开源软件
中文名
Jenkins
功    能
集成工具
Jenkins功能
Jenkins功能包括:1、持续的软件版本发布/测试项目。2、监控外部调用执行的工作。
收起全文
精华内容
参与话题
问答
  • jenkins详解

    万次阅读 多人点赞 2017-12-26 13:33:01
    Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。Jenkins是一种软件允许...

    一、相关概念

    1.1 Jenkins概念:

    Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。Jenkins是一种软件允许持续集成。

    1.2 Jenkins目的:

    1、持续、自动地构建/测试软件项目。
    2、监控软件开放流程,快速问题定位及处理,提示开放效率。

    1.3 特性:

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

    1.4 产品发布流程:

    产品设计成型 -> 开发人员开发代码 -> 测试人员测试功能 -> 运维人员发布上线
    持续集成 (Continuous integration,简称CI)
    持续交付(Continuous delivery)
    持续部署(continuous deployment)

    二、安装部署

    2.1 yum安装

    最低配置: 不少于256M内存,不低于1G磁盘,jdk版本>=8
    安装jdk1.8

    yum install -y java-1.8.0-openjdk && \
    wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo && \
    rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key &&\
    yum clean all && yum makecache && \
    yum install -y jenkins && \
    systemctl start jenkins

    less /var/log/jenkins/jenkins.log //查询admin密码
    访问 http://ip:8080/ 进行安装
    jenkins相关目录:
    rpm -ql jenkins #查看jenkins安装相关目录
    安装目录/var/lib/jenkins
    配置文件 /etc/sysconfig/jenkins
    日志目录 /var/log/jenkins

    2.2 下载war包安装

    yum install -y java-1.8.0-openjdk && mkdir -p /usr/local/jenkins/ && \
    wget -c -O /usr/local/jenkins/jenkins.war http://mirrors.jenkins.io/war-stable/latest/jenkins.war &&\
    nohup java -jar /usr/local/jenkins/jenkins.war &

    密码查看:/root/.jenkins/secrets/initialAdminPassword
    访问 http://ip:8080/ 进行安装

    2.3 docker形式安装

    yum install docker -y  && systemctl start docker && \
    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s && systemctl restart docker
    docker search jenkins
    docker pull docker.io/jenkins
    docker run -d -p 8080:8080 docker.io/jenkins

    docker exec -it 52873fa3dce4 /bin/bash
    cat /var/jenkins_home/secrets #查看密码
    访问 http://ip:8080/ 进行安装

    2.4 相关工具安装

    工具安装可在jenkins的web界面系统管理—管理插件—可选插件勾选需要的,也可以手动安装。

    a.git安装

    yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc-c++ perl-ExtUtils-MakeMaker wget autoconf -y
    wget https://www.kernel.org/pub/software/scm/git/git-2.7.3.tar.gz
    tar xf git-2.7.3.tar.gz
    cd git-2.7.3
    make configure
    ./configure --prefix=/usr/local/git
    make profix=/usr/local/git
    make install
    echo "export PATH=$PATH:/usr/local/git/bin" > /etc/profile.d/git.sh
    source /etc/profile.d/git.sh

    b.maven安装

    cd /usr/local/ && wget -c wget  http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz &&\
    tar -zxf apache-maven-3.5.2-bin.tar.gz && \
    echo "export PATH=$PATH:/usr/local/apache-maven-3.5.2/bin" > /etc/profile.d/maven.sh && \
    source /etc/profile.d/maven.sh

    mvn –version 查看版本

    c.svn安装

    yum install subversion -y
    mkdir /svnrepo
    svnadmin create /svnrepo/project1      #创建一个新的Subversion项目




    启动项目1:svnserve -d -r /svnrepo/project1/
    启动整个项目:svnserve -d -r /svnrepo/

    d.jdk安装

    某些情况下会遇到openjdk无法编译java程序,或在编译中存在异常,需要我们手动安装jdk,首先去Oracle官网下载对应版本的jdk

    tar -zxvf jdk-8u121-linux-x64.gz -C /usr/local && \
    ln -sv /usr/local/jdk1.8.0_121 /usr/local/jdk1.8 && \
    echo "export PATH=$PATH:/usr/local/jdk1.8/bin" >/etc/profile.d/java.sh
    source /etc/profile.d/java.sh

    三、WEB界面配置

    3.1 密码破解


    cd /var/lib/jenkins/users/admin #此为admin用户的目录,也可以对应自己创建的用户
    vim config.xml //定位到<passwordHash>那一行
    删除改行,改为
    <passwordHash>#jbcrypt:$2a$10$pDQks0ytOkCfmpdgpLygrOC3uY7i/XnZHBKRQDhrBPwKoN2f5Kz8C</passwordHash>

    重启一下jenkins
    新密码为admin

    3.2 maven配置

    针对之前手动安装的maven需要在web界面配置进行结合。
    系统管理—全局工具配置(Maven Configuration)配置:

    此处为手动安装的maven,需要取消自动安装maven,name可以自定义,MAVEN_HOME指定下载安装的maven具体文件目录

    3.3 GIT配置

    手动安装的git,web界面只需添加具体可执行路径即可

    3.4 jdk配置

    对应手动安装的jdk,需要web配置java_home路径

    3.5 邮件配置

    jenkins有内置的邮件功能但由于其对于成功的发布不会发送邮件可定制化程度低,在此直接配置插件邮件(Editable Email Notification),2.32以上版本的jenkins,常用的插件都已经在最初部署的时候安装了(如果你当初选择的是suggest的plugins)。
    可以使用qq邮件服务器或163等其他邮件服务器,在此配置使用163邮箱,首先需要开启163邮箱的smtp服务。

    需要记录此处开启smtp时的密码。
    在jenkins 系统管理—系统设置—Extended E-mail Notification

    在默认的触发器 Default Triggers 标签下,可以勾选邮件通知触发的情况,如任何情况下均需要选择always,也可以在仅失败情况下发送,也可以对应的邮件接受人不通,进行邮件分类。
    以下的内容,如邮件主题,内容均可自定义,可以参考url:
    至此全局插件邮件已经配置完毕,需要在具体的项目中使用此邮件进行发送通知。

    四、实战php程序自动发布

    4.1 插件安装

    系统管理—管理插件—已安装
    检查是否有“Git plugin”和“Publish Over SSH”两个插件,如果没有,则需点击“可选插件”,找到它并安装
    安装好两个插件后,点击“系统管理”– “系统设置”

    4.2 SSH配置

    系统管理—系统设置—Publish over SSH
    在key内填写jenkins服务器的私钥,如果没有需要先在jenkins服务器生成私钥与公钥。ssh-keygen -t rsa回车后会在登录用户的家目录下生成一个.ssh 的目录,此目录下存在id_rsa私钥与id_rsa.pub公钥。且讲公钥发布至代码发布的目标服务器上ssh-copy-id -i /root/.ssh/id_rsa.pub root@IP

    SSH Server配置
    name:需要将php程序发布到目标服务器的名称,可自定义
    Hostname:填写目录服务器的IP地址
    Username:使用那个用户进行发布,此处为进行密钥互信的用户
    Remote Directory:此出为发布到目标服务器的相对根路径,建议填写/,防止后续填写路径异常。

    注:如果为多台目标服务器,可以继续添加,如果目标服务器存在代理,也可设置proxy

    4.3 构建项目

    新建Item—填入项目名称—选择构建一个自由风格的软件项目—确定
    源码管理选择git
    Repository URL 填写具体git上的仓库url,如果为私有,需要继续添加Credentials,如果为公有直接填写url即可,Credentials为none,

    构建后够操作
    选择(Send files or execute commands over SSH)
    SSH Server选择目标服务器如:php-server
    Source files:/ #将git拉去下来的原始文件
    Remote directory:/var/www/html #发布到目标服务器的制定目录
    Exec command:chown apache:apache -R /var/www/html/* #制定后续的操作

    此时可以选择Editable Email Notification来构建邮件通知。
    在此处,之前的邮件主题,内容均可以自定义,在高级里面,选择邮件接受人。

    点击保存,并立即构建,可以点击console output查看日志


    此时打开php程序发现程序文件已经成功发布到目标服务器上

    此时可以查看邮件也已经发送成功。

    展开全文
  • Jenkins入门(一)

    万次阅读 多人点赞 2018-09-25 15:30:29
    25.1 CI/CD介绍 互联网软件的开发和发布,已经形成了一套标准流程,假如把开发工作流程分为以下几个阶段: 编码 → 构建 → 集成 → 测试 → 交付 → 部署 正如你在上图中看到,持续集成(Continuous Integration)、...

    25.1 CI/CD介绍

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

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

    在这里插入图片描述

    正如你在上图中看到,持续集成(Continuous Integration)持续交付(Continuous Delivery)持续部署(Continuous Deployment)有着不同的软件自动化交付周期。


    持续集成(CI)

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

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

    它的好处主要有两个:

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

    在这里插入图片描述

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


    持续交付

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

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

    在这里插入图片描述

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


    持续部署(CD)

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

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

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

    在这里插入图片描述

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


    25.2 Jenkins介绍


    Jenkins概念

    Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。

    官网:https://jenkins.io/ 官方文档:https://jenkins.io/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安装

    安装最低配置:不少于256M内存,不低于1G磁盘,JDK版本>=8(openjdk也可以)。

    • 环境:
    hostname:lzx		ip:192.168.33.150		role:jenkins服务器
    
    hostname:lzx1		ip:192.168.33.160		role:部署机器
    
    • 安装jenkins:
    # yum install -y java-1.8.0-openjdk				#安装openjdk,jenkins基于java开发
    
    # wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo				#wget -O 下载文件并以指定的文件名保存
    
    # cat /etc/yum.repos.d/jenkins.repo 
    [jenkins]
    name=Jenkins
    baseurl=http://pkg.jenkins.io/redhat
    gpgcheck=1				#为1时会检测key
    
    # rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key				#安装jenkins key
    
    # yum install -y jenkins
    
    • 启动jenkins:
    # systemctl start jenkins
    
    # ps aux |grep jenkins
    jenkins    1157 84.7 10.0 2320896 100884 ?      Ssl  23:28   0:08 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
    
    # less /var/log/jenkins/jenkins.log				#查看jenkins日志,截取部分
    Jenkins initial setup is required. An admin user has been created and a password generated
    .
    Please use the following password to proceed to installation:
    
    77faa20f2ad544f7bcb6593b1cf1436b				#admin密码,初始化安装时会用到
    
    This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword				#admin密码也可以在这里查到
    
    • 访问安装:

    打开浏览器,访问ip:8080进行安装,ip为服务器ip

    在这里插入图片描述

    提示需要输入管理员密码,输入77faa20f2ad544f7bcb6593b1cf1436b(上面查到的admin密码),点击继续,会初始化一小段时间

    在这里插入图片描述

    这里我选择安装推荐的插件

    在这里插入图片描述

    这里就已经开始在安装插件,我们等它安装完就好了。


    了解Jenkins

    上面等插件安装完后,就进入到下面界面,提示要创建第一个admin用户,并设置用户名密码

    在这里插入图片描述

    这里我直接创建用户名为admin,密码自定义

    在这里插入图片描述

    点击保存并完成

    在这里插入图片描述

    提示配置jenkins URL,这里保持默认即可,继续点击保存并完成

    在这里插入图片描述

    提示jenkins已经就绪,开始使用jenkins

    在这里插入图片描述

    • 查看jenkins的配置文件:
    # cat /etc/sysconfig/jenkins				#查看jenkins的配置文件,定义了home、JAVA_CMD、user、port等基础配置,保持默认即可
    
    ## Path:        Development/Jenkins
    ## Description: Jenkins Automation Server
    ## Type:        string
    ## Default:     "/var/lib/jenkins"
    ## ServiceRestart: jenkins
    #
    # Directory where Jenkins store its configuration and working
    # files (checkouts, build reports, artifacts, ...).
    #
    JENKINS_HOME="/var/lib/jenkins"
    
    ## Type:        string
    ## Default:     ""
    ## ServiceRestart: jenkins
    #
    # Java executable to run Jenkins
    # When left empty, we'll try to find the suitable Java.
    #
    JENKINS_JAVA_CMD=""
    
    ## Type:        string
    ## Default:     "jenkins"
    ## ServiceRestart: jenkins
    #
    # Unix user account that runs the Jenkins daemon
    # Be careful when you change this, as you need to update
    # permissions of $JENKINS_HOME and /var/log/jenkins.
    #
    JENKINS_USER="jenkins"
    
    ## Type:        string
    ## Default: "false"
    ## ServiceRestart: jenkins
    #
    # Whether to skip potentially long-running chown at the
    # $JENKINS_HOME location. Do not enable this, "true", unless
    # you know what you're doing. See JENKINS-23273.
    #
    #JENKINS_INSTALL_SKIP_CHOWN="false"
    
    ## Type: string
    ## Default:     "-Djava.awt.headless=true"
    ## ServiceRestart: jenkins
    #
    # Options to pass to java when running Jenkins.
    #
    JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
    
    ## Type:        integer(0:65535)
    ## Default:     8080
    ## ServiceRestart: jenkins
    #
    # Port Jenkins is listening on.
    # Set to -1 to disable
    #
    JENKINS_PORT="8080"
    
    ## Type:        string
    ## Default:     ""
    ## ServiceRestart: jenkins
    #
    # IP address Jenkins listens on for HTTP requests.
    # Default is all interfaces (0.0.0.0).
    #
    JENKINS_LISTEN_ADDRESS=""
    
    ## Type:        integer(0:65535)
    ## Default:     ""
    ## ServiceRestart: jenkins
    #
    # HTTPS port Jenkins is listening on.
    # Default is disabled.
    #
    JENKINS_HTTPS_PORT=""
    
    ## Type:        string
    ## Default:     ""
    ## ServiceRestart: jenkins
    #
    # Path to the keystore in JKS format (as created by the JDK 'keytool').
    # Default is disabled.
    #
    JENKINS_HTTPS_KEYSTORE=""
    
    ## Type:        string
    ## Default:     ""
    ## ServiceRestart: jenkins
    #
    # Password to access the keystore defined in JENKINS_HTTPS_KEYSTORE.
    # Default is disabled.
    #
    JENKINS_HTTPS_KEYSTORE_PASSWORD=""
    
    ## Type:        string
    ## Default:     ""
    ## ServiceRestart: jenkins
    #
    # IP address Jenkins listens on for HTTPS requests.
    # Default is disabled.
    #
    JENKINS_HTTPS_LISTEN_ADDRESS=""
    
    
    ## Type:        integer(1:9)
    ## Default:     5
    ## ServiceRestart: jenkins
    #
    # Debug level for logs -- the higher the value, the more verbose.
    # 5 is INFO.
    #
    JENKINS_DEBUG_LEVEL="5"
    
    ## Type:        yesno
    ## Default:     no
    ## ServiceRestart: jenkins
    #
    # Whether to enable access logging or not.
    #
    JENKINS_ENABLE_ACCESS_LOG="no"
    
    ## Type:        integer
    ## Default:     100
    ## ServiceRestart: jenkins
    #
    # Maximum number of HTTP worker threads.
    #
    JENKINS_HANDLER_MAX="100"
    
    ## Type:        integer
    ## Default:     20
    ## ServiceRestart: jenkins
    #
    # Maximum number of idle HTTP worker threads.
    #
    JENKINS_HANDLER_IDLE="20"
    
    ## Type:        string
    ## Default:     ""
    ## ServiceRestart: jenkins
    #
    # Pass arbitrary arguments to Jenkins.
    # Full option list: java -jar jenkins.war --help
    #
    JENKINS_ARGS=""
    
    • 查看程序主目录:
    # ls /var/lib/jenkins/				#查看程序主目录
    config.xml                                      nodes
    hudson.model.UpdateCenter.xml                   plugins
    hudson.plugins.git.GitTool.xml                  queue.xml.bak
    identity.key.enc                                secret.key
    jenkins.CLI.xml                                 secret.key.not-so-secret
    jenkins.install.InstallUtil.lastExecVersion     secrets
    jenkins.install.UpgradeWizard.state             updates
    jenkins.model.JenkinsLocationConfiguration.xml  userContent
    jobs                                            users
    logs                                            workflow-libs
    nodeMonitors.xml
    

    上面,

    jobs		浏览器上面创建的任务都会存放在这里
    
    logs		存放jenkins相关的日志
    
    nodes		多节点时用到
    
    plugins		插件所在目录
    
    secrets		密码秘钥所在目录				#jobs和plugins目录比较重要
    

    jenkins存放数据不依靠数据库,所以在移植时只需要拷贝整个程序主目录即可。


    发布PHP代码

    • 查看插件:

    系统管理–>插件管理,“可选插件”是未安装的插件,“已安装”是已经安装的插件,其中勾选为灰色的是不可卸载的插件。

    检查是否有“Git plugin”和“Publish over SSH”两个插件,如果没有,在“可选插件”中安装。发现“Publish over SSH”没有,安装它

    在这里插入图片描述

    安装完插件后,直接在linux机器上重启jenkins服务,而不是勾选空闲时重启

    # systemctl restart jenkins
    

    重新在浏览器上登录jenkins,并在linux机器上生成一对秘钥

    # cd ~/.ssh/
    
    # ls				#如果之前有生成过密钥对,那可以直接用,不需要再生成
    authorized_keys  known_hosts
    
    # ssh-keygen -f ~/.ssh/jenkins				#生成密钥对
    Generating public/private rsa key pair.
    Enter passphrase (empty for no passphrase):				#直接回车,也可以设置密码
    Enter same passphrase again:				#直接回车
    Your identification has been saved in /root/.ssh/jenkins.
    Your public key has been saved in /root/.ssh/jenkins.pub.
    The key fingerprint is:
    SHA256:VF7nN5V6pPco5DDnm8PUeu8OEg3VMj/IkgfYkqd/Hx4 root@lzx
    The key's randomart image is:
    +---[RSA 2048]----+
    |          = . o.o|
    |         * = +ooo|
    |        . = = *=.|
    |       . .oooO =o|
    |        S .B+.+.o|
    |           .=ooE.|
    |           oo=+ o|
    |            *..+ |
    |             o ++|
    +----[SHA256]-----+
    
    # cat jenkins				#查看私钥
    -----BEGIN RSA PRIVATE KEY-----
    MIIEpQIBAAKCAQEAu+H7NOAvrPYWwNPur64cwZYJz80MZdmQP44KJy1Zcqsfmawt
    axjbgzZSPyXSM9fDqo32dR4OR8PdqFdnSDWU8gXl2tgTcsUiy+y+1TB7ZdgzmI8Z
    LAAGKQsrWOFMBB9GCfBlAL6eGg4nnsnc4bDT2sJhZuzgfW/qK5AyWSCIm2wvfFw5
    1m2WcaslRzNwGkg2cFK4tuY0ZkiF/UfA+YC88RAhSbjFD5FQKLzSHmkZbxbSGC09
    cYtsZb3g4VwmkZUEuU/jy5nBUpxv54B6NjkvMxCVx9M/zviiTSZt+yRDaMySISxB
    /3Y9FP7R/3Rcf1ZXYGK32hmQ55pDlbcM0gCEFQIDAQABAoIBAD0uSFweiMfc1unx
    2W7R1sFfN1C4p8nev+9CNKIvTUpe2Qp0m9GdJZYjsUKo8Ts6jpfSZKgcom/SIzL3
    S0WjVR4+t2u9IxAji8I2FKpdgEFY1uxd5MeENn1VCseFjfhlqqv/4RQN/nPjmhlG
    CKxhpYs98vPOPQf70phe+1Y0ludtEztiJEM7viIsF8PLlCwf6P7S1JFIXXOAo+xQ
    JAHt3AlzUj+HVfq97SbS+cbhuR/MwvIMQs54AsyPOVtt1Q7AOniDw/bnX8JpE9mU
    diww6KHn/qQIB0DSWgvfyGwC6qM6C3nUv+EyybdJBcEsYAUH3SgZpBvu3smT2XN9
    MCAFegECgYEA524LrSj57hPSKdGO3RT/jVReq0fHJscqSELHAl40lPSKQm+vFK2L
    Z20jnQhPg9ebJQjqdkZ/J8EHuwuZjtiqYAeWUERcp5cEEm/BQZ5fB+vYlTZ+QXNa
    S6Z9ex2/+qBwY8bJeZR5LPEzVN2cENH8t6FiJO1/csgS3T+KAxnGZoECgYEAz9Ri
    CyGwoJs9IpEb3y9Q1AVeFvUQ47XQGJo4xD5nivJ3W/4XApajJl6hXoVp96Z0gXIR
    Hhqp+/d4MOlDSeAUPeHcW6gE0h8BYl25fXbvXSpA7rSv8QU+BtQ4vMpsKF5bpRNt
    vQjeJrPtHLuFJrOZ6yzov3s4EXlt0AbOBlWXW5UCgYEAvmn6zXRjfxFr3+B97UUz
    pnL+mWqrXyqLjXz0BOzB0rUJdPQzV44anvRbUv7dfZrOGcCmOL50LJ9T3wACTlfS
    hsR3Vn+IxJMqVIkCtxy5D+lrAAogA3YHmyrXH48wv+N11YJfjtssgF/MXk0f9W7w
    wZ3VBJEsRaJ8cvGuejKg3QECgYEAzvoAun1O3mQ8OlSxoVAJ+11tGwftThofqKDO
    sAJGNEbNQDyIxfcnfGr54pyTsCOCG/hxu71qVJlchbmJXeVfw1FQl6d5RZnDUyds
    N9te/zW5fQFNx4clAsAP0VT26i0ur/PtcjmGpJzEI71NGgH75A7RrQEWEbERAAAG
    5qAPIRECgYEAjpNyIsvDYcEtBj/oCQCa3FdPsGqRaYmBZLqJ4nCP5DolYgJkewKx
    n5+AIYsXYYKB7W4a0uPKN6gMVVAkm0Icletpf9UpT51uMSR5JpqIwqOFNgI0+NkV
    +jlerYcD909WjV3OqrwZm7yPqwa2RPkIfCbeHnXbkAcv+DuWn4L8RdI=
    -----END RSA PRIVATE KEY-----
    

    系统管理–>系统设置,找到之前安装的Publish over SSH插件,Passphrase填写之前生成秘钥时设置的密码,没有则留空,Path to key留空,Key粘贴/root/.ssh/jenkins文件内容。

    在这里插入图片描述

    然后新增SSH Servers,填入对应的hostname,这就是PHP代码要发布的机器

    在这里插入图片描述

    接下来还需要把公钥拷贝到对应的hostname机器(lzx1)上

    # cat jenkins.pub
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC74fs04C+s9hbA0+6vrhzBlgnPzQxl2ZA/jgonLVlyqx+ZrC1rGNuDNlI/JdIz18OqjfZ1Hg5Hw92oV2dINZTyBeXa2BNyxSLL7L7VMHtl2DOYjxksAAYpCytY4UwEH0YJ8GUAvp4aDieeydzhsNPawmFm7OB9b+orkDJZIIibbC98XDnWbZZxqyVHM3AaSDZwUri25jRmSIX9R8D5gLzxECFJuMUPkVAovNIeaRlvFtIYLT1xi2xlveDhXCaRlQS5T+PLmcFSnG/ngHo2OS8zEJXH0z/O+KJNJm37JENozJIhLEH/dj0U/tH/dFx/VldgYrfaGZDnmkOVtwzSAIQV root@lzx
    

    到lzx1上粘贴jenkins.pub

    # cd ~/.ssh/
    
    # ls
    authorized_keys
    
    # vim authorized_keys				#写入下面内容
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC74fs04C+s9hbA0+6vrhzBlgnPzQxl2ZA/jgonLVlyqx+ZrC1rGNuDNlI/JdIz18OqjfZ1Hg5Hw92oV2dINZTyBeXa2BNyxSLL7L7VMHtl2DOYjxksAAYpCytY4UwEH0YJ8GUAvp4aDieeydzhsNPawmFm7OB9b+orkDJZIIibbC98XDnWbZZxqyVHM3AaSDZwUri25jRmSIX9R8D5gLzxECFJuMUPkVAovNIeaRlvFtIYLT1xi2xlveDhXCaRlQS5T+PLmcFSnG/ngHo2OS8zEJXH0z/O+KJNJm37JENozJIhLEH/dj0U/tH/dFx/VldgYrfaGZDnmkOVtwzSAIQV root@lzx
    

    lzx上登录lzx1测试

    # ssh lzx1
    root@lzx1's password: 
    Last login: Thu Sep 20 20:51:25 2018 from 192.168.33.1
    
    #exit       
    logout
    Connection to lzx1 closed.
    [root@lzx .ssh]#				#ssh登录没问题
    

    浏览器上测试连接有没有问题,点击Test Configuration,如果没问题,左侧会显示Success,如下图

    在这里插入图片描述

    这就说明我们前面的配置是没问题的。点击应用,出现“已保存”

    在这里插入图片描述

    如果有多台web server ,可以继续新增,重复以上操作,最后点击保存

    • 新建任务:

    回到首页,点击创建一个新任务,自定义任务名称,选择构建一个自由风格的软件项目

    在这里插入图片描述

    点击确定

    在这里插入图片描述

    描述自定义;源码管理选择Git(如果使用SVN就选择Subversion);Repository URL选择自己公共仓库的地址,这里为了方便我使用别人的公共仓库;Branches to build默认为*/master,意思是发布代码的分支为master分支;构建触发器构建环境留空;构建选择Send files or execute commands over SSHName选择对应的服务器,Source files填入**/**,表示要发布的代码为全部文件,Remote directory填入/tmp/jenkins_test(自定义一个存放PHP代码的文件夹名),Remove prefixExec command可以留空

    在这里插入图片描述

    点击Add Server可以增加更多台服务器,在生产环境下通常也是多台服务器一起发布代码。点击保存

    在这里插入图片描述

    点击左侧立即构建,会出现构建历史,其中#1表示第一次构建

    在这里插入图片描述

    点击#1,点击控制台输出

    在这里插入图片描述

    可以查看构建成功,通常构建完,不管是成功还是失败都会有邮件通知。这里因为没有配置邮件,所以没办法接收到邮件。

    到lzx1上查看

    # ll !$
    ll /tmp/jenkins_test/
    total 100
    drwxr-xr-x 2 root root    66 Sep 21 02:42 D11Z
    drwxr-xr-x 2 root root   260 Sep 21 02:42 D12Z
    drwxr-xr-x 2 root root    24 Sep 21 02:42 D13Z
    drwxr-xr-x 2 root root  4096 Sep 21 02:42 D14Z
    drwxr-xr-x 2 root root  4096 Sep 21 02:42 D15Z
    drwxr-xr-x 2 root root    25 Sep 21 02:42 D17Z
    drwxr-xr-x 2 root root    76 Sep 21 02:42 D18Z
    drwxr-xr-x 2 root root   155 Sep 21 02:42 D19Z
    drwxr-xr-x 2 root root    83 Sep 21 02:42 D20Z
    drwxr-xr-x 2 root root   200 Sep 21 02:42 D21Z
    drwxr-xr-x 2 root root   128 Sep 21 02:42 D22Z
    -rw-r--r-- 1 root root 18044 Sep 21 02:42 LICENSE
    -rw-r--r-- 1 root root   419 Sep 21 02:42 README.md
    -rw-r--r-- 1 root root 66243 Sep 21 02:42 习题答案.txt      
    

    和我们发布的源是一致的,如下图

    在这里插入图片描述

    如果在源上面做了变更,继续点击立即构建,如果构建成功,那么在目标机器上也可以看到变更的内容。


    Jenkins邮件配置

    系统管理系统设置,找到邮件通知进行配置,这里我使用的是163邮箱

    在这里插入图片描述

    在这里插入图片描述

    发邮件的地址必须与管理员地址一致,否则发邮件会报错。同时必须在163邮箱设置授权码,并且在上面设置密码的地方填入该授权码,不然也是发送不了邮件。

    在这里插入图片描述

    点击Test configuration,如果显示为“Email was successfully sent",说明邮箱配置成功

    在这里插入图片描述

    到163邮箱查看是否收到刚刚测试的邮件

    在这里插入图片描述

    收到了,邮件配置成功。点击保存,进入到之前的任务中,点击配置

    找到构建后操作,选择E-mail NotificationRecipients这里填入接收邮件的邮箱地址

    在这里插入图片描述

    勾选保持默认即可,点击保存

    现在来测试,故意让构建不成功,看是否能接收邮件。

    • 首先lzx1上更改目标目录的权限,使之无法写入:
    # cd /tmp/
    
    # rm -rf jenkins_test/*
    
    # chattr +i jenkins_test/				#加上i权限,让它无法写入
    
    • 回到浏览器,点击立即构建,查看控制台输出

    在这里插入图片描述

    • 到163邮箱进行查看:

    在这里插入图片描述

    邮件收到,邮箱配置成功。

    但这样有一点不好,只有构建失败才会发邮件提示,我想让它不管构建成功还是失败都发邮件提示。


    使用插件email-ext配置邮件

    想让它不管构建成功还是失败都发邮件来提示,就必须要安装一个插件,该插件名字是Email Extension Plugin。如果你是按照上面步骤来的,那么该插件就已经安装。系统管理插件管理查看是否安装此插件,没有就安装。

    在这里插入图片描述

    系统管理系统设置Extended E-mail Notification,填写SMTP server,勾选Use SMTP Authentication,再填写User NamePasswordPassword这里填邮箱授权码,然后SMTP port这里填25

    在这里插入图片描述

    往下拉,定位到Default Triggers,选择always,表示不管什么情况都会发邮件提示。之后再清空之前设置的邮箱通知,应用、保存即可

    在这里插入图片描述

    打开任务(我这里是lzx_php)→ 配置,去掉构建后操作,点击增加构建后操作步骤,选择Editable Email Notification,在Project Recipient List那里添加自己的邮箱,然后点击Advanced Setting,定位到Triggers,可以在Add Trigger处增加发邮件的条件

    在这里插入图片描述

    在这里插入图片描述

    现在来测试,看是否能接收邮件。

    • 先在lzx1上改回目标目录原来的权限:
    # chattr -i jenkins_test/				#让该目录可以写入
    
    • 回到浏览器,点击立即构建,查看控制台输出

    在这里插入图片描述

    • 到163邮箱进行查看:

    在这里插入图片描述

    邮件收到,邮箱配置成功。


    破解管理员密码

    人难免会犯些错误,如果我们不小心忘记了管理员密码,我们如何去修改回来呢?

    • lzx上编辑admin配置文件:
    # cd /var/lib/jenkins/users/admin/
    
    # ls
    config.xml
    
    # vim config.xml				#找到<passwordHash>这行,用下面一行替换掉原来的
    <passwordHash>#jbcrypt:$2a$10$eJAMBW3qb/ijrFsSxkJnDOB747e0mFWSR03UmLCn96E4N7vL5BYzC</passwordHash>
    
    这样你的密码就会被重置为123456啦
    
    • 重启服务,进入浏览器界面修改新的管理员密码:
    # systemctl restart jenkins				#需要重启服务,才能使用123456去登录
    

    回到浏览器界面,使用123456去登录,系统管理管理用户 → admin右侧设置齿轮图标,设置新的管理员密码,应用、保存即可

    在这里插入图片描述


    更多资料参考:

    持续集成是什么?

    使用email-ext替换Jenkins的默认邮件通知

    搭建jenkins实现自动化部署

    展开全文
  • Jenkins详细教程

    万次阅读 多人点赞 2019-08-23 14:26:57
    一、jenkins是什么? Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做...

    一、jenkins是什么?

            Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。

     

    二、CI/CD是什么?

             CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。借用网络图片对CI加以理解。

     

    CI

            CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。下图反应的是CI/CD 的大概工作模式。

     

    CI/CD

     

    三、使用Jenkins进行PHP代码(单元)测试、打包。

            Jenkins是一个强大的CI工具,虽然本身使用Java开发,但也能用来做其他语言开发的项目CI。下面讲解如何使用Jenkins创建一个构建任务。

     登录Jenkins, 点击左侧的新建,创建新的构建任务。

     

    跳转到如下界面。任务名称可以自行设定,但需要全局唯一。输入名称后选择构建一个自由风格的软件项目(其他选项不作介绍)。并点击下方的确定按钮即创建了一个构建任务。之后会自动跳转到该job的配置页面。

     

    新建自由风格的软件项目

     

    下图是构建任务设置界面,可以看到上方的几个选项"General", "源码管理", "构建触发器","构建环境", "构建", "构建后操作"。下面逐一介绍。

     

    1.General

    General是构建任务的一些基本配置。名称,描述之类的。

     

    General

    项目名称: 是刚才创建构建任务步骤设置的,当然在这里也可以更改。

    描述: 对构建任务的描述。  

    丢弃旧的构建: 服务器资源是有限的,有时候保存了太多的历史构建,会导致Jenkins速度变慢,并且服务器硬盘资源也会被占满。当然下方的"保持构建天数" 和 保持构建的最大个数是可以自定义的,需要根据实际情况确定一个合理的值。

    其他几个选项在这里不做介绍,有兴趣的可以查看Jenkins"帮助信息", 会有一个大概的介绍。不过这些"帮助信息"都是英文的。

     

    点击右方的这些"问号"查看"帮助信息"

     

    2.源码管理

    源码管理就是配置你代码的存放位置。

     

    源码管理

     Git: 支持主流的github 和gitlab代码仓库。因我们的研发团队使用的是gitlab,所以下面我只会对该项进行介绍。

    Repository URL:仓库地址

    Credentials:凭证。可以使用HTTP方式的用户名密码,也可以是RSA文件。 但要通过后面的"ADD"按钮添加凭证。

    Branches to build:构建的分支。*/master表示master分支,也可以设置为其他分支。

    源码浏览器:你所使用的代码仓库管理工具,如github, gitlab.  

    URL:填入上方的仓库地址即可。

    Version: 8.7   这个是我们gitlab服务器的版本。

    Subversion:就是SVN,这里不作介绍。

     

    3.构建触发器

    构建触发器,顾名思义,就是构建任务的触发器。

    触发远程构建(例如,使用脚本): 该选项会提供一个接口,可以用来在代码层面触发构建。这里不做介绍,后期可能会用到。

    Build after other projects are built: 该选项意思是"在其他projects构建后构建"。这里不作介绍,后期可能会用到该选项。

    Build periodically: 周期性的构建。很好理解,就是每隔一段时间进行构建。日程表类似        linux crontab书写格式。如下图的设置,表示每隔30分钟进行一次构建。

    周期构建

     

    Build when a change is pushed to GitLab:当有更改push到gitlab代码仓库,即触发构建。后面会有一个触发构建的地址,一般被称为webhooks。需要将这个地址配置到gitlab中,webhooks如何配置后面介绍。这个是常用的构建触发器。

    Poll SCM:该选项是配合上面这个选项使用的。当代码仓库发生改动,jenkins并不知道。需要配置这个选项,周期性的去检查代码仓库是否发生改动。

     

    十分钟检查一次

     

    4.构建环境

    构建环境就是构建之前的一些准备工作,如指定构建工具(在这里我使用ant)。

    构建环境中的构建工具

     

    With Ant:选择这个工具,并指定ant版本和jdk版本。这两个工具的版本我都事先在服务器上安装,并且在jenkins全局工具中配置好了。

    其他选项不作介绍,同样可以查看"帮助信息" 获得使用帮助。

     

    5.构建

           选择下方的增加构建步骤。

     

    增加构建步骤

    可以选择的项很多。这里就介绍"Invoke Ant" 和"Execute shell".

    Eexcute shell: 执行shell命令,该工具是针对linux环境的,windows环境也有对应的工            具"Execute Windows batch command"。 在构建之前,可能我们需要执行一些命令,比如压缩包的解压之类的。为了演示,我就简单的执行  "echo $RANDOM" 这样的linux shell下生产随机数命令。

    Invoke Ant:Ant是一款java项目构建工具,当然也能用来构建php。

     

     

     

    Ant Version: 选择Ant版本。这个ant版本是安装在jenkins服务器上的版本,并且需要在jenkins"系统工具"中设置好。

    Targets:要执行的操作,一行一个操作任务。以上图为例,build是构建,tar是打包。

    Build File: 是Ant构建的配置文件,如果不指定,则是在项目路径下的workspace目录中的build.xml。build.xml文件具体怎么配置,后面再细讲。

    properties: 设定一些变量,这些变量可以在build.xml 中被引用。

    Send files or execute commands over SSH:发送文件到远程主机或执行命令(脚本)

     

    Name: SSH Server的名称。SSH Server可以在jenkins-系统设置中配置。

    source files: 需要发送给远程主机的源文件。

    Remove prefix: 移除前面的路径。如果不设置这个参数,则远程主机会自动创建构建源 source files 包含的那个路径。

    Remote directory: 远程主机目录。

    Exec command:在远程主机上执行的命令,或者执行的脚本。

     

     

    6.构建后操作

            构建后操作,就是对project构建完成后的一些后续操作,比如生成相应的代码测试报告。

     

     

    邮件通知

    Publish Clover PHP Coverage Report:发布代码覆盖率xml格式的文件报告。路径会在"build.xml"文件中定义

    Publish HTML reports:发布代码覆盖率的HTML报告。  

    Report Crap: 发布crap报告

    E-mail Notification:  邮件通知,构建完成后发邮件到指定的邮箱。

    以上配置完成后,点击保存。

    7.其他相关配置

     SSH Server配置

    登录jenkins -- 系统管理 -- 系统设置

    配置请看下图

     

    SSH SERVER

    SSH Servers: 由于jenkins服务器公钥文件我已经配置好,所以之后新增SSH Servers 只需要配置这一项即可。 

    Name: 自定义,需要全局唯一。

    HostName: 主机名,直接用ip地址即可。

    Username: 新增Server的用户名,这里配置的是root。

    Remote Directory: 远程目录。jenkins服务器发送文件给新增的server默认是在这个目录。

     

    Ant 配置文件 "build.xml"

    接下来讲解Ant 构建配置文件"build.xml"。 之所以是build.xml 这是因为官方惯例。就好比任何编程语言的入门都会是打印"Hello world".  你也可以用其他名称代替"build.xml" .

    下面针对配置文件"build.xml" 关键配置进行说明。

    project name就是项目名称,和jenkins所创建的对应。

    target name="build" 就是构建的名称,和jenkins构建步骤 那里的targets对应。depends指明构建需要进行的一些操作。

    property 用来设置变量。

    fileset 这一行指明了一个文件夹,用include来指明需要包含的文件,exclude指明不包含的文件,"tar"即是打包这个文件夹中匹配到的文件。

    下面的这些target都是一些实际的操作步骤,比如make_runtime这个"target" 就是创建了一些目录。phpcs就是利用PHP_CodeSniffer这个工具 对PHP代码规范与质量检查工具。

     

     

    最后这个target "tar" 就是打包文件。因为上面的build 并没有包含这个target,所以默认情况下,执行build是不会打包文件的,所以在jenkins project配置界面,Ant构建那一步的targets,我们才会有"build" 和 "tar" 这两个targets。如果build.xml 中 "build"这个target depends中已经包含"tar" , 就不需要在jenkins中增加"tar"了。

    其他一些target 都是利用一些工具对php代码的操作,比如phpunit是进行php单元测试。这一些方面我没有深入的研究,只是进行了一些简单的配置,毕竟不是这方面的专业人士。

     

    配置 Gitlab webhooks

    在gitlab的project页面 打开settings,再打开 web hooks 。点击"ADD WEB HOOK" 添加webhook。把之前jenkins配置中的那个url 添加到这里,添加完成后,点击"TEST HOOK"进行测试,如果显示SUCCESS 则表示添加成功。

     

     

     

     

     

     

    配置phpunit.xml

    phpunit.xml是phpunit这个工具用来单元测试所需要的配置文件。这个文件的名称同样也是可以自定义的,但是要在"build.xml"中配置好名字就行。默认情况下,用"phpunit.xml", 则不需要在"build.xml"中配置文件名。

     

    build.xml中phpunit配置

    fileset dir 指定单元测试文件所在路径,include指定包含哪些文件,支持通配符匹配。当然也可以用exclude关键字指定不包含的文件。

     

     

    四、进行jenkins project 构建

    第一次配置好jenkins project之后,会自动触发一次构建。此后,每当有commit 提交到master分支(前面设置的是master分支,也可以设置为其他分支),就会触发一次构建。当然也可以在project页面手动触发构建。点击左边的"立即构建" 手动触发构建。

     

    手动触发构建

     

    五、构建结果说明

    构建状态

    Successful蓝色:构建完成,并且被认为是稳定的。

    Unstable黄色:构建完成,但被认为是不稳定的。

    Failed红色:构建失败。

    Disable灰色:构建已禁用

     

    构建稳定性

    构建稳定性用天气表示:晴、晴转多云、多云、小雨、雷阵雨。天气越好表示构建越稳定,反之亦然。

     

    构建历史界面

     console output: 输出构建的日志信息

    六、jenkins权限管理

    由于jenkins默认的权限管理体系不支持用户组或角色的配置,因此需要安装第三发插件来支持角色的配置,本文将使用Role Strategy Plugin。基于这个插件的权限管理设置请参考这篇文章:http://blog.csdn.net/russ44/article/details/52276222,这里不作详细介绍。

     

    至此,就可以用jenkins周而复始的进行CI了,当然jenkins是一个强大的工具,功能绝不仅仅是以上这些,其他方面要是以后用到,我会更新到这篇文章中。有疑问欢迎在下方留言。

    最后,放上一张Jenkins的思维导图

    作者:哥本哈根月光

    来源:简书

    本文原文地址:https://www.jianshu.com/p/5f671aca2b5a

    展开全文
  • 大神对jenkins的详解步骤

    万次阅读 2018-10-15 22:36:46
    Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。Jenkins是一种软件允许...

     

     

    一、相关概念

    1.1 Jenkins概念:

    Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。Jenkins是一种软件允许持续集成。

    1.2 Jenkins目的:

    1、持续、自动地构建/测试软件项目。 
    2、监控软件开放流程,快速问题定位及处理,提示开放效率。

    1.3 特性:

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

    1.4 产品发布流程:

    产品设计成型 -> 开发人员开发代码 -> 测试人员测试功能 -> 运维人员发布上线 
    持续集成 (Continuous integration,简称CI) 
    持续交付(Continuous delivery) 
    持续部署(continuous deployment)

    二、安装部署

    2.1 yum安装

    最低配置: 不少于256M内存,不低于1G磁盘,jdk版本>=8 
    安装jdk1.8

    yum install -y java-1.8.0-openjdk && \
    wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo && \
    rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key &&\
    yum clean all && yum makecache && \
    yum install -y jenkins && \
    systemctl start jenkins
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    less /var/log/jenkins/jenkins.log //查询admin密码 
    访问 http://ip:8080/ 进行安装 
    jenkins相关目录: 
    rpm -ql jenkins #查看jenkins安装相关目录 
    安装目录/var/lib/jenkins 
    配置文件 /etc/sysconfig/jenkins 
    日志目录 /var/log/jenkins

    2.2 下载war包安装

    yum install -y java-1.8.0-openjdk && mkdir -p /usr/local/jenkins/ && \
    wget -c -O /usr/local/jenkins/jenkins.war http://mirrors.jenkins.io/war-stable/latest/jenkins.war &&\
    nohup java -jar /usr/local/jenkins/jenkins.war &
    • 1
    • 2
    • 3

    密码查看:/root/.jenkins/secrets/initialAdminPassword 
    访问 http://ip:8080/ 进行安装

    2.3 docker形式安装

    yum install docker -y  && systemctl start docker && \
    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s && systemctl restart docker
    docker search jenkins
    docker pull docker.io/jenkins
    docker run -d -p 8080:8080 docker.io/jenkins
    • 1
    • 2
    • 3
    • 4
    • 5

    docker exec -it 52873fa3dce4 /bin/bash 
    cat /var/jenkins_home/secrets #查看密码 
    访问 http://ip:8080/ 进行安装

    2.4 相关工具安装

    工具安装可在jenkins的web界面系统管理—管理插件—可选插件勾选需要的,也可以手动安装。

    a.git安装

    yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc-c++ perl-ExtUtils-MakeMaker wget autoconf -y
    wget https://www.kernel.org/pub/software/scm/git/git-2.7.3.tar.gz
    tar xf git-2.7.3.tar.gz
    cd git-2.7.3
    make configure
    ./configure --prefix=/usr/local/git
    make profix=/usr/local/git
    make install
    echo "export PATH=$PATH:/usr/local/git/bin" > /etc/profile.d/git.sh
    source /etc/profile.d/git.sh
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    b.maven安装

    cd /usr/local/ && wget -c wget  http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz &&\
    tar -zxf apache-maven-3.5.2-bin.tar.gz && \
    echo "export PATH=$PATH:/usr/local/apache-maven-3.5.2/bin" > /etc/profile.d/maven.sh && \
    source /etc/profile.d/maven.sh
    • 1
    • 2
    • 3
    • 4

    mvn –version 查看版本

    c.svn安装

    yum install subversion -y
    mkdir /svnrepo
    svnadmin create /svnrepo/project1      #创建一个新的Subversion项目
    • 1
    • 2
    • 3

     
     
     
    启动项目1:svnserve -d -r /svnrepo/project1/ 
    启动整个项目:svnserve -d -r /svnrepo/

    d.jdk安装

    某些情况下会遇到openjdk无法编译java程序,或在编译中存在异常,需要我们手动安装jdk,首先去Oracle官网下载对应版本的jdk

    tar -zxvf jdk-8u121-linux-x64.gz -C /usr/local && \
    ln -sv /usr/local/jdk1.8.0_121 /usr/local/jdk1.8 && \
    echo "export PATH=$PATH:/usr/local/jdk1.8/bin" >/etc/profile.d/java.sh
    source /etc/profile.d/java.sh
    • 1
    • 2
    • 3
    • 4

    三、WEB界面配置

    3.1 密码破解


    cd /var/lib/jenkins/users/admin #此为admin用户的目录,也可以对应自己创建的用户 
    vim config.xml //定位到<passwordHash>那一行 
    删除改行,改为 
    <passwordHash>#jbcrypt:$2a$10$pDQks0ytOkCfmpdgpLygrOC3uY7i/XnZHBKRQDhrBPwKoN2f5Kz8C</passwordHash> 

    重启一下jenkins 
    新密码为admin

    3.2 maven配置

    针对之前手动安装的maven需要在web界面配置进行结合。 
    系统管理—全局工具配置(Maven Configuration)配置: 

    此处为手动安装的maven,需要取消自动安装maven,name可以自定义,MAVEN_HOME指定下载安装的maven具体文件目录 

    3.3 GIT配置

    手动安装的git,web界面只需添加具体可执行路径即可 

    3.4 jdk配置

    对应手动安装的jdk,需要web配置java_home路径 

    3.5 邮件配置

    jenkins有内置的邮件功能但由于其对于成功的发布不会发送邮件可定制化程度低,在此直接配置插件邮件(Editable Email Notification),2.32以上版本的jenkins,常用的插件都已经在最初部署的时候安装了(如果你当初选择的是suggest的plugins)。 
    可以使用qq邮件服务器或163等其他邮件服务器,在此配置使用163邮箱,首先需要开启163邮箱的smtp服务。 

    需要记录此处开启smtp时的密码。 
    在jenkins 系统管理—系统设置—Extended E-mail Notification 

    在默认的触发器 Default Triggers 标签下,可以勾选邮件通知触发的情况,如任何情况下均需要选择always,也可以在仅失败情况下发送,也可以对应的邮件接受人不通,进行邮件分类。 
    以下的内容,如邮件主题,内容均可自定义,可以参考url: 
    至此全局插件邮件已经配置完毕,需要在具体的项目中使用此邮件进行发送通知。

    四、实战php程序自动发布

    4.1 插件安装

    系统管理—管理插件—已安装 
    检查是否有“Git plugin”和“Publish Over SSH”两个插件,如果没有,则需点击“可选插件”,找到它并安装 
    安装好两个插件后,点击“系统管理”– “系统设置”

    4.2 SSH配置

    系统管理—系统设置—Publish over SSH 
    在key内填写jenkins服务器的私钥,如果没有需要先在jenkins服务器生成私钥与公钥。ssh-keygen -t rsa回车后会在登录用户的家目录下生成一个.ssh 的目录,此目录下存在id_rsa私钥与id_rsa.pub公钥。且讲公钥发布至代码发布的目标服务器上ssh-copy-id -i /root/.ssh/id_rsa.pub root@IP

    SSH Server配置 
    name:需要将php程序发布到目标服务器的名称,可自定义 
    Hostname:填写目录服务器的IP地址 
    Username:使用那个用户进行发布,此处为进行密钥互信的用户 
    Remote Directory:此出为发布到目标服务器的相对根路径,建议填写/,防止后续填写路径异常。 

    注:如果为多台目标服务器,可以继续添加,如果目标服务器存在代理,也可设置proxy

    4.3 构建项目

    新建Item—填入项目名称—选择构建一个自由风格的软件项目—确定 
    源码管理选择git 
    Repository URL 填写具体git上的仓库url,如果为私有,需要继续添加Credentials,如果为公有直接填写url即可,Credentials为none,

    构建后够操作 
    选择(Send files or execute commands over SSH) 
    SSH Server选择目标服务器如:php-server 
    Source files:/ #将git拉去下来的原始文件 
    Remote directory:/var/www/html #发布到目标服务器的制定目录 
    Exec command:chown apache:apache -R /var/www/html/* #制定后续的操作 

    此时可以选择Editable Email Notification来构建邮件通知。 
    在此处,之前的邮件主题,内容均可以自定义,在高级里面,选择邮件接受人。 

    点击保存,并立即构建,可以点击console output查看日志 


    此时打开php程序发现程序文件已经成功发布到目标服务器上 

    此时可以查看邮件也已经发送成功。 

    转载自  KaliArch  https://blog.csdn.net/qq_26848099/article/details/78901240

     

    展开全文
  • jenkins教程

    万次阅读 多人点赞 2018-06-14 15:50:57
    最近接了公司的挺多...jenkins的作用和它的图标表现出来的一样,就是为了做工作的时候,能够比较轻松,像一个绅士一样游刃有余。 一、安装 1、进入官网,找到download 找来找去,在最下面有个.war 因为我是做...
  • 1、构建jenkins jenkins是有状态的服务,我们需要建一个数据存储,这里我们试用nfs的动态存储StorageClass 准备nfs服务 每台机器都要安装nfs yum install -y nfs-utils 这里我们将192.168.25.137作为nfs...
  • jenkins # jenkins构建CI_CD

    2020-10-31 10:33:25
    jenkins jenkins CI/CD 持续集成/持续发布 开发(git) -->git主库–>jenkins(git+jdk+tomcat+maven打包+测试)–>发布到tomcat服务器 jenkins Jenkins是帮我们将代码进行统一的编译打包、还可以放到...
  • Jenkins构建CI/CD持续集成/持续发布平台
  • 如何Jenkins构建CI/CD

    2020-05-13 21:04:35
    Jenkins构建CI/CD 什么是CI/CD:持续集成/持续发布–开发(git) -->git主库–>jenkins(git+jdk+tomcat+maven打包+测试)–>发布到tomcat服务器 主要是三种方法: 持续集成:代码合并,构建,部署,测试都在...
  • jenkins集成实现CI/CD

    2020-08-16 21:32:07
    jenkins集成实现CI/CD 环境 主机名称 ip地址 jenkins+gitlab 192.168.10.33 1. gitlab服务 1. 安装11.9.11版本 GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,...
  • jenkins之搭建部署

    万次阅读 2019-05-29 18:07:27
    25.1 CI/CD介绍 互联网软件的开发和发布,已经形成了一套标准流程,假如把开发工作流程分为以下几个阶段: 编码 --> 构建 --> 集成 --> 测试 --> 交付 --> 部署 ...正如你在上图中看到,[持续集成...
  • 一、Jenkins简介 官网链接:https://jenkins.io/zh/ 用户手册:https://jenkins.io/zh/doc/ Jenkins下载:https://jenkins.io/download/ Jenkins 是一款开源 CI&CD 软件,是基于Java开发的一种持续集成工具...
  • Jenkins+Maven+SVN自动化部署java项目

    万次阅读 2018-07-20 19:42:27
    安装Jenkins 提示:首先Jenkins安装方式有2中,一种是yum安装,另一种是使用war的方式进行安装(war就需要安装tomcat) 官方文档:https://pkg.jenkins.io/redhat/ 如果我们想使用war包的方式可以直接下载war包...
  • 一、Jenkins简介 二、其他软件使用及安装配置 三、Jenkins安装 四、使用Jenkins完成项目的持续集成,持续部署 ( 一 ) Jenkins 初始化 ( 二 ) Jenkins配置( Manage Jenkins) ( 三 ) Jenkins持续集成( CI ) 一...
  • Jenkins自动构建部署项目到远程服务器上

    万次阅读 多人点赞 2018-07-08 16:22:22
    1.下载jenkins 下载地址:https://jenkins.io/ 启动jenkins方式有2种 1.1切换到jenkins.war包的存放目录 启动命令: java -jar jenkins.war 启动jenkins 访问: localhost:8080 就能...
  • Jenkins

    千次阅读 多人点赞 2017-01-02 13:52:20
    Jenkinsjenkins 一个持续集成和交付的服务器。Docker安装这里使用docker镜像的方式安装,如果不懂docker 请移步[docker.io]。下载如果比较慢请使用国内镜像库。docker pull jenkins启动大概分为三种情况: 直接启动...
  • jenkins

    万次阅读 多人点赞 2017-12-06 09:08:46
    发布,然后看呈现效果,这样的工作是频繁反复的在进行的,浪费了程序员的大量时间,那么能不能把这些工作自动化呢,只需要程序员更新代码到svn,然后自动的构建,发布,呈现效果,当然是可以的,通过jenkins和docker...
  • 最近在实习中接触了jenkins这个东西,所以花点时间了解了下。它可以在代码上传仓库(如github,gitee,gitlab)后,在jenkins(一个网站界面)中通过获取代码仓库中最新代码,进行自动化部署,而省去手动打包、上传...
  • Jenkins使用教程

    万次阅读 多人点赞 2018-05-02 16:22:36
    Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。本文以 CentOS7 环境为例,总结了 Jenkins 的安装与配置、邮件功能使用,并接入阿里巴巴的...
  • linux下搭建Jenkins实现自动化部署

    万次阅读 2019-01-14 18:26:15
    安装Jenkins 1.下载 Jenkins官方地址 https://jenkins.io/download/ sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo sudo rpm --import ...
  • 初试 Jenkins 使用 Kubernetes Plugin 完成持续构建与发布

    万次阅读 热门讨论 2018-03-31 11:56:47
    持续构建与发布是我们日常工作中必不可少的一个步骤,目前大多公司都采用 Jenkins 集群来搭建符合需求的 CI/CD 流程,然而传统的 Jenkins Slave 一主多从方式会存在一些痛点,比如:主 Master 发生单点故障时,整个...
  • Jenkins的详细安装及使用

    万次阅读 多人点赞 2018-02-27 10:20:43
    操作环境:Windows 一、环境准备 1 安装JDK &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; 本文采用jdk-8u111-windows-x64.exe; 2 配置tomcat &amp;...nbs
  • 最最最全的Jenkins插件开发教程

    万次阅读 2018-11-07 12:32:32
    一、环境依赖  JDK版本要求在1.6以上,Maven官方要求版本在3以上,此处本人使用的是JDK1.8 maven3.5.2 环境  然后呢就是你maven的 setting.xml(此setting文件直接放在了C:\Users\xie_7\.m2下)文件要变成这样: ...
  • 4、Jenkins 构建自动化平台、Jenkins 安装以及功能介绍、jenkins+ant+jmeter **整合,邮件服务通知设置。 5、本课程注重实践每一个知识点都有相对应的实例,本书覆盖的实例多达上百个,提高学员的动手...
  • Jenkins 持续集成综合实战

    万次阅读 多人点赞 2017-01-08 13:59:30
    Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。本文以 CentOS7 环境为例,总结了 Jenkins 的安装与配置、邮件功能使用,并接入阿里巴巴的...
  • jenkins运行shell

    万次阅读 2019-01-29 12:16:07
    jenkins在本机上构建项目时运行Shell,有2种方法 1 Excute Shell 此时会新建用户jenkins登录 但是有些命令不一定有权限,比如docker images: 报错: Got permission denied while trying to connect to the ...
  • 使用Jenkins+Maven+Git+Tomcat,来搭建持续集成环境,自动打包部署详细教程 服务器系统 centOS 1. 运行环境安装 1.1 安装 jdk 上传安装包,然后解压 [root@ianly ~]# tar -zxvf jdk-8u144-linux-x64.tar....
  • 在上一篇文章中介绍了在Jenkinsfile中通过parameters中的choice(下拉框)类型获取输入参数的方法,这篇文章将会继续介绍Jenkinsfile的parameters所支持的其他物种类型的使用方式。
  • 搭建GitLab+Jenkins持续集成环境图文教程

    万次阅读 多人点赞 2017-06-12 23:19:05
    Jenkins是一个自动化服务器,可以运行各种自动化构建、测试或部署任务。所以这两者结合起来,就可以实现开发者提交代码到GitLab,Jenkins以一定频率自动运行测试、构建和部署的任务,帮组开发团队更高效的集成和发布...
  • Jenkins 用户手册 - 使用 Jenkinsfile

    万次阅读 2018-03-04 15:15:06
    本节基于 入门章节 中的信息,并介绍了更多有用的步骤,常见模式,并演示了一些不重要的 Jenkinsfile 示例。 创建 Jenkinsfile 并上传到源代码控制,会带来几个直接的好处: 基于 Pipeline 的代码审查和迭代 审核...

空空如也

1 2 3 4 5 ... 20
收藏数 106,495
精华内容 42,598
关键字:

jenkins