搭建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. mysql 安装报错集合

    mysql-5.6.39 源码编译安装报错 报错信息: /tmp/ccV858jD.s: Assembler messages: /tmp/ccV858jD.s: Fatal error: can't ...

  2. windows下python IDE安装注意事项&Python安装及编辑器UliPad安装

    python下载地址: http://www.python.org/download/releases/2.7.6/ 我自己用的是ulipad  ,但是注意  ulipad和python的版本一定要配 ...

  3. 相关性不一定等于因果性:从 Yule-Simpson’s Paradox 讲起

    1. 两件事伴随发生,不代表他们之间有因果关系 - 从一些荒诞相关性案例说起 在日常生活和数据分析中,我们可以得到大量相关性的结论,例如: 输入X变量,有98%置信度得到Y变量 只要努力,就能成功 只 ...

  4. 【10分钟学Spring】:@Profile、@Conditional实现条件化装配

    根据不同的环境来装配不同的bean 企业级开发中,我们一般有多种环境,比如开发环境.测试环境.UAT环境和生产环境.而系统中有些配置是和环境强相关的,比如数据库相关的配置,与其他外部系统的集成等. 如 ...

  5. 机器学习-Python 01

    机器学习中最常用最流行的语言工具现阶段应该是Python, 这篇文章主要介绍一些常用的Python语法知识.本篇博文适合那些有其他语言基础的程序员们,如果一点基础都没有,我建议先跳过.博主以前是做移动 ...

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

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

  7. iOS 音频开发之CoreAudio

    转自:http://www.cnblogs.com/javawebsoa/archive/2013/05/20/3089511.html 接 触过IOS音频开发的同学都知道,Core Audio 是I ...

  8. [TimLinux] JavaScript 给表单提前之前进行验证的方法

    1. onSubmit事件 这个事件是注册到form表单上的,不是注册在input type="submit"这个input按钮上面的. 2. 注册方式 HTML内部注册:< ...

  9. Zabbix与ELK整合实现对日志数据的实时监控

    4.2.zabbix平台配置日志告警 一. ELK与zabbix有什么关系? ELK大家应该比较熟悉了,zabbix应该也不陌生,那么将ELK和zabbix放到一起的话,可能大家就有疑问了?这两个放到 ...

  10. MySQL 数据查询小练习

    作业 # 创建班级表 create table class ( cls_id int auto_increment primary key, cls_name varchar(10) not null ...