ITPub博客

首页 > 自动化运维 > DevOps > 利用开源软件搭建JAVA工程CI&CD自动化工具链

利用开源软件搭建JAVA工程CI&CD自动化工具链

原创 DevOps 作者:JFrog杰蛙科技 时间:2020-02-24 18:06:36 0 删除 编辑

JAVA 传统项目交付流程的问题

1.        开发和运维间环境有明显差异

2.        代码缺乏统一质量度量

3.        客户要求上线时间紧,人工测试慢,导致测试不充分,时常做线上BUG 修复

 

打造工具链

        源码管理 Gitlab

        持续集成Jenkins

        代码扫描SonarQube

        接口测试PostMan+NewMan

        制品管理ArtifactoryOSS 版本(仅支持Maven

        自动部署Ansible   

 

GitLab 安装

vim /etc/yum.repos.d/gitlab-ce.repo

[gitlab-ce]

name=gitlab-ce

baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6

Repo_gpgcheck=0

Enabled=1

Gpgkey=https://packages.gitlab.com/gpg.key

sudo yum makecache

sudo yum intall gitlab-ce

sudo gitlab-ctl start    # 启动所有 gitlab 组件;

sudo gitlab-ctl stop        # 停止所有 gitlab 组件;

sudo gitlab-ctl restart          # 重启所有 gitlab 组件;

sudo gitlab-ctl status        #   查看服务状态;

sudo gitlab-ctl reconfigure          # 启动服务;

sudo vim /etc/gitlab/gitlab.rb          # 修改默认的配置文件;

gitlab-rake gitlab:check SANITIZE=true --trace    # 检查 gitlab

sudo gitlab-ctl tail        # 查看日志

访问 http://localhost

会跳转到让你修改密码的网页 

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 start   jenkins

 

访问:localhost:8080

初始密码在:/var/lib/jenkins/secrets/initialAdminPassword  

SonarQube 安装

# 使用 Docker 安装

# 下载启动 Mysql 使用 Docker

docker run --name mysql5.7 -v /data/mysql5.7-data:/var/lib/mysql -p   3306:3306 -e MYSQL_ROOT_PASSWORD=123456    -d mysql:5.7

# 进入容器

docker exec -it mysql5.7 bash

# 进入数据库

mysql -uroot -p123456

# 创建数据库及授权

create database db_sonar character set utf8 collate utf8_general_ci;

flush privileges;

grant all privileges on db_sonar.* to 'sonar'@'%'identified by 'sonar'   with grant option;

flush privileges;

# 查看容器 IP 地址

cat /etc/hosts

127.0.0.1         localhost

::1     localhost   ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes  

ff02::2 ip6-allrouters

172.17.0.2        ec7039cd8020

# 下载并启动 SonarQube

docker run -d --name sonar -p 9000:9000 -p 9092:9092  -v /data/sonar/conf:/opt/sonarqube/conf  -v /data/sonar/data:/opt/sonarqube/data -v   /data/sonar/logs:/opt/sonarqube/logs -v   /data/sonar/extensions:/opt/sonarqube/extensions -e   "SONARQUBE_JDBC_USERNAME=sonar"    -e "SONARQUBE_JDBC_PASSWORD=sonar" -e "SONARQUBE_JDBC_URL=jdbc:mysql://172.17.0.2:3306/db_sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false"   sonarqube:6.7.5

 

 

PostMan & NewMan 安装

安装NodeJS

注意: 如果已经安装NodeJS 可以跳过此步

下载地址: https://nodejs.org/en/download/

下载 Linux Binaries (x64)


下载完解压以后配置环境变量NODE_HOME PATH

安装Newman

Jenkins slave 节点安装Newman

npm install -g newman

安装Postman

下载地址: https://www.postman.com/downloads/

安装在 windows 或者带 UI Linux 机器

安装文档: https://learning.postman.com/docs/postman/launching-postman/installation-and-updates/

导出Postman 测试集合

创建集合app1

app1 为当前应用的名称,可以根据实际情况定义  

名称填写 app1 Authorization 选择 Basic Auth , 并填入Artifactory 的用户名密码,如下图  

Variables 标签条件变量: base_url ,值为 artifactory Custom Base URL ”,例如: http://localhost:8081/artifactory

点击 create 按钮完成并保存  

 

创建request

在集合app1 右键点击,弹出的request 选择”Add request” 

Request name 填写 ping ”,然后点击”Save to app1” 按钮 

Api url   {{base_url}}/api/system/ping

Tests 标签填入一下内容:

pm.test("Status code is 200", function () {

    pm.response.to.have.status(200);

});

pm.test("Body is correct", function () {

    pm.response.to.have.body("OK1");

});

这是两个测试用例,分别测试返回值是否为200 ,返回内容是否为“OK1 ”,最后同时按 Ctrl+s 保存内容 

 

导出集合

在集合app1 右键点击,选择“Export  

导出的名字为:“app1.postman_collection.json

安装Artifactory OSS 版本

使用Yum 方法安装

wget https://bintray.com/jfrog/artifactory-rpms/rpm -O bintray-jfrog-artifactory-rpms.repo

sudo mv bintray-jfrog-artifactory-rpms.repo /etc/yum.repos.d/

sudo yum install jfrog-artifactory-oss  

初始账号和密码为:admin/password ,登录成功后可以看到以下界面

其他安装方法可参考如下链接:

https://www.jfrog.com/confluence/display/RTF6X/Installing+on+Linux+Solaris+or+Mac+OS

安装Ansible

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

yum install ansible

工具链使用要点

1.        GitLab 源码管理要有良好的版本控制模型

2.        使用Jenkins 流水线作为统一的构建平台进行编译构建,抛弃传统的研发本地构建的模式

3.        引入SonarQube 代码质量检查工具建立代码质量度量,提升代码质量,减少低级BUG 及技术债务

4.        构建产物统一上传到制品库,运维从制品库中获取发布包,使用ansible 自动部署到预发布环境。

5.        通过开发接口测试脚本,从主到次的顺序,逐步完善系统的接口自动化测试,减少人工测试消耗的时间,缩短测试周期。

6.        将自动部署和自动化测试的步骤也统一集成到流水线中。形成统一交付流水线,提升交付效率

进阶改造

1.        使用Docker 容器化技术降低环境对软件的影响。

2.        通过Selenium 开发脚本,进行UI 自动化测试,提升测试效率。

3.        使用Artifactory Pro 版本,利用元数据,对制品生命周期进行管理。

4.        Artifactory Pro 版本支持多语言,可以将自动化工具链扩展到其他语言上。

5.        使用JFrog Xray 对提升软件安全系数。

 

 

更多精彩内容请微信搜索公众号: jfrogchina

更多技术分享可以关注2 25 日在线课堂:《深入解析Deployment

 

课程介绍

Kubernetes 以其先进的理念、活跃的社区,已成为当前容器集群化编排、部署和运行的事实标准。越来越多的企业和团队将Kubernetes 引入了自己的研发和生产环境。

Deployment Kubernetes 上最常用的对象,用与创建和管理无状态Pod 对象的集群,并实现集群自动化的扩容、缩容和升级等运维工作。要想应用好Deployment 对象,首先要充分了解和熟悉Deployment 的原理、机制和应用方式。

本期将深入、细致地分析Deployment 的设计原则和运行机制,并通过实操演示的方式,来讲解Deployment 如何实现对于Pod 集群的自动化管理工作。

 

 

课堂收益

通过本期的讲解和演示,能够帮助大家深入理解Deployment 的内部机制,熟悉Deployment 的应用方式,掌握Deployment 实现Pod 集群自动化扩容、缩容和升级等运维的工作机制,使得大家能够在实际工作中更好的应用和管理Deployment 对象。

 

本期话题

1 Deployment 的定义和组成

2 Deployment 实现自动化运维的工作原理

3 实操演示Deployment 的应用方式

 

课堂活动

本期课堂讲师会在结束前进行抽奖活动

第一名:小爱音响

第二名:JFrog 新版T


报名链接: https://www.bagevent.com/event/6377140



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69954434/viewspace-2677019/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-11-15

  • 博文量
    34
  • 访问量
    13305