Jenkins之自动部署、代码安全扫描、自动化接口测试
搭建Jenkins
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
yum install -y jenkins
systemctl enable jenkins.service #设置jenkins服务为自启动服务
systemctl start jenkins.service #启动jenkins服务
vi /etc/sysconfig/jenkins
service jenkins start/stop/restart
或者也可以下载jenkins.war,然后启动 -jar 启动。
启动好之后,可以通过 ip:8080 进行访问 http://192.168.11.222:8080, 端口默认是8080。 第一次访问需要进行一些插件的安装,会比较慢。安装好之后就可以使用了:
推荐使用 service jenkins start/stop/restart 方式进行启停。
全局工具配置
我们的项目是基于Maven的,所以需要安装Maven,
yum install -y maven
安装好之后,需要修改一下settings文件配置,主要是两个地方:
“默认 settings 提供” 、 “默认全局 settings 提供”, 全部使用 文件路径 /var/lib/jenkins/settings.xml:
settings.xml文件如下(主要是需要配置私服地址,加快下载速度,其中的地址, 可以按照需要进行修改):
settings.xml
JDK和Git 按情况进行配置:
yum install -y java
yum install -y git
系统配置
Jenkins Location配置:
Jenkins URL 是当前Jenkins的地址,是第一次登录的时候设置的, 也可以此处进行修改。系统管理员邮件地址也是,可写管理员邮件地址:
Extended E-mail Notification 扩展邮件通知配置:
SMTP server 填 smtp.qq.com,Default user E-mail suffix填 @qq.com,Default Content Type选HTML,Default Recipients填默认收件人,如 gaolong@lkk.cn,luokai2@lkk.cn。
Default Subject 填 $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
Default Content填:
$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:
Check console output at $BUILD_URL to view the results.
插件安装
Jenkins会默认安装一些插件,但是可能还不够,我们需要另外安装一些; 我们需要 确保下面的插件都已经安装,后面需要用到:
Ant Plugin、Build Authorization Token Root Plugin、 Email Extension Plugin、 Generic Webhook Trigger Plugin、 GitHub Branch Source GitHub plugin 、Gitlab Authentication plugin 、Gitlab Hook Plugin、 HTML Publisher 、
Publish Over SSH 、SonarQube Scanner for Jenkins
Publish over SSH
Publish over SSH是一款进行远程部署的插件,可以简化一些配置,有了他,就不要再去写sh脚本了。
安装Publish over SSH插件好后,配置一下:
我们可以添加多个SSH Servers,每一个SSH Server 可以使用默认值,或进行单独的配置:
Name、Hostname填ip地址,Username填root,Remote Directory填需要发布的远程目录,点击高级,进行一些高级配置。我们用的比较多的是 修改认证方式,首先勾选“Use password authentication, or use a different key”, 然后有两个选择,一是密码,而是使用SSH Key。
采用密码认证的话,Passphrase / Password 填root的密码;
采用SSH key认证的话,Passphrase / Password 不填,Key填 Jenkins安装机器上执行 ssh-keygen生成的公钥,cat /root/.ssh/id_rsa.pub, 然后将/root/.ssh/id_rsa.pub 的内容复制过来粘贴即可:
全局安全配置
主要2个地方需要设置:
- 访问控制-授权策略:勾匿名用户具有可读权限
- 反勾选:防止跨站点请求伪造
集成Sonar
安装Sonar
安装参考 sonar 7.6 安装和使用_huiyanshizhen21的博客-CSDN博客_sonar安装使用
配置Sonar
Sonar目前还不需要做什么配置,但目前我们需要记录一个token。
web访问地址是http://192.168.11.200:19000/projects:(默认端口是9000, 因为有冲突,我这里改成了19000),首次登录会生成一个token,需要提供一个name,我们填erdp:
这个token 很有用,需要记下来。
Jenkins中集成Sonar:
先安装 SonarQube servers插件,主要是SonarQube Scanner for Jenkins插件
然后,在系统配置中找到SonarQube servers,然后点击Add
然后填写相关信息:
Name随便写,Server URL 填Sonar的web地址:
Server authentication token需要添加一下:
注意类型选 Secret text,Secret、ID 都填Sonar首次登录提供的token
然后就好了!
凭据管理
进入: Jenkins → 凭据 → 系统 → 全局凭据 (unrestricted),然后“添加凭据”
name 填 jenkins,
类型选 SSH Username with private key
Private Key 填 从在Jenkins机器 通过ssh-kengen 生成的 /root/.ssh/id_rsa.pub 的内容。
需要注意的是,这个凭据是用来拉取git代码的,所以需要 gitlab 的一些配置:
Integrations-Webhook
对于每个微服务,我们需要 Integrations-Webhook配置,从而每当代码有push的时候,能够自动触发构建:
关键有3个地方需要设置:
URL填 http://120.78.204.40:1200/job/cad/build?token=c1f3458469a2895740fac134, 其中的ip 120.78.204.40:1200 是Jenkins的地址,这里需要一个外网地址,因为我们的gitlab 也位于阿里云之上。
Secret Token 可以 通过在Jenkins机器上执行 下面的sh命令生成:
openssl rand -hex 12
Trigger 选 Push events
然后可以进行测试,点击“Test”→ "Push events":
出现了Successfully,即表示成功。 然后点击“Save changes” 以完成设置。
创建任务
输入名称,然后选择“自由风格”
然后进行配置。配置主要是进行 源码管理,构建触发器,构建,构建后操作
源码管理
源码管理选择Git,Repository URL 填微服务工程的git地址:git@gitlab.lkk.cn:erdp/erdp_doc.git,Credentials选之前配置的凭据(或者也可以点击“添加”进行新增),Branches to build 填develop。源码库浏览器选gitiles,URL填git地址。
构建触发器
构建触发器勾选触发远程构建 (例如,使用脚本),GitHub hook trigger for GITScm polling,
身份验证令牌填 上面设置Integrations-Webhook→ Secret Token的时候生成的那个(通过openssl rand -hex 12),一定要和Secret Token相同:
构建
构建选择“添加构建步骤”→ 调研顶层Maven目标:
目标 填 clean -DskipTests=true package
然后 再选择“添加构建步骤”→ Execute SonarQube Scanner:
Analysis properties填
sonar.projectKey=erdp_doc
sonar.projectName=erdp_doc
sonar.projectVersion=1.0sonar.language=java
sonar.sourceEncoding=UTF-8sonar.sources=$WORKSPACE
sonar.java.binaries=$WORKSPACE
构建后操作
构建设置后就是设置 构建后操作,
Name 选择之前创建的SSH Server,表示需要部署的机器
Source files 填 **/erdp_*.war,表示将 *.war的文件部署
Remove prefix 填 ${JOB_NAME}_app/target ,表示不会创建的目录
Exec command 填
cd /app/java
./kill.sh $JOB_NAME
sleep 1
./run.sh $JOB_NAME
表示部署后需要执行的脚本:
./kill.sh $JOB_NAME 表示杀死微服务
./run.sh $JOB_NAME 表示启动微服务
点击“应用”或“保持”,完成一个任务的创建!至此,我们完成了代码自动部署、代码安全扫描。自动化接口测试 ERDP2.0.0_Interface_Test 。
之后其他的微服务都通过类似的方法创建。 需要注意的是,我们创建的任务,任务名一定是gitlab的微服务名。因为我们用到了微服务名这个变量$JOB_NAME。
Jenkins之自动部署、代码安全扫描、自动化接口测试相关推荐
- 这样用Docker 搭建 Jenkins 实现自动部署,你知道吗?
一.为什么用jenkins 主要是我们现在的项目都是采用手动部署的,每当给项目中新增一个功能就必须执行(打包--测试--上传测试修复的包到指定服务器--部署上线),这个流程操作起来繁杂,不小心就可能 ...
- git自动部署代码到服务器windows,Jenkins-在windows上配置自动化部署(Jenkins+Gitlab+IIS)...
Jenkins-在windows上配置自动化部署(Jenkins+Gitlab+IIS) web部署样例 windows服务部署样例 系统备份 在服务器上创建后缀名为.ps1的文件,例:BackUpD ...
- 统计gitlab代码行脚本_一点也不复杂, GitLab Webhook 自动部署代码
项目使用了gitlab托管,以前部署代码都是登录服务器,然后git pull代码.这样每次需要发布代码,都需要登录,太繁琐.很早就了解到 gitlab支持 webhook,能够自动同步代码.今天尝试搭 ...
- jenkins docker 自动部署 构建_jenkins+docker+vue项目的自动部署环境
亮点 采用shell自定义脚本,控制集成部署环境更加方便灵活 如果服务器更换,重新部署的工作量会比较小 准备工作 首先我们得有一台服务器.我这里用的是阿里云ECS,华东节点.具体的购买操作的话百度会有 ...
- jenkins配置自动部署java程序
任务背景 该项目包含4个程序包:a.jar,b.jar,c.jar,d.jar,每次启动前需要修改程序中的配置文件(修改数据源配置),然后按照先后顺序启动. 任务目标 1.利用jenkins拉取代码, ...
- Java自动部署maven_Maven+Tomcat8 实现自动化部署的方法
本文介绍了maven+tomcat8 实现自动化部署的方法,分享给大家,具体如下: 1.配置tomcat-users.xml 首先在tomcat里配置deploy的用户(tomcat根目录/conf/ ...
- jenkins docker 自动部署 构建_Docker_Jenkins自动部署项目
目标服务器:安装docker→启动docker daemon进程→创建镜像→tag镜像→创建容器→push tag镜像到私服Jenkins:安装Jenkins→安装插件→配置私服地址(见下图)→创建项 ...
- 通过VisualSVN的POST-COMMIT钩子自动部署代码
这段时间我们一直规划LSGO Group的学习网络平台,需求部分已经规划完毕,说做就做,开始搭建环境,由于利用PHP+MYSQL技术,在服务器端首先安装了WAMPServer,以便提供Apache服务 ...
- js java自动部署_vue 自动化部署 jenkins 篇
前端项目打包部署,以前都是手工运行打包命令,打包结束后压缩,然后上传到服务器上解压部署.这种重复性的工作,确实有点让人烦,而且效率也不高. 本文基于 vue 的前端项目. GitHub 的代码仓库,简 ...
最新文章
- HTML5 服务器发送事件(Server-Sent Events)介绍
- 给初学者的一点建议,新手学习java需要学习哪些基础?
- 如何理解naive Bayes
- linux鉴于它没有文件拓展名,linux中的文件类型以及查看文件类型的方法
- Spring-Boot 2.1.x和主要的bean定义
- mysql linux安装百度经验_MySQL 安装(Windows Linux)
- 为什么要用SpringCloud alibaba作为微服务开发框架?
- 微信小程序 网学习址
- Linux如何查看CPU温度
- unison 安装使用
- GIT提交错分支,push错分支怎么办
- (1170, BLOB/TEXT column 'description' used in key specification without a key length)
- 谁才是商超的救世主?
- 电脑运行速度(卡不卡)的决定因素
- Python: 傅里叶级数
- failed to open file mysql,导入mysql数据库打不开的解决办法
- java旋转的行星,为什么行星会旋转,你真的知道吗?
- python 视频硬字幕提取 内嵌字幕提取工具
- 计算机图形学中的常用模型
- 平衡小车c语言程序,【全部开源】两轮平衡小车(原理图、PCB、程序源码、BOM等)...
热门文章
- unity3d坑收集
- Oracle内存管理PGA详解
- 大学物理一些公式汇总
- jQuery 操作 input 之 checkbox
- 获取微信推文的实际链接地址(包含JSON数据以及推文msg_data_id)
- 2022-2028全球与中国DevOps工具市场现状及未来发展趋势
- Spring-AOP 增强(Advice)5种类型和创建增强类
- 如何在 Virtual Box 上下载 Docker
- 联想电脑尺寸在哪里看_怎么看笔记本屏幕大小 笔记本屏幕型号尺寸查看方法介绍...
- ATM跨行查询也开始收费了