搭建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

安装参考 https://blog.csdn.net/huiyanshizhen21/article/details/87069356

配置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.0

sonar.language=java
sonar.sourceEncoding=UTF-8

sonar.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之自动部署、代码安全扫描、自动化接口测试的更多相关文章

  1. jenkins自动部署代码到多台服务器

    下面讲一下如何通过一台jenkins服务器构建后将代码分发到其他的远程服务器,即jenkins自动部署代码到多台服务器. 1.下载 pulish over ssh 插件 2.系统管理 -> 系统 ...

  2. 关于gitlab+jenkins自动部署代码的实现

    本人PHP开发者,项目组大多是PHP,少量java项目. 因公司目前服务器和项目的管理比较混乱,与领导商量后,决定尝试 gitlab+jenkins自动化部署(之前用的svn FTP手动部署代码),解 ...

  3. Gitlab+Jenkins实现自动部署

    Gitlab+Jenkins实现自动部署   系统环境: Gitlab主机 IP:192.168.1.2 Jenkins主机 IP:192.168.1.3 一.为何要做自动部署 #部署Tomcat的在 ...

  4. 在linux服务器上装svn版本管理,自动部署代码到项目

    在linux服务器上装svn版本管理,自动部署代码到项目 http://bbs.aliyun.com/read/9715.html?spm=5176.7114037.1996646101.1.W3zw ...

  5. 在linux服务器上装svn版本管理,自动部署代码到web项目

    在linux服务器上装svn版本管理,自动部署代码到项目 1.安装svn服务器端  yum install subversion   从镜像下载安装svn服务器端 中间会提示是否ok,输入y,确认  ...

  6. Jenkins 实现前端自动打包,自动部署代码及邮件提醒功能

    在之前的公司,我们前端使用webpack构建项目,项目构建完成后,我们会使用ftp或linux的一些命令工具上传我们的文件到服务器上,这种方式虽然是可以,但是最近面试的时候,人家会问我前端如何部署项目 ...

  7. springboot+Jenkins+docker-compose自动部署项目实践

    DevOps思想 一个开发.测试.运维的整个过程的思想. plan:需求.计划 code:编码 build:构建 test: 测试 release:发布版本 deploy:部署 operate:项目运 ...

  8. 使用jenkins 插件自动部署项目至tomcat

    前面使用maven.ant编译项目就不说,只说一下使用jenkins的插件自动部署项目 1.首先jenkins安装插件Deploy to container Plugin ,下载地址为:https:/ ...

  9. window、linux系统与linux服务器之间使用svn同步及自动部署代码的方法

    摘要: 在家用PC,在公司用办公电脑对一个项目的代码进行修改时,会遇到代码同步的问题.本文讲解了代码同步及自动部署的解决办法. 实现方法: 1.首先在linux服务器上和linux上安装svn(sud ...

随机推荐

  1. 【游记】CSP J/S 2019 游记

    J 组 \(2:30\)开始, \(2:13\)还在酒店的我看了看手表...飞奔考场. T1 数字游戏 秒切. 下午某中学某大佬说可用线性基(%) T2 公交换乘 用单调队列思想,秒切. T3 纪念品 ...

  2. 当url中出现汉字

  3. DBCP2的使用例子和源码详解(不包括JNDI和JTA支持的使用)

    目录 简介 使用例子 需求 工程环境 主要步骤 创建项目 引入依赖 编写jdbc.prperties 获取连接池和获取连接 编写测试类 配置文件详解 数据库连接参数 连接池数据基本参数 连接检查参数 ...

  4. HBase(2) Java 操作 HBase 教程

    目录 一.简介 二.hbase-client 引入 三.连接操作 四.表操作 五.运行测试 FAQ 参考文档 一.简介 在上一篇文章 HBase 基础入门 中,我们已经介绍了 HBase 的一些基本概 ...

  5. 全面解析JVM加载中初始化的时机

    JVM类加载过程 JVM类加载过程分为几个阶段,分别是加载.验证.准备.解析和初始化.加载是把二进制字节码载入内存,验证是校验字节流中包含的信息是否符合当要求,准备是为静态变量分配内存并设置静态变量初 ...

  6. OpenCV图像识别初探-50行代码教机器玩2D游戏【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  7. 洛谷 CF402A Nuts 题解

    本蒟蒻又来发题解啦! 这题是个紫题? 好吧,恶意评分可海星? 回到正题 这题很明显是贪心啊: 有a个坚果,b个隔板,x个隔板,最多分成v个区间. 那么我们的贪心策略是: 如果一共使用的挡板小于x,且当 ...

  8. 基于jquery的弹幕实现

    前几天,需要做一个弹幕展示效果,看了网上很多资料,但是很不凑巧,都不能满足自己的需求和功能点,但是总不能放弃吧,那么就自己写一个,今天把成果分享给大家,首先说一下市面上比较流行的弹幕插件吧: 1.有关 ...

  9. 记一次Elasticsearch OOM的优化过程——基于segments force merge 和 store type 转为 niofs

    首选,说明笔者的机器环境(不结合环境谈解决方案都是耍流氓): cpu 32核,内存128G,非固态硬盘: RAID0 (4T * 6),单节点,数据量在700G到1800G,索引15亿~21亿.敖丙大 ...

  10. [TimLinux] Python如何运行程序

    1. Python解释器安装 访问官方网站:https://www.python.org/, 在首页标签中找到“Downloads”,根据不同的操作系统,选择相应的下载源文件即可. 2. 源码安装 在 ...