前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用开源软件搭建JAVA工程CI&CD自动化工具链

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

原创
作者头像
JFrog杰蛙科技
修改2020-02-25 14:55:43
1.2K0
修改2020-02-25 14:55:43
举报
文章被收录于专栏:JFrog杰蛙DevOpsJFrog杰蛙DevOps

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        # 查看日志

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JAVA传统项目交付流程的问题
    • 打造工具链
      • GitLab安装
      • Jenkins安装
      • SonarQube安装
      • PostMan & NewMan安装
      • 安装Artifactory OSS版本
      • 安装Ansible
    • 工具链使用要点
      • 进阶改造
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档