利用开源软件搭建java工程ci&cd自动化工具链(代码片段)

author author     2023-04-16     198

关键词:

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
会跳转到让你修改密码的网页 2-3
技术图片
技术图片

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. 将自动部署和自动化测试的步骤也统一集成到流水线中。形成统一交付流水线,提升交付效率

    进阶改造

  7. 使用Docker 容器化技术降低环境对软件的影响。
  8. 通过Selenium开发脚本,进行UI自动化测试,提升测试效率。
  9. 使用Artifactory Pro 版本,利用元数据,对制品生命周期进行管理。
  10. Artifactory Pro版本支持多语言,可以将自动化工具链扩展到其他语言上。
  11. 使用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

持续集成:jmeter+ant+jenkins搭建接口自动化测试环境

...Java开发的,apache下的开源工具,常被用于做接口自动化和性能测试工具。因为他开源,入手也非常简单,所以越来越受测试人员青睐。ant也是用Java开发的,apache下的一个将代码编译、测试、部署等联系在一起... 查看详情

容器云原生devops学习笔记——第三期:从零搭建ci/cd系统标准化交付流程(代码片段)

...同实现符合DevOps理念的研发工具平台,实现研发过程自动化、标准化;实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带你玩转容器云原生DevOps公开课开始系统的学习DevOps,所以根据学习视频整理出以... 查看详情

ci/cd之搭建私有git仓库gitlab(代码片段)

...装GitlabGitlab使用Gitlab简介GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab官方文档:https://docs.gitlab.com/CI/CD持续集... 查看详情

ci/cd之搭建私有git仓库gitlab(代码片段)

...装GitlabGitlab使用Gitlab简介GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab官方文档:https://docs.gitlab.com/CI/CD持续集... 查看详情

什么是ci/cd?

...工具,它是一种软件开发实践,核心是通过引入自动化的手段来提高软件交付效率。CI/CD最终目的:让工程师更快&更高质量&更简单的交付软件!持续集成&持续交付&持续部署持续集成(ContinuousIntegr... 查看详情

ci/cd技术专题「jenkins实战系列」总结归纳jenkins的安装使用和配置流程介绍(代码片段)

...件平台,使软件的持续集成变成可能。通过Jenkins实现自动化部署项目,本地git提交代码Jenkins自动化将项目部署在Linux服务器。Jenkins技术原理篇版本控制服务Jenki 查看详情

敏捷,持续集成/持续交付,devops三者的区别

...因此,为避免项目遭受重创,CI强调了驱动构建和测试的自动化工具。CI实现之后,构建和集成工作就会减少,团队也可以 查看详情

容器云原生devops学习笔记——第三期:从零搭建ci/cd系统标准化交付流程(代码片段)

...同实现符合DevOps理念的研发工具平台,实现研发过程自动化、标准化;实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带你玩转容器云原生DevOps公开课开始系统的学习DevOps,所以根据学习视频整理出以... 查看详情

容器云原生devops学习笔记——第三期:从零搭建ci/cd系统标准化交付流程(代码片段)

...同实现符合DevOps理念的研发工具平台,实现研发过程自动化、标准化;实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带你玩转容器云原生DevOps公开课开始系统的学习DevOps,所以根据学习视频整理出以... 查看详情

ci与cd 平台搭建与生产落地

Jenkins+SVN+Maven+Shell实现项目一键发布http://jdkleo.iteye.com/blog/2159844本文出自“运维自动化”博客,请务必保留此出处http://shower.blog.51cto.com/4926872/1887366 查看详情

jenkinsgitlab持续集成打包平台搭建

...失败风险的开发实践。其每一次代码更新,都要通过自动化测试来检测代码和功能的正确性,只有通过自动测试的代码才能进行后续的交付和部署.CI是团队成员间(产研测)更 查看详情

cd/ci的概念

...,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。       持续部署(continuousdeployment)是通过自动化的构建、测... 查看详情

gitlabci/cd配置-并发送消息到飞书

...合实践。CI/CD通过在应用程序的构建、测试和部署中实施自动化,在开发和运营团队之间架起了桥梁。官方文档:GitLabCI/CD|GitLabGitLabCI/CD是一个内置于GitLab的工具,用于通过连续方法进行软件开发:参考文档:https://docs.gitlab.com/ru... 查看详情

ci/cd(代码片段)

CI/CD  CI/CD是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD的核心概念是持续集成、持续交付和持续部署。持续集成:是一种软件开发实践,团队开发人员频繁提交代码到源代码仓库,每次提交都进行... 查看详情

基于rancher的企业cicd环境搭建

...它们能够与GitSVN等代码管理仓库集成,帮助我们实现一些自动化任务。CI/CD软件很多,再加上代码仓库不同,外加上业务流程的复杂度和不同开发语言的特 查看详情

软件工程中的ci&cd

wiki在软件工程中,CI/CD或CICD通常是指持续集成以及持续交付或持续部署的组合实践持续集成在软件工程中,持续集成(CI)是每天将所有开发人员的工作副本合并到共享主线中的一种做法。[1]GradyBooch在1991年的方法中首次提出了C... 查看详情

ci/cd持续集成/持续部署敏捷开发

...,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。       持续部署(continuousdeployment)是通过自动化的构建、测... 查看详情

持续集成:什么是持续集成(ci)持续交付(cd)和持续部署(cd)

...并到主干然后自动进行构建和测试。其实这里最关键的是自动化测试,这个是最难的,因为测试涉及内容很多。持续交付ContinuousDelivery:持续交付,简称CD,是在CI的基础进行了扩展,在CI环节完成了软件构建和测试工作并形成了... 查看详情