目录

【一】:Jenkins 持续集成安装及使用简介

一、前言

二、初始化 Jenkins 插件和管理员用户

2.1 进入如下页面,输入上面出现的口令

2.2 进入选择安装插件的页面后,可以选择安装社区推荐的插件或自定义安装,此处选择前者

2.3 创建管理员用户

三、配置 Jenkins 构建工具

3.1 进入 jenkins 主界面

3.2 进入全局工具配置页面

3.3 配置 Maven

3.4 配置 JDK

3.5 配置 Git

四、构建作业

4.1 点击创建一个新任务,进入创建项目类型选择页面

4.2 进入构建作业的详细页面

4.3 源码管理

4.4 构建触发器

4.5 构建

五、构建

5.1 执行构建的方式

5.2 构建结果

5.3 查看控制台输出

5.4 部署

二.【Jenkins平台的部署与数据管理方法】

文章目录

一:Jenkins平台部署

1.前期准备

2.安装Jenkins

3.配置文件修改

1.添加Jenkins启动用户gsuser和工作目录

2.修改Jenkins配置

3.修改权限

4.安装插件,配置镜像源

3.【jenkins数据管理方法】

四.【创建第一个持续集成任务】

一、jenkins 介绍

二、下载安装启动

2.1 安装准备

2.2 安装ant

2.3.1 卸载原来安装的rpm包

2.3.2 安装jenkins

2.4 启动

2.4.1 安装jdk环境

2.4.2 在jenkins配置文件中配置

三、默认配置修改及初始化

3.1 修改配置文件

3.2 初始化

3.3 初始化安装插件

3.4 初始化配置

3.4.1 修改工作空间

3.4.2 全局配置ant

3.4.4 配置Credentials

4、建立 Jenkins 自动化持续集成项目

4.1 安装插件

4.1.1 常用插件

4.1.2 安装步骤

4.2 建立项目

4.2.1 新建项目

4.2.2 General

4.2.3 源码管理

4.2.4 构建触发器

4.2.5 构建环境

4.2.6 构建

4.2.7 构建后操作

4.3 监控

4.3.1 主页面介绍

4.3.2 构建状态查询

五、常见错误处理

5.1 java.lang.UnsupportedClassVersionError

5.2 command execution failed.Maybe you need to configure the job to choose one of your Ant installations?

5.3 JAVA_HOME is not defined correctly.

5.3 Unable to access the repository

5.4 can’t create file

六:把机器加入Jenkins节点实现节点管理

八:jenkins安全机制详解

Jenkins安全配置详解

重点:600G的学习资料,懂的都懂


【一】:Jenkins 持续集成安装及使用简介

一、前言

持续集成(Continuous integration,简称CI)指的是,频繁地(一天多次)将代码集成到主干。

持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。

二、初始化 Jenkins 插件和管理员用户

下载好 jenkins.war 包之后,在 cmd 下切换到下载目录,然后执行如下命令:

java -jar jenkins.war

启动了自带的 Jetty 服务器

生成随机口令

这样,jenkins 就开始启动了,它的 war 包中自带 Jetty 服务器,第一次启动 Jenkins 时,出于安全考虑,Jenkins 会自动生成一个随机的安装口令。注意控制台输出的口令,复制下来。在浏览器中输入地址:

http://localhost:8080/

首次启动 jenkins 时如果发现一直卡在启动界面,提示:Jenkins正在启动,请稍后...

你可以按 Ctrl + C 强制结束启动,然后再次执行上面的命令,发现就会继续启动了,或者可以修改一下配置文件,因为你所在网络可能被限制了,如下:

进入 jenkins 的工作目录,默认是:C:\Users\Administrator\.jenkins

也可以自定义 jenkins 的工作目录,设置 JENKINS_HOME 环境变量,启动 jenkins.war 后将被解压到 JENKINS_HOME 目录下,同时所有 jenkins 的 plugins 和 配置文件等也将被写入到 JENKINS_HOME 所设置的目录下。

打开 hudson.model.UpdateCenter.xml,将 http://updates.jenkins-ci.org/update-center.json 替换成 http://mirror.xmission.com/jenkins/updates/update-center.json,还是不行的话找到 updates 目录下的 default.json 把里面所有的谷歌地址改成百度的,即将 http://www.google.com/ 替换为 http://www.baidu.com/。

2.1 进入如下页面,输入上面出现的口令

启动后第一次进入如下页面

2.2 进入选择安装插件的页面后,可以选择安装社区推荐的插件或自定义安装,此处选择前者

一般至少需要安装如下几个插件:

Git/Subversion、SSH、Publish Over SSH、Maven 等。

2.3 创建管理员用户

填入账户信息后,进入完成页面:

安装完成。

三、配置 Jenkins 构建工具

用管理员账号第一次登录 Jenkins 后,需要在 "系统管理" -> "全局工具配置" 中,设置你要使用到的构建工具和 JDK 版本。

3.1 进入 jenkins 主界面

3.2 进入全局工具配置页面

点击 "系统管理" -> "全局工具配置"

进入后配置构建工具

3.3 配置 Maven

如果机器上已经安装了 Maven,则在 Maven_HOME 输入框中提供具体的安装路径。否则,你可以选择需要的 maven 版本,让 Jenkins 为你自动下载 maven。

3.4 配置 JDK

同理,如果机器上已经安装了 JDK,则在 JAVA_HOME 输入框中提供具体的安装路径。否则,你可以选择需要的 JDK 版本,让 Jenkins 为你自动下载 JDK。

3.5 配置 Git

如果之前没有为 Jenkins 安装 Git、Subversion(SVN)或 CVS 插件,可以在 "系统管理" -> "管理插件" 中安装。

四、构建作业

构建作业是 Jenkins 构建过程的核心。

4.1 点击创建一个新任务,进入创建项目类型选择页面

如果发现没有 "构建一个maven项目" 这一项,则需要安装 Maven Integration 插件,如下:

4.2 进入构建作业的详细页面

4.3 源码管理

根据自己项目的实际情况选择源码管理的方式:

4.4 构建触发器

其中有 5 个参数,分别表示:

MINUTE:Minutes within the hour(0-59)

HOUR:The hour of the day(0-23)

DOM:The day of the month(1-31)

MONTH:The month(1-12)

DOW:The day of the week(0-7)where 0 and 7 are sunday

常用配置:

0 * * * * 为每个小时执行一次

0 1 * * * 为没天的凌晨1点执行一次,这种配置的设置,适合执行一些冒烟的测试用例

第一个参数:min,0-59

第二个参数:hour:0-23

第三个参数:day:0-31

第四个参数:month:1-12

第五个参数:week:0-7(0 和 7 代表 Sunday)

Jenkins 中 "Poll SCM" 和 "Build periodically"的区别

Poll SCM:定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作,配置如下:

*/5 * * * * (每5分钟检查一次源码变化)

Build periodically:周期进行项目构建(它不care源码是否发生变化),配置如下:

0 2 * * * (每天2:00 必须build一次源码)

4.5 构建

在 "Build" 中,默认的项目根目录的 Root POM,即 pom.xml。如果 pom.xml 不在根目录下,就填入子目录,例如:cloud/pom.xml。

如果源码管理中选择 "None",此处点 "高级..." 可以自定义工作空间中的项目地址,如下:

保存上面的构建作业:

五、构建

构建作业之后,就可以执行构建过程了。

5.1 执行构建的方式

第一种:点击任务名称的右边的小三角,然后点击 "立即构建"

第二种:按照 "构建触发器" 中设置的 "日程表"定时自动触发构建

5.2 构建结果

第一列是 "上次构建状态显示",是一个圆形图标,一般分为四种:

蓝色:构建成功;

黄色:不确定,可能构建成功,但包含错误;

红色:构建失败;

灰色:项目从未构建过,或者被禁用;

如上显示蓝色,表示构建成功。

注意:手动触发构建的时间与自动定时构建的时间互不影响。

5.3 查看控制台输出

可以查看构建成功的控制台输出:

控制台信息显示将构建的 jar 包从项目的 target 目录下归档到了 jenkins 指定的目录下了

此目录显示按照不同的构建编号,构建成功的项目

这与该工程的构建历史中的编号相对应

如果构建失败,可以通过查看构建失败的控制台输出,来得到具体的出错信息,便于调试

点击后查看错误信息,如下:

第二列是 "编译晴雨表",如下:

如果看到你项目变成阴云或者下雨,说明你的项目稳定性不好,需要去查找原因,解决问题。

5.4 部署

如果要部署构建好的 war 包,可以在 Post Steps 中填上 shell 命令,直接用脚本部署。

另一种方式是创建另外一个构建项目,手动触发部署。

无论用哪种方式,都是为了确保编译、部署是通过持续集成服务器完成的,而不是某台开发机器。

二.【Jenkins平台的部署与数据管理方法】

文章目录

  • 一:Jenkins平台部署
    • 1.前期准备
    • 2.安装Jenkins
    • 3.配置文件修改
    • 4.安装插件,配置镜像源
      • 如有疑问,可评论区或私信交流!

一:Jenkins平台部署

1.前期准备

1.检查JDK是否安装,如果没有安装请安装,安装步骤:上传,解压,设置环境变量,引用环境变量

1
2
3
4
5
6
7
8
9
10
11

[root@localhost ~]# tar zxf jdk-8u191-linux-x64.tar.gz -C /opt/
[root@localhost ~]# vim /etc/profile
    '//尾行添加'
export JAVA_HOME=/opt/jdk1.8.0_191
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@localhost ~]# source /etc/profile
[root@localhost ~]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

2.安装Jenkins

1.上次软件包,创建安装目录,安装

1
2
3
4
5
6

[root@localhost ~]# ls
anaconda-ks.cfg  jenkins-2.190.3-1.1.noarch.rpm
[root@localhost ~]# mkdir -p /var/cache/jenkins
[root@localhost ~]# mkdir -p /var/log/jenkins
[root@localhost ~]# mkdir -p /var/lib/jenkins
[root@localhost ~]# rpm -ivh jenkins-2.190.3-1.1.noarch.rpm

3.配置文件修改

\#安装成功后Jenkins将作为一个守护进程随系统启动 \# 系统会创建一个“jenkins”用户来允许这个服务,如果改变服务所有者,同时需要修改/var/log/jenkins, /var/lib/jenkins, 和/var/cache/jenkins的所有者 \# 启动的时候将从/etc/sysconfig/jenkins获取配置参数 \# 默认情况下,Jenkins运行在8080端口,在浏览器中直接访问该端进行服务配置

1.添加Jenkins启动用户gsuser和工作目录

1
2
3
4

[root@localhost ~]# useradd gsuser -g wheel
[root@localhost ~]# id gsuser
uid=1000(gsuser) gid=10(wheel) 组=10(wheel)
[root@localhost ~]# mkdir -p /data/ota_soft/jenkins

2.修改Jenkins配置

1
2
3
4
5
6
7
8
9

[root@localhost ~]# vim /etc/sysconfig/jenkins
#工作目录
JENKINS_HOME="/data/ota_soft/jenkins"
#工作用户
JENKINS_USER="ota"
#java命令
JENKINS_JAVA_CMD="/opt/jdk1.8.0_191/bin/java"  #java命令
#配置在最后一行.
JENKINS_ARGS="--prefix=/jenkins"  #访问目录变为IP:PORT/jenkins/

3.修改权限

1
2
3

chown -R gsuser.wheel /data/ota_soft/jenkins
chown -R gsuser.wheel /var/log/jenkins
chown -R gsuser.wheel /var/cache/jenkins

注:目录权限一定要对,无法启动可以 清空 /var/log文件

4.安装插件,配置镜像源

1.安装插件某些客户环境无法上网,或者安装插件速度太慢,插件版本为2.190.3-1.1,如果想自己更新jenkins版本或插件请略过

1
2
3
4
5
6

上传
tar xf jenkins-2.190.3-1.1_plugins.tar.gz -C /data/ota_soft/jenkins/
systemctl restart jenkins.service  '//#重启服务  目录权限一定要对,无法启动可以 清空 /var/log文件'
'//等待一会,等待服务生成文件'
[root@localhost jenkins]#  ls -l /data/ota_soft/jenkins/updates/default.json
-rw-r--r-- 1 gsuser wheel 1996189 10月 23 17:45 /data/ota_soft/jenkins/updates/default.json

2.更换国内镜像源

1
2
3
4
5
6
7

[root@localhost jenkins]# sed -i 's#http://www.google.com#https://www.baidu.com#g' /data/ota_soft/jenkins/updates/default.json
[root@localhost jenkins]# sed -i 's#http://updates.jenkins-ci.org/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' /data/ota_soft/jenkins/updates/default.json
[root@localhost jenkins]# sed -i 's#https://updates.jenkins.io/update-center.json#https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json#g' /data/ota_soft/jenkins/hudson.model.UpdateCenter.xml
[root@localhost jenkins]# systemctl restart jenkins.service
[root@localhost ~]# systemctl enable jenkins.service
jenkins.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig jenkins on

3.配置nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

[root@localhost conf.d]# vim /etc/nginx/nginx.conf
server {<!-- -->
    listen 80;
      location /jenkins/ {<!-- -->
      proxy_pass http://192.168.174.220:8090/jenkins/;
        port_in_redirect on;
                   proxy_redirect  off;
                   proxy_set_header Host $host;
                   proxy_set_header X-Real-IP $remote_addr;
                   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

[root@localhost conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost conf.d]# nginx -s reload

4.浏览器访问

1
2

[root@localhost conf.d]# cat /data/ota_soft/jenkins/secrets/initialAdminPassword
    '//查看初始密码并登录'

等待安装

创建用户

接下来按提示操作即可

登录成功

\#如果出现输入管理员密码一直空白页面,请直接访问以下带路径地址,或重启jenkins http://域名:jenkins/pluginManager/advanced](http://ipport/)

3.【jenkins数据管理方法】

在这篇文章中总结和介绍一下Jenkins数据存储目录的相关信息以及备份和恢复相关的内容。

数据存储目录
Jenkins执行构建以及归档管理的时候需要一定的存储空间,缺省的情况下,此目录被设定至HOME目录~/.jenkins,但可以通过修改如下环境变量来修改此目录的位置:

环境变量:JENKINS_HOME

修改数据存储目录的方法
当然此此目录也可以在已经使用Jenkins后进行修改。这种情况只需要按照如下步骤即可:

步骤1: 停止Jenkins服务
步骤2: 移动JENKINS_HOME的原有目录设定到新目录,并设定JENKINS_HOME环境变量
注:如果是容器方式,只需要在修正JENKINS_HOME的环境变量或者卷的映射关系即可
*步骤3: 重新启动Jenkins服务
数据目录结构与文件
JENKINS_HOME下的目录结构与文件如下表所示:

类型    名称    名称    名称    名称    说明
文件    config.xml    -    -    -    Jenkins基本配置信息
文件    *.xml    -    -    -    其他各种配置文件
目录    userContent    -    -    -    通过userContent/(前缀为Jenkins访问地址)可以访问的文件可以保存在这个目录
目录    fingerprints    -    -    -    保存文件指纹记录
目录    plugins    -    -    -    插件设定目录
目录    workspace    -    -    -    工作目录
子目录    -    job名    -    -    workspace的子目录,以job名作为目录名,每个job有一个这样的目录
目录    jobs    -    -    -    job目录
子目录    -    job名    -    -    jobs的子目录,以job名作为目录名,每个job有一个这样的目录
文件    -    config.xml    -    -    job配置文件
文件    -    latest    -    -    最近一次成功构建的软链接
文件    -    builds    -    -    构建信息
子目录    –    -    构建编号    -    每次构建会产生一个构建目录
文件    –    -    -    build.xml    构建结果概要信息
文件    –    -    -    log    构建日志
文件    –    -    -    changelog.xml    变更日志信息
目录    updates    -    -    -    Jenkins内部使用,主要用来保存Jenkins可用的插件信息
目录    users    -    -    -    当需要使用Jenkins本地用户的数据库时,用户账户信息会保存在此目录中。
目录    war    -    -    -    Jenkins的war文件解压的目录
fingerprint
在Jenkins中,文件的fingerprint就是一个简单MD5校验和,Jenkins会维护着这样的MD5校验和的数据库,而对于每一个MD5校验和,Jenkins都会记录哪个项目的哪次构建的详细信息。而每次构建文件的指纹相关的这个数据库都会被更新。
为了避免过多的磁盘使用,Jenins不会直接保存实际的文件,而是保存其md5sum信息,保存的位置为:$JENKINS_HOME/fingerprints

清理策略
目录    说明    类型说明    清理策略
userContent    通过userContent/(前缀为Jenkins访问地址)可以访问的文件可以保存在这个目录    辅助功能目录,一般不会直接使用    一般无需进行清理,此目录一般不会被使用
fingerprints    保存文件指纹记录的目录    Jenkins追踪多项目之间文件使用的依赖关联时用到的特性,一般不会直接被操作使用    相关文件增长较小时可以考虑不进行特意清理措施
plugins    插件设定目录    系统设定目录    升级时需要进行备份,不可进行清理操作
workspace    工作目录    此目录的磁盘使用率会随着job使用的增加而增加    定期清理,保存一定期限使用到的job
jobs    job构建信息    此目录的磁盘使用率会随着job的增加和构建的增加    定期清理,保存一定期限使用到的job
updates    可用插件更新目录    Jenkins内部使用,主要用来保存Jenkins可用的插件信息    不会过度增长,可以不必进行清理
users    当需要使用Jenkins本地用户的数据库时,用户账户信息会保存在此目录中。    一般不会直接使用到此目录    无需进行定期清理
war    Jenkins的war文件解压的目录    -    无需进行定期清理
备份与恢复
备份与恢复都相对较为简单,尤其是容器化的方式,只需设定好卷的mapping与JENKINS_HOME的环境变量即可,但是需要注意如下事项

备份:可以在Jenkins服务启动或者停止的状态下进行备份。

恢复:需要注意在Jenkins服务停止的状态下进行恢复

常见插件
Workspace Cleanup Plugin
插件说明:
此插件用于在构建之前或者构建之后清除workspace目录下的内容,并可支持删除特定类型的文件

插件详细信息:
https://wiki.jenkins.io/display/JENKINS/Workspace+Cleanup+Plugin
Git userContent plugin
插件说明:
此插件用于和Jenkins的userContent目录进行关联,可以使用git进行相关的操作。其实际上是将$JENKINS_HOME/userContent作为git的仓库,管理员通过git的命令(pull或者push)对此仓库的内容进行操作,对历史履历信息也可以进行管理。

4【jenkins job工作机制】

Jenkins 像老板一样管理各种 job 。job 是 Jenkins 的一个执行计划,是一系列操作的集合,Jenkins 里的最常用的功能就是 job 的构建,即任务的构建。通过构建 job 即可让工人为你工作。

创建 job及配置步聚

可以通过如下步骤初步构建一个Jenkins 任务:

  1. 新建 Jenkins Job
  2. 类型选择自由风格:可以自由配置参数
  3. 设置构建记录的最大保留数:可以设置保留天数和构建次数
  4. 源码管理(可选择 SVN、Git):比如 Jenkins 需要从 Git 上拉代码,可配置 Git
  5. 通过构建,可以执行 Windows、Shell 命令触发脚本执行
  6. 添加构建参数:用于参数化构建,比如从外部给 job 传递用例名
  7. 设置定时构建,格式为分钟、小时、日期、月份、星期

配置详解

构建功能是Jenkins的核心功能,Jenkins任务具体的执行内容一般都由此配置进行控制,可以通过Shell脚本或者其他类型的脚本,定制化的完成任务。

以下面的脚本为例,下面的脚本执行的内容为切换到测试用例所在路径,并执行测试用例:

# 切换到测试脚本所在路径cd test_pytest/tests/# 执行pytest测试用例python3 -m pytest test_ui.py

定时构建代表任务的构建(执行)的频率,一旦添加此配置,就会按照设定的配置内容执行:

# 1.每30分钟构建一次
H/30 * * * *# 2.每2小时构建一次
H H/2 * * *# 3.每天早上8点构建一次
0 8 * * *# 4.每天的8点、12点、22点,1天构建3次
0 8,12,22 * * *# 5.每3分钟构建一次,每天0点至23:59,周一至周五执行该任务
H/3 0-23 * * 1-5

其他配置类型将会在后面的章节进行具体的介绍。

四.【创建第一个持续集成任务】

一、jenkins 介绍

  • 它是一个自动化的周期性的集成测试过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预,有利于减少重复过程以节省时间、费用和工作量;
  • 它需要有专门的集成服务器来执行集成构建;
  • 它需要有代码托管工具支持,比如SVN;
  • 官网地址地址:https://jenkins.io
  • Jenkins的主要目标是监控软件开发流程,快速显示问题;
  • jenkins持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,所以它有利于减少重复过程以节省时间、费用和工作量。

二、下载安装启动

本文介绍的是在CentOS系统下,用rpm包安装方式进行启动。

2.1 安装准备

软件

版本

说明

JDK

1.7.0_76

解压安装,注意设置好环境变量

ant

1.9.9

JDK1.7.x只能安装1.9.x系列ant

Jenkins

2.33

JDK1.7.x只能安装Jenkins2.3.x系列Jenkins

2.2 安装ant

ant是基于java的一款构建工具,通过配置build.xml,让项目可以进行编译,部署,打包。

因为我们要实现自动构建,所以首先要安装ant。

  • 从http://ant.apache.org 上下载tar.gz版ant

  • wget http://www-eu.apache.org/dist//ant/binaries/apache-ant-1.9.9-bin.tar.gz

  • 解压tar包

  • tar -zxvf apache-ant-1.9.9-bin.tar.gz

  • 移动到/usr/share下

  • cp -r apache-ant-1.9.9 /usr/share

  • 切换到/usr/share目录下,重命名

  • cd /usr/share

  • mv apache-ant-1.9.9 ant

  • 配置环境变量

  • vi /etc/profile

#set Ant enviroment

export ANT_HOME=/usr/share/ant

export PATH=PATH:PATH:ANT_HOME/bin

  • 立刻将配置生效

  • source /etc/proifle

  • 测试ant是否生效

  • ant -version

出现如下提示便表示安装成功。

ant的使用查看这篇文章:ant在持续集成的应用

2.3 卸载及安装jenkins

2.3.1 卸载原来安装的rpm包

  首先查看是否已经安装过jenkins

rpm -qa|grep jenkins

2.3.2 安装jenkins

# 下载jenkins-2.33-1.1.noarch.rpm
wget http://pkg.jenkins-ci.org/redhat/jenkins-2.33-1.1.noarch.rpm
#安装jenkins-2.33-1.1.noarch.rpm
sudo rpm -ih jenkins-2.33-1.1.noarch.rpm

出现如下图

表示安装成功,安装成功会自动生成下面文件:

/usr/lib/jenkins/jenkins.war            #WAR包
/etc/sysconfig/jenkins                  #配置文件
/var/lib/jenkins/                       #默认的JENKINS_HOME目录
/var/log/jenkins/jenkins.log            #Jenkins日志文件

2.4 启动

启动用如下命令:

sudo service jenkins start

报了如下错误:

会报这个错误,这是由于没有配置java环境,有两种方法可以解决:

2.4.1 安装jdk环境

  先检查一下java虚拟机有没有安装,如果没有就安装

java --version

2.4.2 在jenkins配置文件中配置

  需要“vi /etc/init.d/jenkins”,把jdk路径加上,如下:

# Search usable Java as /usr/bin/java might not point to minimal version required by Jenkins.
# see http://www.nabble.com/guinea-pigs-wanted-----Hudson-RPM-for-RedHat-Linux-td25673707.html
candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-1.7.0/bin/java
/usr/lib/jvm/jre-1.7.0/bin/java
/usr/bin/java
/home/lutong/soft/jdk1.7.0_76/bin/java
"
for candidate in $candidates
do[ -x "$JENKINS_JAVA_CMD" ] && breakJENKINS_JAVA_CMD="$candidate"
doneJAVA_CMD="$JENKINS_JAVA_CMD $JENKINS_JAVA_OPTIONS -DJENKINS_HOME=$JENKINS_HOME -jar $JENKINS_WAR"
PARAMS="--logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon"

上述配置文件中红色加粗字体的内容是我配置自己的jdk路径。由于我的系统中的java是自己解压安装的,所以我采用了第二种方式

再次启动jenkins:

三、默认配置修改及初始化

3.1 修改配置文件

上面我们有提到配置文件是/etc/sysconfig/jenkins,修改如下两项配置(根据实际需要设置)

#修改为18080,默认是8080
JENKINS_PORT="18080"
#内存设置,我这里设置成如下配置
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xms512m -Xmx1024m -XX:MaxNewSize=512m -XX:MaxPermSize=1024m"

3.2 初始化

  • 在浏览器中输入172.16.7.109:8080/jenkins(默认是使用8080端口)

打开jenkins的后台控制页面

初始化成功后会自动生成一个管理员密码放到指定位置,根据页面提示复制密码粘贴到输入框就可以登录了

3.3 初始化安装插件

  • 登录成功后回让你选择插件的安装,可以选择建议的安装也可以自己进行选择,不清楚的话可以使用建议的安装

    由于建议安装的插件比较多,安装的过程有点慢,多等待一会

  • 由于建议安装的插件比较多,安装的过程有点慢,多等待一会

  • 安装的过程也可能因为网络等一些原因安装会失败,现在可以无视它,点击Continue,后面再进行手动的安装

  • 安装完成

  • 安装完成后最好新创建一个管理员账户代替之前的临时自动生成的密码账户
  • 创建新的管理员账户

  • 初始化完成,进入后台管理界面

    初始化完成

    后台管理界面

    3.4 初始化配置

    3.4.1 修改工作空间

    从主页面直接到“系统管理>系统配置”,点击右边“高级”按钮

    在工作空间目录”直接修改默认工作空间目录为自定义的/home/jenkins/workspace/${ITEM_FULLNAME},如下图:

    3.4.2 全局配置ant

    从主页面直接到“系统管理>Global Tool Configuration”,点击右边“Ant安装”按钮,

    在name中填入名字,可以自己取,这里我填写成ant(到时Invoke Ant时,需要选择ant),ANT_HOME填入Ant的环境变量

    3.4.3 全局配置JDK

    从主页面直接到“系统管理>Global Tool Configuration”,点击右边“JDK安装”按钮,

    在name中填入名字,可以自己取,这里我填写成ant(到时Invoke Ant时,需要选择ant),ANT_HOME填入Ant的环境变量

    3.4.4 配置Credentials

    这里主要是添加信任证书,因为我的工程的源码是放在SVN上,所以在这里我们就是要添加SVN的验证,即SVN的用户名和密码。

    从主页面左边菜单点击到“Credentials”,进入到 Credentials列表,如图所示:

    点击Name列中即可对Credentials中用户进行修改、新增、删除操作,如下图所示:

    修改完后,点击下面“Save”保存按钮即可

4、建立 Jenkins 自动化持续集成项目

4.1 安装插件

4.1.1 常用插件

  一般情况下,常使用到如下这些插件:

  • FindBugs Plug-in: 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对 比以发现可能的问题。
  • Checkstyle Plug-in:是一个静态分析工具,检查Java程序代码。
  • Deploy to container Plugin:用于构建项目后,自动发布war包重新部署的插件
  • SSH Plugin:这个插件使用 SSH 协议执行远程 shell 命令。
  • Multijob Plugin:这个插件是一个将多个项目连接在一起的插件。

4.1.2 安装步骤

  下面以安装Checkstyle插件为例进行说明:

在左上角“系统管理”中往下拉,找到“管理插件”点击进去就可以查看和管理所有的插件,点击“可选插件”显示所有jenkins支持的插件,在右上角的“过滤”输入框中,输入需要安装的插件名就可以筛选查找到想要的插件

然后切换到“可选插件”,在右上角“过滤”框中输入checkstyle,查询结果如下

然后,点击“直接安装”按钮,其他插件也是这样的安装方式!

4.2 建立项目

4.2.1 新建项目

下面以建立一个自由风格软件项目为例进行说明

  • 点击左侧边栏的“新建”按钮,新建一个任务。
  • 填写项目的名称,并选择一种构建的方式,此时我们选择第一个,构建一个自由风格的软件项目,然后点击“OK”按钮创建任务,并进行详细的配置

然后就会进行到下面这个配置页面

接下来,我从General、源码管理、构建触发器、构建环境、构建、构建后操作这几个部分来进行详细配置说明

4.2.2 General

    这部分主要是设置下名称、工作空间等。

第一步,点击高级按钮;
第二步,勾选“自定义工作空间”,输入工作空间路径;

若是只有一个项目,也可以直接到“系统管理>系统配置>工作空间目录”直接修改默认工作空间目录,如下图:

4.2.3 源码管理

  因为,我们的代码是部署在SVN服务器上的,所以这里有下面三个步骤来配置jenkins监控SVN服务器代码变化。
第一步,选择Subversion;
第二步,在Repository URL输入项目SVN地址;

第三步,在Credentials选择SVN用户名和账号,初次会需要点击Add添加,如下。

4.2.4 构建触发器

指定的项目完成构建后,触发此项目的构建。

  • Poll SCM:当选择此选项,您可以指定一个定时作业表达式来定义Jenkins每隔多久检查一下源代码 仓库的变化。如果发现变化,就执行一次构建。例如,表达式中填写H 2 * * *将使Jenkins每 隔2分                  钟就检查一次源码仓库的变化。
  • Build periodically:此选项仅仅通知Jenkins按指定的频率对项目进行构建,而不管SCM是否有变化。 如果想在这个Job中运行一些测试用例的话,它就很有帮助。

4.2.5 构建环境

4.2.6 构建

     这部分主要是配置构建的相关内容,用于定时触发构建或者手动执行构建的时候,对代码检验、编译时进行的操作。构建概念到处可查到,形象来说,构建就是要把代码从某个地方拷贝过来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个。

因为我的项目是用ant脚本实现的编译和打包,所以我选择的是Invoke Ant,Ant Version选择我Ant配置的那个名字(这里可以参见3.4.2),注意不要选择default喔,那个选择了没有用。

  • 增加构建步骤:Invoke Ant
  • Targets:(什么也没写,默认执行根目录下的build.xml)

如果你的构建脚本build.xml不在workspace根目录、或者说你的构建脚本不叫build.xml。那么需要在高级里设置Build File选项的路

build.xml配置文件请查看附件“build.xml说明”,里面有每句配置说明;

checkstyleBuild.xml配置文件请查看附件“checkstyleBuild.xml说明”,里面有每句配置说明;

findBugsBuild.xml配置文件请查看附件“findBugsBuild.xml说明”,里面有每句配置说明。

4.2.7 构建后操作

  用于定义当前项目构建完之后的一些操作,比如构建完之后将checkstyle结果输出到指定日志文件,重新发布项目,去执行其他项目构建等。

4

4.2.7.1 构建后发布项目

注意,首先你必须安装好Deploy Plugin插件,然后在tomcat的conf目录配置tomcat-users.xml文件,如我这里配置的是manager, 在<tomcat-users>节点里添加如下内容:

配置完之后一次war包路径、用户名、密码、主机即可

配置完之后一次war包路径、用户名、密码、主机即可

参数说明:

  • WAR/EAR files:war文件的存放位置,如:**/build/warDest/ad-gx-admin.war。
  • Context path:访问时需要输入的内容,如ad-gx-admin访问时如下:     http://172.16.4.166:10001/ ofCard/ad-gx-admin如果为空,默认是war包的名字。
  • Container:选择你的web容器,如tomca 7.x
  • Manager user name:填入tomcat-users.xml配置的username内容
  • Manager password:填入tomcat-users.xml配置的password内容
  • Tomcat URL:填入http://192.168.x.x:8080/
  • Deploy on failure:构建失败依然部署,一般不选择

  注意:虽然这种部署方法可能会导致tomcat加载时出现卡死的现象。但是也是最简单的部署方式。如果卡死了重启下就好了,将tomcat的java内存参数调高可以解决这个问题。

最后不要忘记点击保存喔。

好了!到此一个项目的获取源码,打包,远程部署

4.2.7.2构建后发布静态结果

  输入配置文件

checkstyle-result.xml配置文件请查看附件“checkstyle-result.xml说明”,里面有配置说明。

所有这些配置多做完之后,在最下方点击“保存”按钮,现在回到首页去进行构建吧!!!

4.3 监控

4.3.1 主页面介绍

1、左边菜单栏

  • 新建:这里进入新建项目。
  • 用户:用户管理模块,对监控系统用户的增删改查。
  • 任务历史:以往构建过的项目。
  • 系统管理:进去是一些配置方面的东西,进入之后几个主要的子菜单分别是系统设置 、Global Tool    Configuration 、管理插件 几个模块
  • My Views:当前监控的项目列表。
  • Credentials:添加监控源码的的证书,其实就是SVN用户名和密码验证。

2、监控项目列表

这里主要是Jenkins当前正在监控的项目列表。点击进去可查看当前项目详细情况。

模块1:

  • 状态:最后一次构建的状态;
  • 修改记录:代码修改记录;
  • 工作空间:编译后代码存放的目录;
  • 立即构建:单击此处,可立即进行构建;
  • 删除Project:单击此处,可删除该项目;
  • 配置:配置该项目相关监控信息(工作空间、chestyle规则等);
  • Checkstyle Warnings:当前这次构建发现的静态警告;
  • FindBugs Warnings:当前这次构建发现的FindBugs。

模块2:

  • 这里显示的最近一次构建的相关信息,是否构建成功、构建用时等

模块3:

  • Checkstyle Trend:历史构建完之后的解决的代码中静态警告走势;
  • FindBus Trend:历史构建完之后的解决的代码中FindBugs走势。

4.3.2 构建状态查询

当任务一旦运行,您将会看到这个任务正在队列中的仪表板和当前工作主页上运行。这两种显示如下。

一旦构建完成后,完成后的任务将会构建历史列表显示。

当然你可以在Jenkins的主控制面板上看到它,如下图。

在上面展示的截图中,您将注意到有两个图标描述当前作业的状态。S栏目代表着“最新构建状态”,W栏目代表着“构建稳定性”。Jenkins使用这两个概念来介绍一个作业的总体状况:

1构建状态:

下图中分级符号概述了一个Job新近一次构建会产生的四种可能的状态:

  • Successful:完成构建,且被认为是稳定的。
  • Unstable:完成构建,但被认为不稳定。
  • Failed:构建失败。
  • Disabled:构建已禁用。

2构建稳定性:

当一个Job中构建已完成并生成了一个未发布的目标构件,如果您准备评估此次构建的稳定性,Jenkins会基于一些后处理器任务为构建发布一个稳健指数 (从0-100 ),这些任务一般以插件的方式实现。它们可能包括单元测试(JUnit)、覆盖率(Cobertura )和静态代码分析(FindBugs)。分数越高,表明构建越稳定。下图中分级符号概述了稳定性的评分范围。任何构建作业的状态(总分100)低于80分就是不稳定的。

当前作业主页上还包含了一些有趣的条目。左侧栏的链接主要控制Job的配置、删除作业、构建作业。右边部分的链接指向最新的项目报告和构件。

通过点击构建历史(Build History)中某个具体的构建链接,就能跳转到Jenkins为这个构建实例而创建的构建主页上。如下图:

如果你想通过视图输出界面来监控当前任务的进展情况。你可以单击Console Output(控制台输出)。如

果工作已完成,这将显示构建脚本产生的静态输出;如果作业仍然在运行中,Jenkins将不断刷新网页的内容,以便您可以看到它运行时的输出。如下图:

五、常见错误处理

5.1 java.lang.UnsupportedClassVersionError

这是因为jenkins和jdk版本不对应引起的。我这里用的是jdk1.7,所以下载版本http://pkg.jenkins-ci.org/redhat/jenkins-2.33-1.1.noarch.rpm(jenkins下载地址:http://pkg.jenkins-ci.org/redhat/),   原先现在2.5版本以上,版本太高,启动报“java.lang.UnsupportedClassVersionError”错,所以要卸载之前安装的jenkins-2.54-1.1.noarch,使用如下命令

5.2 command execution failed.Maybe you need to configure the job to choose one of your Ant installations?

控制台输出

Started by user admin

[EnvInject] - Loading node environment variables.

Building in workspace /home/jenkins/workspace/My_cache

Updating https://ip地址/svn/iptv/新业务//code/ad-gx-cache at revision '2017-07-17T14:14:11.377 +0800'

Using sole credentials hehaitao/****** in realm ‘<https://ip地址:443> VisualSVN Server’

At revision 68144

No changes for https://ip地址/svn/iptv/%E6%96%B0%E4%B8%9A%E5%8A%A1/%E5%B9%BF%E8%A5%BF%E5%BC%80%E6%9C%BA%E5%B9%BF%E5%91%8A/code/ad-gx-cache since the previous build

[workspace] $ ant -file checkstyleBuild.xml -DBUILD_NUMBER=8

ERROR: command execution failed.Maybe you need to configure the job to choose one of your Ant installations?

[CHECKSTYLE] Skipping publisher since build result is FAILURE

[FINDBUGS] Skipping publisher since build result is FAILURE

Warning: you have no plugins providing access control for builds, so falling back to legacy behavior of permitting any downstream builds to be triggered

Finished: FAILURE

  这是由于没有成功全局配置ant的环境变量没有配置成功导致,请确保环境Ant环境变量配置成功,并且在Global Tool Configuration正确添加了Ant的路径,这个可以参见2.2及3.4.2

5.3 JAVA_HOME is not defined correctly.

控制台输出

Started by user admin

[EnvInject] - Loading node environment variables.

Building in workspace /home/jenkins/workspace/My_cache

Updating https://ip地址/svn/iptv/新业务//code/ad-gx-cache at revision '2017-07-17T15:33:26.714 +0800'

Using sole credentials hehaitao/****** in realm ‘<https://ip地址:443> VisualSVN Server’

At revision 68151

[workspace] $ /home/lutong/apache-ant-1.9.9/bin/ant -file checkstyleBuild.xml -DBUILD_NUMBER=11

Error: JAVA_HOME is not defined correctly.

  We cannot execute java

Build step 'Invoke Ant' marked build as failure

[CHECKSTYLE] Skipping publisher since build result is FAILURE

[FINDBUGS] Skipping publisher since build result is FAILURE

Warning: you have no plugins providing access control for builds, so falling back to legacy behavior of permitting any downstream builds to be triggered

Finished: FAILURE

这是由于没有成功全局配置JDK的环境变量没有配置成功导致,请确保环境Ant环境变量配置成功,并且在Global Tool Configuration添加的JDK路径正确,这个可以参见2.4.1及3.4.3

5.3 Unable to access the repository 

在配置“源码管理”时,如果Credentials 不选择或者选择了验证不正确,会出现这个错误,请参见3.4.4及4.2.3

5.4 cant create file

Checking out https://ip地址/svn/iptv/%E6%96%B0%E4%B8%9A%E5%8A%A1/%E5%B9%BF%E8%A5%BF%E5%BC%80%E6%9C%BA%E5%B9%BF%E5%91%8A/code/ad-gx-cache at revision '2017-07-17T17:46:17.618 +0800'

Using sole credentials hehaitao/****** in realm ‘<https://ip地址:443> VisualSVN Server’

ERROR: Failed to check out https://ip地址/svn/iptv/新业务//code/ad-gx-cache

org.tmatesoft.svn.core.SVNException: svn: E204899: Cannot create new file '/home/jenkins/workspace/广西开机广告/.svn/lock': 权限不够

No changes for https://ip地址/svn/iptv/%E6%96%B0%E4%B8%9A%E5%8A%A1/%E5%B9%BF%E8%A5%BF%E5%BC%80%E6%9C%BA%E5%B9%BF%E5%91%8A/code/ad-gx-cache since the previous build

六:把机器加入Jenkins节点实现节点管理

Jenkins 拥有分布式构建(在 Jenkins 的配置中叫做节点),分布式构建能够让同一套代码在不同的环境(如:Windows 和 Linux 系统)中编译、测试等

  • Jenkins 的任务可以分布在不同的节点上运行
  • 节点上需要配置 Java 运行时环境,JDK 版本大于 1.5
  • 节点支持 Windows,Linux,Mac
  • Jenkins 运行的主机在逻辑上是 master 节点

节点的创建及配置

点击 系统管理 -> 节点管理 -> 新建节点 ,用于创建节点:

输入节点名称,选择固定节点,点击确定:

  • 执行器数量:节点并发执行数量,依据机器性能来配置
  • 运行目录:节点存放任务的目录路径
  • 标签:节点的标签名,job 中会用到
  • 用法:尽可能使用此节点/只允许绑定节点的 job 两种选项,依据实际情况选择
  • 启动方式:通过 Java Web 启动代理(常用)
  • 可用性:尽量保持代理在线即可

设置完成,点击保存。

启动节点

启动节点方式有 2 种,分别是

  • 点击 Lauch 下载 slave-agent.jnlp,双击运行
  • 点击 agent.jar,下载 jar 包,执行命令启动

任意一种方式启动即可,节点启动成功,刷新节点页面,可以看到节点已经上线。

job 中配置节点信息

勾选“限制项目的运行节点”,将之前节点的标签写到此处,这个配置会使之后的构建都会在限制的节点上进行:

7:jenkins权限控制

在一个企业内部,可能存在多个运维人员,而这些运维人员往往负责不同的项目,但是有可能他们用的又是同一个 jenkins 的不同用户,那么我们就希望实现不同的用户登录 jenkins 可以看到不同的项目

jenkins 提供了简单的权限管理,我们可以在“系统管理”—>“全局安全配置” 看到,但是这里的权限配置太过简略,显然无法满足我们的需求,所以我们需要 jenkins 的一个插件 Role-based Authorization Strategy 来实现精准的权限控制

在“系统管理”—>“插件管理”里安装此插件

安装好插件后,重启 jenkins 后再度打开 “系统管理”—>“全局安全配置” 可以看到多了我们刚刚安装的插件,将授权策略勾选为“Role-Based Strategy”然后点“保存”

同时在“系统管理”中也多了“Manage and Assign Roles”菜单,在此处即可设置角色和权限

我们查看一下现有的项目,如下图,根据不同的前缀主要分为四类(前缀为:jxzhzy、wisdom、writecode、zbkt)我们需要实现给test01分配前缀为 jxzhzy 的项目,给test02分配剩下的三个前缀项目

1、进入“系统管理”—>“管理用户”—>“新建用户”依次创建 test01、test02 两个用户

2、打开“系统管理”—>“Manage and Assign Roles”这里我们主要用到上面两个菜单,我们先进入“Manage Roles”

一个用户想要能正常控制项目,就必须要有两种角色“Global roles”和“Item roles”

首先添加一个全局角色 baserole 并勾选全部的 Read 权限

然后添加“Item roles”此处相当于是给角色赋予项目权限,这里我将角色的名称设置成和用户名一致,这样方便给每个用户精准指定项目,在 Pattern 中可以使用正则表达式来匹配项目,多个项目使用竖线 | 分割、

最后记得点左下角的“Save”保存

3、进入“Assign Roles”此处是将用户和角色关联起来,在“Global roles”部分添加用户 test01、test02 并且勾选中 baserole 角色

在“Item roles”中添加test01用户并和test01角色关联,添加test02用户并和test02角色关联

最后记得点左下角的“Save”保存,至此设置已经完毕

4、测试效果,登陆 test01 用户,如下图,只能看到前缀为 jxzhzy 的项目

登陆 test02 用户,只能看到其它三种前缀的项目

八:jenkins安全机制详解

Jenkins安全配置详解

一.进入安全配置界面

首页后点击进入系统管理(Manage Jenkins)

——下拉下方看到安全配置(Configure Global Security)

——进入安全配置界面

二,详解安全配置的选项作用

1.启用安全(Enable security):

  启动此项,必须使用“用户名/密码”登录才能配置和执行构建。如果Jenkins在内网环境(或者是一个"可信任"的环境),通常会禁用此项,以便项目开发人员能够配置他们自己的项目,而不用麻烦管理员 ; 如果Jenkins暴露在公网环境,你最好启用此项,Jenkins如果在一个不安全的环境下可能会遭到黑客的攻击.

2.JNLP节点代理的TCP端口(TCP port for JNLP agents):

  Jenkins使用一个TCP端口和JNLP节点代理通讯. 通常这个端口号是随机选取的,以避免冲突,但是这对于系统来说是不固定的.如果不使用JNLP节点代理, 推荐禁用TCP端口.另一种选择就是指定一个不变的端口号,以便防火墙做对应的设置. 这里如果没有出现问题,建议不要更改,直接默认随机选取就可以

3.禁用记住我(Disable remember me):

  浏览器记住账户密码

4.访问控制(Access Control):

  设置可给Jenkins的用户设置权限,使某些用户无法使用某些功能,或者直接无法登录系统。

访问控制有两个子选项:

(1)安全域(Security Realm) :决定用户名和密码,且指定用户所属的组。

  委托给servlet容器 (Delegate to servlet container):

  #委托给servlet容器如果你的Jenkins 运行在像Tomcat或GlassFish 等服务器上,这些服务器本身就有安装控制,选择这种安全策略,就可以非常管理地让服务器接管Jenkins的安全缺控制问题。

  Jenkins专有用户数据库(Jenkins’ own user database)

  #Jenkins本身有个数据库来管理用户,不过这个数据库的容量比较小,当有大量用户时,这种策略就不合适。在这种策略下,如果允许任何人通过注册Jenkins的形式,可以勾”允许用户注册“。这样非用户在进入Jenkins界面后,可以通过 点击右上角的“注册”按钮进行注册,然后再登录使用Jenkins。  如果不允许他人随便注册和使用该Jenkins,就要取消“允许用户注册”复选框。此时如果想添加新的用户,只能由已注册用户(或管理员)通过"系统管理"—>管理用户 —>新建用户进入 “Jenkins专有用户数据库”界面,通过点击”创建新用户“来注册新的用户

  LDAP插件认证

  #LDAP 可以实现用户的统一管理而无须再次创建用户,如果用户需要操作权限,则在 Configure Global Security 中添加权限即可,添加完成之后只需输入 ldap 账户密码即可登录

  Unix用户/组数据库(Unix user/group database)

2、授权策略(Authorization):分配用户执行某些操作的权限。

  任何用户可以做任何事(没有任何限制)

  登录用户可以做任何事

  遗留模式 :适用于Jenkins1.164以前的版本.也就是说,如果你是"admin"角色,那么你将拥有Jenkins的一切控制权,其它角色(包括匿名用户) 只有查看权限.

Markup Formatter

  选择job description写的html代码是显示代码还是显示html源码。选择raw HTML的时候,显示的是自己写的源代码。选择escaped HTML的时候,显示的是html的源码。

防止跨站点请求伪造

  跨站点请求伪造(或CSRF/XSRF),它是一种利用你的身份通过未经授权的第三方手段在网站上执行操作.对于Jenkins进行删除任务,构建或者更改配置. 当启用此项,Jenkins会检查临时生成的值,以及任何导致Jenkins服务器改变的请求.这包括任何形式的提交和远程API调用.

Enable Slave → Master Access Control

  允许子节点控制父节点,具体有哪些权限可以被子节点控制。可以在一个通过点击rules can be tweaked here 这句话中的here来设置。

重点:600G的学习资料,懂的都懂

【测试开发】的Devops持续集成部署体系之Jenkins持续集成和持续部署基础应用相关推荐

  1. 记录下自己面试测试工程师/自动化测试/测试开发等过程中遇到的面试题 和解法重点。--持续更新

    记录的面试题多是常见的,或者让我感到印象深刻的.我会记录下我的思路或者答案.因为很多题时至今日我也不知道标准答案. 请说说纸杯/电梯/qq登录的测试用例: 这种题注意,尽量多说用例,这是让面试官看到你 ...

  2. 测试开发/测试工程师面试题手册TestGuide(大厂面试题-持续更新)

    TestGuide–测试开发面试手册 GitHub:https://github.com/AFITS/TestGuide.git 整理内容包含字节.阿里.腾讯等一线大厂的测试.测试开发的常见面试题,同 ...

  3. 持续集成工具集之一 Jenkins简介

    Jenkins 是一个可扩展的持续集成引擎. 主要用于: 持续.自动地构建/测试软件项目. 监控一些定时执行的任务. Jenkins拥有的特性包括: 易于安装-只要把jenkins.war部署到ser ...

  4. 合肥python培训-合肥Python测试开发全栈核心课程

    从初级的手工测试到.顶端的测试开发,大家都希望能不断的进行技术的提升,而就目前的现状而言,在企业内部不愿意花费成本去进行高级人才的培养,企业更愿意花高薪招聘高级技术人才,而我们希望能够在工作中不断提升 ...

  5. python测试开发培训怎么样_合肥Python测试开发全栈核心课程

    从初级的手工测试到.顶端的测试开发,大家都希望能不断的进行技术的提升,而就目前的现状而言,在企业内部不愿意花费成本去进行高级人才的培养,企业更愿意花高薪招聘高级技术人才,而我们希望能够在工作中不断提升 ...

  6. 西安把python需要纳入课堂_西安Python测试开发全栈核心课程

    从初级的手工测试到.顶端的测试开发,大家都希望能不断的进行技术的提升,而就目前的现状而言,在企业内部不愿意花费成本去进行高级人才的培养,企业更愿意花高薪招聘高级技术人才,而我们希望能够在工作中不断提升 ...

  7. 在霍格沃兹测试开发学社学习是种怎样的体验?

    霍格沃兹我怎么了解到的 我是河北某二本院校软工专业的学生,大三开始学校来了很多宣讲和实训的公司,都是为我们以后的职业发展做参考.学校有软件测试课程,有一次老师无意提到了霍格沃兹测试开发学社举办的高校& ...

  8. Java自动化测试系列[v1.0.0][TestNG测试开发环境配置]

    基于之前写的一篇文章Java自动化测试系列[v1.0.0][Maven开发环境]的基础上,阐述如何配置单元测试框架TestNG的测试开发环境 创建Maven项目 启动IDEA,点击Create New ...

  9. 使用华为云软件开发平台devcloud和应用管理与运维平台servicestage实现持续集成(CI)持续部署(CD)

    本文来自于知乎专栏:https://zhuanlan.zhihu.com/p/385350636 说明: 软件开发平台devcloud是持续集成(CI)持续部署(CD)工具: 应用管理与运维平台ser ...

最新文章

  1. UUID.randomUUID()生成唯一识别码
  2. HyperlinkButton——WP8控件学习
  3. boost::swap_ranges相关的测试程序
  4. AngularJS例子 ng-repeat遍历输出 通过js的splice方法删除当前行
  5. 2010世界杯主题曲夏奇拉献唱《Waka Waka》
  6. hexo的yelee主题中的标签字体大小的修改
  7. Java Iterator到Java 8 Stream
  8. PHP-Windows下搭建PHP-MSF环境【原创】
  9. 原生js系列之DOM工厂模式
  10. html之特殊字符表
  11. 信息学奥赛一本通(1139:整理药名)
  12. 蓝桥杯 基础练习 回文数
  13. aspen plus大小_[软件]Aspen Plus 这些常识,你都懂了吗?
  14. 从安装、管理到防御,阿里云安骑士全向测评
  15. 超级楼梯HDU2041
  16. LINQ to SQL语句 收藏系列
  17. m 940 /vbulletin/_爱在当下 MM 伴你纵享别样万圣之夜
  18. C#中打开Excel并刷新加载宏的方法
  19. 计算机辅助设计 Photoshop 教案,计算机辅助设计(photoshop)
  20. media在HTML中作用,web前端:关于css中@media的一些基本使用

热门文章

  1. gitea 手动编译过程,以及踩坑记录
  2. github android 开源,Android github开源项目学习之—仿知乎APP(一)
  3. 交互式机器学习/ 强化学习在图像领域中的应用
  4. 正好股票杠杆大盘在这个位置只有两个重要买点
  5. 怎么开通商家转账到零钱?
  6. c语言最长递增子序列nlogn,最长递增子序列
  7. 健美运动员赛前脱水断碳_健美冠军指导书:赛前的去碳与充碳技巧(上)
  8. 鸟哥LINUX操作练习(8):Linux 磁盘与文件系统管理
  9. 霹雳猿教程网站正式上线
  10. (前端)html与css,html 6、_a标签