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 jenkinsjava

systemctl enable jenkins.service #设置jenkins服务为自启动服务
systemctl start jenkins.service #启动jenkins服务git


vi /etc/sysconfig/jenkins
service jenkins start/stop/restart web

 

或者也能够下载jenkins.war,而后启动  -jar 启动。api

启动好以后,能够经过 ip:8080 进行访问 http://192.168.11.222:8080, 端口默认是8080。 第一次访问须要进行一些插件的安装,会比较慢。安装好以后就能够使用了:浏览器

 

 

推荐使用 service jenkins start/stop/restart  方式进行启停。安全

 

全局工具配置

咱们的项目是基于Maven的,因此须要安装Maven,app

yum install -y mavenssh

安装好以后,须要修改一下settings文件配置,主要是两个地方:maven

“默认 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

安装参考 http://www.javashuo.com/article/p-cmqnwdfp-hw.html

配置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 也位于阿里云之上。

经过在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地址。

 

 

构建触发器

构建触发器勾选

身份验证令牌填 上面设置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。

 

 

 

 

 

 

 

 

 

 

相关文章
相关标签/搜索