Jenkins是什么? Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。
官网:https://jenkins.io/ 官方文档:https://jenkins.io/doc/
安装Jenkins #安装openjdk,jenkins依赖 [root@test ~]# yum install -y java-1.8.0-openjdk #查看JDK版本,验证是否安装成功 [root@test ~]# java -version openjdk version "1.8.0_292" OpenJDK Runtime Environment (build 1.8.0_292-b10) OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode) #yum的repos中默认是没有Jenkins的,需要先将Jenkins存储库添加到yum repos [root@test ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo [root@test ~]# rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key #安装jenkins [root@test ~]# yum install -y jenkins
命令 #启动jenkins [root@test ~]# systemctl start jenkins #查看jenkins启动状态 [root@test ~]# systemctl status jenkins #停止jenkins [root@test ~]# systemctl stop jenkins #查看jenkins进程 [root@test ~]# ps aux |grep jenkins jenkins 95062 230 4.1 5682456 327392 ? Ssl 10:15 0:16 /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
访问 浏览器访问ip:8080
#如没有显示页面,可以使用以下两种方式的任意一种
#关闭防火墙 systemctl stop firewalld #添加防火墙规则 firewall-cmd --zone=public --add-port=8080/tcp --permanent
通过命令查看密码解锁jenkins
less /var/log/jenkins/jenkins.log Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: 97f81ad554894de68de6e75f48e6f3b6 This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword ************************************************************* ************************************************************* ************************************************************* 2021-06-24 03:21:19.457+0000 [id=33] INFO jenkins.InitReactorRunner$1#onAttained: Completed initialization 2021-06-24 03:21:19.481+0000 [id=22] INFO hudson.WebAppMain$3#run: Jenkins is fully up and running (END)
安装推荐插件
安装完成后,设置管理员账号
配置访问地址
进入主页面
jenkins的配置文件:
#查看jenkins的配置文件,定义了home、JAVA_CMD、user、port等基础配置,保持默认即可 cat /etc/sysconfig/jenkins
jenkins程序主目录:
ls /var/lib/jenkins/ config.xml #初始时里边定义Jenkins的版本,用户等各种信息 credentials.xml #存储Git拉取的证书信息。 fingerprints #其中定义了通过秘钥所拉取的项目记录。 hudson.model.UpdateCenter.xml hudson.plugins.git.GitTool.xml identity.key.enc jenkins.install.InstallUtil.installingPlugins jenkins.install.InstallUtil.lastExecVersion jenkins.install.UpgradeWizard.state jenkins.model.JenkinsLocationConfiguration.xml jenkins.security.apitoken.ApiTokenPropertyConfiguration.xml jenkins.security.QueueItemAuthenticatorConfiguration.xml jenkins.security.UpdateSiteWarningsConfiguration.xml jenkins.telemetry.Correlator.xml jobs #创建的任务都会存放在这里 logs #存放jenkins相关的日志 nodeMonitors.xml nodes #节点管理的信息,多节点时用到 plugins #插件所在目录 queue.xml queue.xml.bak secret.key secret.key.not-so-secret secrets #密码秘钥所在目录 updates userContent users #用户信息 workflow-libs workspace #工作空间
jenkins存放数据不依靠数据库,所以在移植时只需要拷贝整个程序主目录即可。
用户管理
新建用户
建立完毕后可看到对应的用户,点击用户进行相关配置
查看当前用户的构建历史
可修改当前用户的邮箱,密码,视图等相关用户信息
删除用户
插件
安装以下插件
编译依赖 安装Maven #下载maven包,解压 wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz tar zxvf apache-maven-3.6.3-bin.tar.gz mv apache-maven-3.6.3 /usr/local/maven #添加环境变量 vi /etc/profile #MAVEN MAVEN_HOME=/usr/local/maven export MAVEN_HOME export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin #生效环境变量 source /etc/profile #查看版本号 mvn -v
安装NPM #下载node,解压 [root@public home]# wget https://nodejs.org/dist/v12.19.0/node-v12.19.0-linux-x64.tar.xz [root@public home]# tar xf node-v12.19.0-linux-x64.tar.xz [root@public home]# cd node-v12.19.0-linux-x64 #软链接 [root@public node-v12.19.0-linux-x64]# ln -s /home/node-v12.19.0-linux-x64/bin/npm /usr/local/bin/ [root@public node-v12.19.0-linux-x64]# ln -s /home/node-v12.19.0-linux-x64/bin/node /usr/local/bin/ #查看版本号验证 [root@public node-v12.19.0-linux-x64]# node -v v12.19.0 [root@public node-v12.19.0-linux-x64]# npm -v 6.14.8 #安装依赖 [root@public node-v12.19.0-linux-x64]# npm install
配置Jenkins环境变量
用户权限 系统管理 –> 全局安全配置(Manage Jenkins –> Configure Global Security) 勾选Role-Based Strategy
保存后可看到多了Manage and Assign Roles选项
准备工作:
创建不同环境的视图和任务
创建不同的用户
配置角色
创建角色名称为only_read,需点击add才能添加,赋予读取权限
创建角色名称dev,对应看到的视图dev.*
(代表匹配dev开头的所有应用),点击图中的dev.*
可查看到浏览器的弹窗中所匹配到的任务
勾选赋予相对应的权限,下图所示权限为:可以查看构建取消配置任务,可查看该任务的工作区.(这里给予配置权限是因为开发可能需要构建对应的Git分支)
保存后选择分配角色
,是用户与角色进行关联
使用户与匹配的视图任务相关联
保存后切换到dev用户登录,可看到dev用户只能看到dev的视图,无法看到test和prod视图,无法进行管理jenkins
切换为test用户登录,可看到test用户只能看到test的视图,无法看到dev和prod视图,无法进行管理jenkins
⚠定义角色和权限应当视当前情况进行分配
任务
丢弃旧的构建 删除构建历史和构建打包的工作空间(建议在磁盘空间不足情况下或开发测试环境任务使用,生产勿用)
参数化构建 可通过参数进行打包编译.
(使用英文版进行演示)
字符串参数
点击构建后先弹出用于构建的参数
查看构建后的控制台输出
可查看到使用echo $unionpay可读取到先前定义的参数
选项构建
点击构建后,会弹出选项,让用户进行选择
查看控制台可看到,用户选择test后,使用echo $profile打印出了正确的参数
拉取代码 可选择Git和Svn进行拉取代码,为后续构建项目做准备,此处使用git
Repository URL填写Git的仓库地址,Credentials需要添加认证的Git账号密码,指定分支默认为master 可改变为其他分支
修改记录 可查看相对于上个版本代码的修改记录
工作空间 可查看拉取的代码和编译后的文件,可在线查看文件,也可以直接打包下载,用于查找问题,清理工作空间,可以清空所以当前工作空间内的所有文件
立即构建 构建当前配置好的任务,可在控制台查看是否成功,也可看到具体的打包错误
定时构建 “日程表”格式与 crontab 相似但有细微差别
每行由 5 个值组成(空格或TAB分隔),分别表示分(0-59)、时(0-23)、日(1-31)、月(1-12)、周(0-7, 0/7=周日) ## “M,N” 表示M和N;”M-N” 表示范围[M,N];”M-N/X” 表示范围[M,N]内每隔X;”*/X”表示整个范围内每隔X 前面提到的M/N/X的值都可以用H(意为Hash)代替,散列值起到随机值的效果,且同一项目取值稳定,这对于项目多时分散压力很有用。 H/10 H(0-8) * * 1-5 ## 触发时间: 工作日、Hour为0~8按哈希随机、Minute以10为间隔 H/10 H * * 0,6,7 ## 触发时间: 周末、Hour为全天按哈希随机、Minute以10为间隔 ## “日程表”修改后,下方会给出下次执行时间点的预告。
添加时间戳
前端编译打包部署 通过npm install下载前端依赖,npm run build进行编译打包
使用nginx配置前端访问
server { listen 80; server_name www.test.com; location /web/ { root /home/web/; index index.html; }
后端编译打包部署 可以使用调用顶层mvn命令
也可以使用shell里用mvn
控制台可以看到编译打包是否成功
配置SSH服务器,这里定义SSH名称,地址,端口,用户名,上传文件的路径,如果使用密码勾选Use Password选项,使用密钥使用key
构建时选择SSH插件,进行部署
选择对应配置的SSH服务器,要上传的文件(相对路径),配置中的SSH服务器上传地址为/home/upload,此处的Remote directory为/会上传到/home/upload下,然后配置上传到服务器后,要执行部署的脚本文件,此处使用了nohup sh 2>&1是因为jenkins有一个机制会杀掉启动的项目进程
部署脚本
[root@service-001 upload]# cat hospital-union-pay.sh #Java Env export JAVA_HOME=/usr/local/java export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin port=8085 pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }'); jar=hospital-union-pay.jar if [ -n "$pid" ]; then kill -9 $pid; fi rm -rf /home/app/$jar mv /home/upload/$jar /home/app/ cd /home/app java -Xms512M -Xmx1024M -jar $jar --spring.profiles.active=test &
清理工作空间
阿里云K8S部署 通过定义好的字符串参数进行构建
start.sh
JARFILE=/home/App.jar java -jar config -Djava.security.egd=file:/dev/./urandom $JARFILE profile >> /home/app.log & tail -50f /home/app.log
Dockerfile
FROM registry.cn-shenzhen.aliyuncs.com/server:latest MAINTAINER nmk COPY *.jar /home/App.jar COPY start.sh /home/start.sh RUN chmod +x /home/start.sh ENV JAVA_HOME=/usr/local/java ENV PATH $JAVA_HOME/bin:$PATH ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV LC_ALL="en_US.UTF-8" ENV LANG="en_US.UTF-8" EXPOSE appport CMD ["/home/start.sh"]
build.sh
#!/bin/bash #构建有版本号的镜像,以防需要回滚,而且是从镜像创建服务 docker build -t registry.cn-shenzhen.aliyuncs.com/gongsi_$1/$2:$3 . -f Dockerfile docker push registry.cn-shenzhen.aliyuncs.com/gongsi_$1/$2:$3 #构建latest版本,用于自动部署 docker build -t registry.cn-shenzhen.aliyuncs.com/gongsi_$1/$2:latest . -f Dockerfile docker push registry.cn-shenzhen.aliyuncs.com/gongsi_$1/$2:latest
扩展 GitLab可通过webhook进行自动部署,开发一提交代码即可触发jenkins的自动构建.
主题 生成工具URL见:http://afonsof.com/jenkins-material-theme/
在系统配置中加入css即可
效果如下
钉钉机器人通知:https://blog.csdn.net/shi_hong_fei_hei/article/details/112055446
邮件通知:https://www.cnblogs.com/imyalost/p/8781759.html
jenkins通过ssh启动服务失败 查看tomcat启动日志发现报错:war包拒绝访问
因jenkins配置的ssh对应的windows账号不是administrator会出现没权限问题
方案1.更改jenkins的ssh用户为administrator
方案2.给需要权限的文件夹或文件授权
windows命令给用户授权 cacls E:\tomcat /t /e /c /r nmk 拒绝 Cacls E:\tomcat /t /e /c /g nmk:F 允许 多用户情况下可以给everyone Cacls E:\SFTP\sftp\nmk.war /t /e /c /g everyone:F
自动部署脚本 windows自动部署war包脚本 for /f "tokens=5" %%e in ('netstat -aon ^| findstr ":9021"') do (set f=%%e) taskkill /t /f /pid %f% rd /s /q "E:\tomcat-9021\webapps\cmpay" del "E:\tomcat-9021\webapps\cmpay.war" move cmpay.war "E:\tomcat-9021\webapps\" net start tomcat9021
因windows启动tomcat会被jenkins杀掉,所以要把tomcat做成服务
windows自动部署jar包脚本 for /f "tokens=5" %%i in ('netstat -aon ^| findstr ":8081"') do (set j=%%i) taskkill /t /f /pid %j% del E:\gzlp_red_package\lepeng-red-package-coupon.jar move lepeng-red-package-coupon-1.0-SNAPSHOT.jar "E:\gzlp_red_package\lepeng-red-package-coupon.jar" javaw -Xms256m -Xmx512m -jar "E:\gzlp_red_package\lepeng-red-package-coupon.jar" --spring.profiles.active=dev
linux自动部署war包脚本 jenkins配置
sh /home/tomcat/upload/omall.sh
omall.sh脚本如下
#Java Env export JAVA_HOME=/usr/java export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin port=19181 #根据端口号查询对应的pid pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }'); #杀掉对应的进程,如果pid不存在,则不执行 if [ -n "$pid" ]; then kill -9 $pid; fi rm -rf /home/tomcat/omall/webapps/omall.war rm -rf /home/tomcat/omall/webapps/omall mv /home/tomcat/upload/omall.war /home/tomcat/omall/webapps cd /home/tomcat/omall/bin ./startup.sh
linux自动部署jar包脚本 jenkins配置
cd /home/tomcat/app/admin-core nohup sh /home/tomcat/upload/admin-core.sh >> catalina.out 2>&1
admin-core.sh脚本如下
#Java Env export JAVA_HOME=/usr/java export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin port=48094 #根据端口号查询对应的pid pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }'); #杀掉对应的进程,如果pid不存在,则不执行 if [ -n "$pid" ]; then kill -9 $pid; fi rm -r /home/tomcat/app/admin-core/admin-core-0.0.1-SNAPSHOT.jar mv /home/tomcat/upload/admin-core-0.0.1-SNAPSHOT.jar /home/tomcat/app/admin-core cd /home/tomcat/app/admin-core java -Xms256m -Xmx512m -jar /home/tomcat/app/admin-core/admin-core-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev &
k8s自动部署后端脚本 执行shell
cd admin-core chmod +x ./build.sh ./build.sh prod $BUILD_NUMBER
gitlab配置
build.sh
#!/bin/bash #构建有版本号的镜像,以防需要回滚,而且是从镜像创建服务 docker build -t registry-vpc.cn-beijing.aliyuncs.com/lepeng-$1/admin-core-$1:$2 . -f Dockerfile_$1 docker push registry-vpc.cn-beijing.aliyuncs.com/lepeng-$1/admin-core-$1:$2 #构建latest版本,用于自动部署 docker build -t registry-vpc.cn-beijing.aliyuncs.com/lepeng-$1/admin-core-$1:latest . -f Dockerfile_$1 docker push registry-vpc.cn-beijing.aliyuncs.com/lepeng-$1/admin-core-$1:latest
start.sh
#!/bin/bash JARFILE=/home/App.jar LOGPATH=/home/logs LOG=/home/logs/App.log #日志挂载 ip=`ip addr |grep inet |grep eth0|awk '{print $2}' |awk -F "/" '{print $1}'` mkdir -p /home/log/gzlp_equity/$ip cd /var/log ln -s /home/log/gzlp_equity/$ip java if [ ! -d $LOGPATH ];then mkdir -p $LOGPATH fi java -jar -Xms512m -Xmx1024m -Dskywalking.agent.namespace=prod -Dskywalking.agent.service_name=prod-admin-core -javaagent:/home/skywalking-agent-plugins/agent-prod-bj/skywalking-agent.jar $JARFILE -Djava.security.egd=file:/dev/./urandom --spring.profiles.active=$ACTIVE >> $LOG & tail -100f $LOG
Dockerfile_prod
FROM registry-vpc.cn-beijing.aliyuncs.com/lepeng/centos:latest MAINTAINER nmk COPY target/admin-core-0.0.1-SNAPSHOT.jar /home/App.jar COPY start.sh /home/start.sh RUN mkdir /home/tomcat/ RUN chmod +x /home/start.sh ENV JAVA_HOME=/usr/local/java ENV PATH $JAVA_HOME/bin:$PATH ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV LC_ALL="en_US.UTF-8" ENV LANG="en_US.UTF-8" ENV ACTIVE=prod EXPOSE 48094 CMD ["/home/start.sh"]
k8s自动部署前端脚本 执行shell
cd .. tar zcvf mps-admin-ui.tar mps-admin-ui_tdev mv mps-admin-ui.tar mps-admin-ui_tdev/docker/ cd mps-admin-ui_tdev/docker/ chmod +x ./build.sh ./build.sh test $BUILD_NUMBER
gitlab配置
Dockerfile_test
FROM registry-vpc.cn-beijing.aliyuncs.com/lepeng/nginx:latest MAINTAINER nmk COPY mps-admin-ui.tar /home/mps-admin-ui.tar RUN mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.default RUN tar zxvf /home/mps-admin-ui.tar -C /home/ RUN mv /home/mps-admin-ui_tdev/docker/nginx.conf /usr/local/nginx/conf/nginx.conf COPY start.sh /home/start.sh RUN chmod +x /home/start.sh EXPOSE 80 CMD ["/home/start.sh"]
build.sh
#!/bin/bash #构建有版本号的镜像,以防需要回滚,而且是从镜像创建服务 docker build -t registry-vpc.cn-beijing.aliyuncs.com/lepeng-$1/mps-admin-ui-$1:$2 . -f Dockerfile_$1 docker push registry-vpc.cn-beijing.aliyuncs.com/lepeng-$1/mps-admin-ui-$1:$2 #构建latest版本,用于自动部署 docker build -t registry-vpc.cn-beijing.aliyuncs.com/lepeng-$1/mps-admin-ui-$1:latest . -f Dockerfile_$1 docker push registry-vpc.cn-beijing.aliyuncs.com/lepeng-$1/mps-admin-ui-$1:latest
start.sh
#!/bin/bash mv /home/mps-admin-ui_tdev /home/mps-admin-ui cd /usr/local/nginx ./sbin/nginx ./sbin/nginx -t echo "nginx Start successfully" >> nginx.log tail -10f nginx.log
nginx.conf
user nginx nginx; worker_processes 8; error_log logs/error_log; #error_log logs/error.log notice; #error_log logs/error.log info; pid /usr/local/nginx/logs/nginx.pid; worker_rlimit_nofile 51200; events { use epoll; worker_connections 51200; } http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 512; client_header_buffer_size 512k; large_client_header_buffers 4 256k; client_max_body_size 100m; client_body_buffer_size 10m; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; server_tokens off; sendfile on; #tcp_nopush on; keepalive_timeout 120; tcp_nodelay on; proxy_buffering on; # 开启gzip gzip on; # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩 gzip_min_length 1k; # gzip 压缩级别,1-10,数字越大压缩的越好,也越占用CPU时间。一般设置1和2 gzip_comp_level 2; gzip_buffers 4 8k; gzip_http_version 1.1; # 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。 gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; # 是否在http header中添加Vary: Accept-Encoding,建议开启 gzip_vary on; # 禁用IE 6 gzip gzip_disable "MSIE [1-6]\."; #设置缓存路径并且使用一块最大100M的共享内存,用于硬盘上的文件索引,包括文件名和请求次数,每个文件在1天内若不活跃(无请求)则从硬盘上淘汰,硬盘缓存最大10G,满了则根据LRU算法自动清除缓存。 proxy_connect_timeout 10; proxy_read_timeout 180; proxy_send_timeout 5; proxy_buffer_size 16k; proxy_buffers 4 32k; proxy_busy_buffers_size 96k; proxy_temp_file_write_size 96k; proxy_temp_path /tmp/temp_dir; #proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=imgcache:100m inactive=1d max_size=10g; log_format main '[$remote_addr] - [$remote_user] [$time_local] [$request] [$status] [$body_bytes_sent] [$http_referer] [$http_user_agent] [$http_x_forwarded_for] [$request_time] [$upstream_response_time] [$upstream_addr] [$upstream_status]'; server { listen 80; server_name tdev.gzlplink.com; add_header backendIP $upstream_addr; #把后端具体的 upstream 返回给前端 header add_header backendCode $upstream_status; include proxy.conf; access_log /data1/logs/nginx/tdev.gzlplink.com-access_log main; error_log /data1/logs/nginx/tdev.gzlplink.com-error_log; location /mps-admin-ui { root /home/; index index.html index.htm; if ( -d $request_filename ){ rewrite ^/(.*)([^/])$ $scheme://$host/$1$2/ permanent; } log_not_found off; # 关闭日志 access_log off; # 缓存时间7天 expires 7d; # 指定上面设置的缓存区域 #proxy_cache imgcache; # 缓存过期管理 proxy_cache_valid 200 302 1d; proxy_cache_valid 404 10m; proxy_cache_valid any 1h; proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; } } }
通过jenkins更新生产的nginx
[root@iZ2ze18q1ojbig8zevjrbuZ nginx]# cat nginx_reload #/bin/bash check_status="`/usr/local/nginx/sbin/nginx -t 2>&1`" if [ $? -eq 0 ]; then #echo "nginx configure file ok" echo $check_status /usr/local/nginx/sbin/nginx -s reload else #echo "nginx configure file failed" echo $check_stutus exit fi
jenkins+newman实现接口测试 安装newman
[root@public-service jenkins]# npm install -g newman npm WARN deprecated har-validator@5.1.5: this library is no longer supported npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. /home/.npm-global/bin/newman -> /home/.npm-global/lib/node_modules/newman/bin/newman.js + newman@5.2.4 added 128 packages from 187 contributors in 20.745s [root@public-service jenkins]# newman -v 5.2.4
通过postman生成json文件
通过newman请求该接口进行测试
[root@public-service jenkins]# newman run -r cli test.postman_collection.json newman: could not find "html" reporter ensure that the reporter is installed in the same directory as newman run `npm install newman-reporter-html` newman test → https://test.com/doctor-api/v2_0/optimalmall/getProduct POST https://test.com/doctor-api/v2_0/optimalmall/getProduct [200 OK, 5.84KB, 868ms] ┌─────────────────────────┬────────────────────┬───────────────────┐ │ │ executed │ failed │ ├─────────────────────────┼────────────────────┼───────────────────┤ │ iterations │ 1 │ 0 │ ├─────────────────────────┼────────────────────┼───────────────────┤ │ requests │ 1 │ 0 │ ├─────────────────────────┼────────────────────┼───────────────────┤ │ test-scripts │ 0 │ 0 │ ├─────────────────────────┼────────────────────┼───────────────────┤ │ prerequest-scripts │ 0 │ 0 │ ├─────────────────────────┼────────────────────┼───────────────────┤ │ assertions │ 0 │ 0 │ ├─────────────────────────┴────────────────────┴───────────────────┤ │ total run duration: 892ms │ ├──────────────────────────────────────────────────────────────────┤ │ total data received: 5.47KB (approx) │ ├──────────────────────────────────────────────────────────────────┤ │ average response time: 868ms [min: 868ms, max: 868ms, s.d.: 0µs] │ └──────────────────────────────────────────────────────────────────┘
newman命令
newman run 用例json文件路径 -e 环境变量文件地址 -g 全局变量文件地址 --delay-request 请求间的delay时长,单位为毫秒 --folder 文件夹路径,运行指定文件夹下的用例 -n,--iteration-count number,collection执行的次数 --export-environment path,执行用例后将环境变量导出 --export-globals path,执行用例后将全局变量导出
导出报告
Cli
在console中生成报告
HTML
作为一种external报告方式,html reporter需要安装:
npm install -g newman-reporter-html [root@public-service jenkins]# newman run test.postman_collection.json -r html [root@public-service jenkins]# cd newman/ [root@public-service newman]# ls newman-run-report-2021-06-29-01-35-46-951-0.html