美文网首页自动化测试
Git + jenkins 部署CI环境

Git + jenkins 部署CI环境

作者: BigJeffWang | 来源:发表于2017-06-27 20:40 被阅读203次

    Github配置:
    settings => Developer settings => Personal access tokens
    => 新增 tokens

    图片.png 图片.png

    配置钩子:


    图片.png

    Jenkins安装
    Jenkins基于Java, 所以需要先安装java。
    jdk官方下载: 地址

    图片.png
    图片.png
    选择符合你自己系统版本JDK,下载安装,配置,不懂可以百度,很简单,相信都会.

    Linux下安装java只要配置java环境变量即可。

    1. 首先,解压java到相应目录,我一般习惯把安装的软件放到目录/usr/local下。
      tar -zxvf jdk-8u131-linux-x64.tar.gz /usr/lib

    2. 编辑环境变量,在/etc/profile文件中添加环境变量,Linux的所有用户都可以使用。
      vim /etc/profile
      在文件最后添加内容如下(shift + g):
      export JAVA_HOME=/usr/lib/jdk1.8.0_131
      export PATH=$JAVA_HOME/bin:$PATH
      export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jart

    安装Jenkins
    CentOS 安装:

    sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
    sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
    yum install jenkins
    

    ubuntu简单来说需要下面四步:

    wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
    sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
    sudo apt-get update
    sudo apt-get install jenkins
    

    查看是否有安装好的程序进程 ps -aux |grep java

    启动关闭
    sudo service jenkins start/stop/restart

    启动报如下错误

    Starting Jenkins bash: /usr/bin/java: No such file or directory

    修改Jenkins启动配置文件,指定java安装路径。

    vim /etc/init.d/jenkins

    在candidates中第一行添加java路径,如下:

    candidates="
    /opt/soft/jdk1.8.0_60/bin/java
    /etc/alternatives/java
    /usr/lib/jvm/java-1.6.0/bin/java
    /usr/lib/jvm/jre-1.6.0/bin/java
    /usr/lib/jvm/java-1.7.0/bin/java
    /usr/lib/jvm/jre-1.7.0/bin/java
    /usr/lib/jvm/java-1.8.0/bin/java
    /usr/lib/jvm/jre-1.8.0/bin/java
    /usr/bin/java
    "

    修改防火墙允许8080端口访问
    firewall的修改方法:
    添加
    firewall-cmd --zone=public --add-port=8080/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
    重新载入
    firewall-cmd --reload

    iptables的修改方法:
    vim /etc/sysconfig/iptables

    加入

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

    重启防火墙生效

    sudo service iptables restart

    第一种:更换源的问题
    jenkins->系统管理->管理插件->高级


    图片.png

    把:http://updates.jenkins-ci.org/update-center.json
    换成:http://mirror.esuni.jp/jenkins/updates/update-center.json
    镜像地址查询:
    http://mirrors.jenkins-ci.org/status.html

    在浏览器中访问
    首次进入会要求输入初始密码如下图,
    初始密码在:/var/lib/jenkins/secrets/initialAdminPassword

    一、进入Jenkins
    在浏览器输入网址:http://localhost:8080/jenkins/,进入Jenkins;

    二、新建项目
    首页左侧点击”新建“,输入项目名称和指定构建什么类型的项目;
    其中,
    构建一个自由风格的软件项目:Jenkins主要功能,结合任何SCM和任何构建系统构建项目,甚至可以构建软件以外的系统
    构建一个maven项目:Jenkins利用指定POM.xml文件,大大减轻构建配置
    构建一个多配置项目:如多环境测试、平台指定构建等
    监控一个外部的任务:允许记录执行在外部Jenkins的任务,任务甚至运行在远程机器上
    复制已存在的job:


    这里,选择构建一个自由风格的软件项目;

    三、项目配置
    点击进入新建的项目,进行配置;

    0 基本配置

    图片.png

    丢弃旧的构建:可以只保留几天内的构建历史或只保留几个构建历史
    参数化构建过程:可以配置参数,每次执行构建时需要给参数赋值
    关闭构建:重新开启构建前不允许进行新的构建
    在必要时并发构建:
    Restrict where this project can be run:当配置slave节点后,通过该选择执行构建的节点,可以是master主机或slave节点

    源码管理

    图片.png

    构建触发器 构建环境 Bindings

    图片.png 图片.png 图片.png

    构建

    图片.png

    构建后操作

    图片.png

    系统管理 配置

    图片.png 图片.png 图片.png

    1 高级配置
    安静期:一个任务计划中的构建在开始前需要读取开始前的配置信息;不选中则使用系统默认值
    重复次数:若从版本库签除代码失败,则Jenkins会按指定次数重试后再放弃
    该项目的上游项目正在构建时阻止该项目构建:当项目有依赖关系时,需要勾选
    该项目的下游项目正在构建时阻止该项目构建:
    使用自定义的工作空间:每个Jenkins任务都会有唯一一个工作空间目录,下载源代码,构建的整个过程都是在这个工作空间中
    显示名称:仅供Jenkins Web页面显示

    2 源码管理
    Jenkins支持多种源码管理服务器;


    这里选择Git,因为本文主旨就是搭建Jenkins+Github环境;
    其中,
    Repository URL是你的Github上代码更新会触发Jenkins的repo的ssh key;
    Credentials是权限认证,需要添加,即输入访问该repo的用户名和密码;

    源码库浏览器是该repo的URL,是可选的;


    3 构建触发器
    根据项目需要,选择触发Jenkins的方式;
    其中,
    Trigger builds remotely (触发远程构建,如使用远程脚本触发自动构建):可通过电子邮件触发项目构建,或通过脚本提交一个构建请求
    Build after other projects are built (在其他项目构建完成后执行该构建):可设置多个依赖的jobs,当任意一个依赖的job成功构建后启动此构建,多个依赖的jobs之间用","隔开
    Build periodically (定期构建):不管源码是否有更新,周期构建,在”日程表“中定义触发时间
    Build when a change is pushed to Github (当源码更新推送到Github后执行该构建):
    Poll SCM (定期检查源码是否更新):定时检查源码更新,有更新则执行构建,没有更新就不执行;在”日程表“中定义触发时间
    其中,日程表用空格或Tab键分隔5个字段,分别代表"MINUTE(分钟,0~59)", "HOUR(小时,0~23)", "DOM(日,1~31)", "MONTH(月,1~12)", "DOW(星期,0~7)";


    这里,选择Poll SCM,参数值为"H/2 * * * *",即设置每2分钟检查Github的指定repo有无源码更新;
    (PS:对于Build when a change is pushed to Github,目前还没成功过);

    4 构建环境
    根据需要进行选择;
    Delete workspace before build starts:构建执行前删除工作区
    Abort the build if it's stuck:如果构建卡住,中止该构建
    Add timestamps to the Console Output:在控制台添加时间戳
    Use secret text(s) or file(s):使用密文


    这里,选择添加时间戳;

    5 构建
    Execute Windows batch command:执行Windows命令行,默认当前路径是当前job的workspace
    Execute shell:运行shell、Python、perl、ruby等脚本
    Invoke Ant:调用Ant构建

    Ant Version:指定使用的Ant版本,下拉列表中显示系统配置中配置的所有Ant版本,不要选择Defualt

    Targets:指定需要执行的Target,不填写时默认执行build脚本中的Default target

    Build File:指定需要执行的build脚本文件,可使用绝对路径或相对路径,默认相对路径根目录是当前任务的workspace

    Properties:指定Ant变量

    Java Options:若需要添加用户自定义的ANT_OPTS,在这里添加,如-Xmx512m

    Invoke top-level Maven targets:调用Maven构建

    Maven Version:指定所使用的Maven版本

    Goals:执行的Maven命令行,不需要加mvn

    POM:指定pom.xml文件


    这里,构建执行一个python程序;

    6 构建后操作
    Aggregate downstream test result:整合Downstream测试
    Archive the artifacts:将生成的文件存档,如.zip/.jar文件,以备以后下载用
    Build other projects:最常用操作,在一个构建任务完成后,可触发另一个构建任务,如部署任务完成后可触发下游任务自动化测试;根据不同场景选择不同的触发方式
    Publish JUnit test result report:将JUnit Test报告打印到展示平台
    Publish Javadoc:打印Javadoc
    Record fingerprints of files to track usage:Jenkins记录一个文件的指纹,用来追踪该jar包是什么时间打的
    Deploy war/ear to a Container:将包部署到一个容器上,目前支持Tomcat、JBoss、Glassfish

    WAR/EAR files:需要部署的war/ear包的文件,需要指定目录

    Context path:

    Container:选择容器,包括容器的对应版本

    Manage user name:管理员的用户名

    MAnager password:管理员的密码

    Tomcat URL:Tomcat URL地址

    Deploy on failure:配置任务失败时是否仍然部署

    Email Notification:邮件通知
    Editable Email Notification:

    四、执行构建
    1 手动执行
    点击"立即构建(build now)";

    执行结果:


    2 自动执行
    在Github指定repo上有源码更新,必须从本地push到远程主机;
    更新到远程主机之后2分钟,Jenkins检测有更新,则自动触发构建执行;
    执行结果:

    相关文章

      网友评论

        本文标题:Git + jenkins 部署CI环境

        本文链接:https://www.haomeiwen.com/subject/lutycxtx.html