持续集成环境的搭建:Gitlab+Jenkins+sonar+Nexus

本文介绍了如何使用Docker搭建持续集成环境,包括Gitlab的安装与基本使用,Nexus私有仓库的配置,SonarQube代码质量管理平台的安装,以及Jenkins的安装、插件配置和自动化构建流程。通过这个环境,实现了Java项目从代码提交到自动构建、质量检查和部署的全过程。
摘要由CSDN通过智能技术生成

主要内容

  • 使用Docker安装gitlab
  • 使用Docker安装Jenkins
  • 使用Docker安装sonar代码质量管理平台
  • 使用Docker安装Nexus私服
  • 使用Jenkins实现一个简单的持续集成操作

最终实现,java代码使用nexus作为maven仓库,代码提交到gitlab中,使用sonar进行代码检查,触发自动构建,并将构建结果部署到指定服务器

gitlab

什么是gitlab

gitlab是一套基于git的软件版本管理工具,可以类比于码云、github等。

一般在公司内部,会使用gitlab搭建一套属于自己的代码仓库,不管是码云还是github,虽然也提供私有仓库,但毕竟代码托管在别人的服务器上,对于一些敏感信息还是有点不放心

使用docker进行安装

#!/bin/bash
HOST_NAME=gitlab.zln.com

# 填写宿主机挂载目录
GITLAB_DIR=/home/sherry/volumns/gitlab
docker stop gitlab
docker rm gitlab
docker run -d --hostname ${HOST_NAME} -p 8443:443 -p 8080:80 \
-p 2222:22 --name gitlab \
--privileged=true \
-v ${GITLAB_DIR}/config:/etc/gitlab -v \
${GITLAB_DIR}/logs:/var/log/gitlab -v \
${GITLAB_DIR}/data:/var/opt/gitlab \
registry.cn-hangzhou.aliyuncs.com/sherry/gitlab-ce:latest

registry.cn-hangzhou.aliyuncs.com/sherry/gitlab-ce:latest

是我的一个公共镜像,托管在阿里云上,省得翻墙下载麻烦

执行此脚本后,就会自动下载镜像并运行,待容器启动后,在浏览器输入

http://gitlab.zln.com:8080,跳出以下页面

image-20181129103602853

说明gitlab安装成功

基本使用

项目组与项目的创建

在注册好用户后,我们登陆进来,看到下面的页面

image-20181129103620380

我们可以直接创建项目,但是一般我习惯先创建项目组,把一堆项目放在一组中,方便管理。

image-20181129103639945

进入项目组后,我们创建项目

image-20181129103711299

创建成功后,此时仓库是空的,由于一开始我设置的是私有仓库,所以直接clone是不行的,我们先把计算机的公钥配置给gitlab

然后就可以git clone ssh://git@gitlab.zln.com:2222/tmp/test1.git下载项目了

剩下的使用,就和其他git仓库基本上一样了,有兴趣的同学可以去了解一下git相关的知识

邮件服务的配置

当发生特定事件的时候,如合并请求,账号修改,我们希望能够通知到特定的人。这个时候可以使用邮件的形式进行通知

  • 开启SMTP服务

根据不同的邮箱服务商,我们去不同的站点开通SMTP服务

如:126

image-20181129111542763

QQ

image-20181129111708956

QQ邮箱在使用第三方客户端登陆的时候,需要授权码登陆

  • vim /etc/gitlab/gitlab.rb

进入gitlab容器,docker exec -it gitlab bash,修改gitlab.rb文件


# 以下为阿里云企业邮箱的配置
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "QQ邮箱"
gitlab_rails['smtp_password'] = "授权码"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'QQ邮箱'

user['git_user_email']="QQ邮箱"

重启:gitlab-ctl reconfigure

  • 测试

gitlab-rails console (会有点慢,要等等)

Notify.test_email(‘收件邮箱’,‘this is title’,‘hello’).deliver_now

如果在我们的收件邮箱中收到了邮件,就说明设置成功

image-20181129114854273

nexus

什么是nexus

私有仓库

使用docker进行安装

docker pull registry.cn-hangzhou.aliyuncs.com/sherry/nexus:3.13.0

  • 运行
docker run -d -p 8082:8081 --name nexus -v /Users/zhangliuning/Volumes/nexus:/nexus-data registry.cn-hangzhou.aliyuncs.com/sherry/nexus:3.13.0

这里需要给docker分配2G以上的内存。否则启动过程中会失败的

默认登陆名密码:admin/admin123

image-20181129133251539

这里挂载了本地目录,在Linux环境下有可能出现一下面的错误

mkdir: cannot create directory '../sonatype-work/nexus3/log': Permission denied
mkdir: cannot create directory '../sonatype-work/nexus3/tmp': Permission denied
Java HotSpot(TM) 64-Bit Server VM warning: Cannot open file ../sonatype-work/nexus3/log/jvm.log due to No such file or directory
Warning:  Cannot open log file: ../sonatype-work/nexus3/log/jvm.log
Warning:  Forcing option -XX:LogFile=/tmp/jvm.log
Unable to update instance pid: Unable to create directory /nexus-data/instances
/nexus-data/log/karaf.log (No such file or directory)
Unable to update instance pid: Unable to create directory /nexus-data/instances

在nexus3官方docker仓库说明文档里挂载目录设置的权限为200但实际安装的时候无法启动,权限不够

修改为757后正常启动

或者不挂载本地目录,就不会有错了

另外一种推荐做法是

docker volume create --name nexus-data
docker run -d -p 8082:8081 --name nexus -v nexus-data:/nexus-data registry.cn-hangzhou.aliyuncs.com/sherry/nexus:3.13.0

使用容器挂载数据比较不容易出现文件权限的问题

基本使用

image-20181129152200643

我们只需要关注这几个maven仓库即可,下面的几个是.net仓库

  • 仓库类型

Type项,

proxy-代理仓库,用于代理远程仓库

group-仓库组,把其他多个仓库组成一个仓库组

​ 通过引用仓库组,我们只需要在pom中引入一个地址,就好像引入了多个仓库地址一样

hosted-宿主

group和hosted一般是我们内部的jar

  • 仓库查找顺序

本地-->私服-->远程仓库

  • 新建仓库

image-20181129154441026

image-20181129154559655

我们可以在两个地方配置使用的仓库

1、setting.xml(公共)

......
	<server>
		<id>私服id</id>
        <username>私服登陆用户名</username>
        <password>私服登陆密码</password>
	</server>
	<server>
		<id>私服id</id
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值