基于docker-compose的CICD测试环境快速部署

本测试环境是基于docker容器的,考虑CICD平台包含多种节点,我们采用docker compose来进行容器管理。因为是测试环境,最好和公司的线上系统的操作系统保持一致。考虑主流的CICD平台基本都是部署在linux操作系统上,本文暂不考虑其他OS的CICD部署。由于Linux的发布版本众多,所以本文仅以ubuntu为例,其他linux系统类似。文中linux命令均用蓝色字体,红色字体部分请按实际环境配置替换。

首先需要一台ubuntu系统的服务器,如果只有一台windows的电脑,请参考附录部分,用virtualbox安装一台ubuntu虚拟服务器。 具体部署步骤如下:

  1. 安装docker-compose

  • 首先安装curl:apt-get install curl

  • 然后安装docker:curl -fsSL https://get.docker.com |bash -s docker --mirror Aliyun (国内用阿里云的快一些)

  • 验证:docker version

  • 下载docker-compose:

  • 验证:docker-compose version

  1. 创建本地目录

mkdir -p/external/gerrit/{etc,git,db,index,cache,plugins}

chmod 777 -R/external/gerrit

mkdir -p/external/jenkins_home

chmod 777 -R/external/jenkins_home

注意这些目录最好长期保持,因为部署后的配置,安装的插件,代码库等都保存在这些目录中。容器重启后,配置,修改也不会丢失。

  1. 创建gerrit配置文件

cat << EOF >/external/gerrit/etc/gerrit.config

复制粘贴以下内容:

[gerrit]

basePath = git

canonicalWebUrl = http://192.168.31.45

serverId =46638ea3-9565-4a4c-b924-9c8268614f19

[database]

type = h2

database = db/ReviewDB

[index]

type = LUCENE

[auth]

type = DEVELOPMENT_BECOME_ANY_ACCOUNT

[sendemail]

smtpServer = localhost

[sshd]

listenAddress = *:29418

[httpd]

listenUrl = http://*:8080/

filterClass =com.googlesource.gerrit.plugins.ootb.FirstTimeRedirect

firstTimeRedirectUrl =/login/%23%2F?account_id=1000000

[cache]

directory = cache

[plugins]

allowRemoteAdmin = true

[container]

javaOptions ="-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"

javaOptions ="-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance"

user = root

javaHome =/usr/lib/jvm/java-11-openjdk-11.0.13.0.8-3.el8_5.x86_64

javaOptions =-Djava.security.egd=file:/dev/./urandom

javaOptions = --add-opens java.base/java.net=ALL-UNNAMED

javaOptions = --add-opensjava.base/java.lang.invoke=ALL-UNNAMED

javaOptions =-Djava.security.egd=file:/dev/./urandom

javaOptions = --add-opensjava.base/java.net=ALL-UNNAMED

javaOptions = --add-opens java.base/java.lang.invoke=ALL-UNNAMED

[receive]

enableSignedPush = false

EOF

注意,红色部分要按环境实际IP地址替换。

chmod 777 gerrit.config

  1. 创建docker-compose.yml文件:

考虑本地电脑性能局限,一般不建议部署太多的CICD节点,可以根据实际工作中需要,添加(如ARM,Nexus等)或删除测试的节点。本例中添加了Jenkins, Gerrit和Sonarqube三个节点。

version: '3'

services:

gerrit:

image: gerritcodereview/gerrit:3.5.0.1

ports:

- 8080:8080

- 29418:29418

volumes:

- /external/gerrit/etc:/var/gerrit/etc

- /external/gerrit/git:/var/gerrit/git

- /external/gerrit/db:/var/gerrit/db

-/external/gerrit/index:/var/gerrit/index

-/external/gerrit/cache:/var/gerrit/cache

-/external/gerrit/plugins:/var/gerrit/plugins

environment:

- CANONICAL_WEB_URL=http://192.168.31.45

# command: init

jenkins:

image: jenkinsci/blueocean

ports:

- 9090:8080

- 5000:5000

volumes:

-/var/run/docker.sock:/var/run/docker.sock

-/external/jenkins_home:/var/jenkins_home

sonar:

image: sonarqube

ports:

- 9000:9000

如果需要配置ldap服务器,需求加入下面这段配置到docker-compose文件中,当然gerrit,jenkins的配置文件也要做相应修改:

ldap:

image: osixia/openldap

ports:

- "389:389"

- "636:636"

environment:

- LDAP_ADMIN_PASSWORD=secret

volumes:

- /external/gerrit/ldap/var:/var/lib/ldap

- /external/gerrit/ldap/etc:/etc/ldap/slapd.d

ldap-admin:

image: osixia/phpldapadmin

ports:

- "8443:443"

environment:

- PHPLDAPADMIN_LDAP_HOSTS=ldap

  1. 启动:

docker-compose up -d

默认会使用当前目录下的docker-compose.yml文件,如果用其他yaml文件,用docker-compose-f /xxx/xxx.yml up -d启动

  1. 检查:

docker ps

正常应该有3个container启动,分别是Jenkins, Gerrit和Sonarqube。如有异常,docker ps -a|grep -v Up可以找到没有正常启动的容器,再用docker logscontainer_ID检查错误日志,进行修复。

可能遇到的问题:

  1. gerrit.config文件无法访问,应该是容器外的配置文件权限问题:chmod 777 /external/gerrit/etc/gerrit.config

  1. 错误日志:bootstrap check failure [1] of [1]: max virtual memory areasvm.max_map_count [65530] is too low, increase to at least [262144],原因是服务器默认的虚拟内存配置太低,用echo "vm.max_map_count=262144" >> /etc/sysctl.conf解决

  1. 端口冲突,因为docker对外暴露的端口已经被使用,修改docker-compose.yml文件中映射的端口号,使用前在docker host上用ss-na|grep exposed_port_number确认该端口未被使用。

  1. 使用:

  • Gerrit访问:http://实际IP地址:8080/ 默认登陆

  • Jenkins访问:http://实际IP地址:9090/ 首次登陆需要管理员密码,docker exec Jenkins容器名或ID cat/var/jenkins_home/secrets/initialAdminPassword获取密码

  • Sonarqube访问:http://实际IP地址:9000/ 用户名admin,密码admin。首次登录后要修改密码。

  1. 停止:

docker-compose -f/xxx/xxx.yml down

因为配置,变更的内容都保存在本地磁盘上,下次启动时会加载这些配置,变更。不用担心修改丢失。

至此,CICD的测试环境部署完成,不用时可以停止测试环境,释放出主机资源做其他工作;需要时docker-compose-f /xxx/xxx.yml up -d就可以恢复测试环境。注意,测试环境和上线环境一致性越高越好,包括版本,插件等配置。测试环境适合做灾备恢复测试,版本兼容测试,插件测试,破坏性测试等各种中高风险操作。

附录:用virtualbox安装ubuntu虚拟服务器

  1. 安装virtualbox

下载安装包:Downloads – Oracle VM VirtualBox

按提示安装

  1. 下载ubuntu镜像:Download Ubuntu Desktop | Download | Ubuntu

  1. 新建虚拟机:

打开 virtualbox管理器,点击“新建”,

一直“下一步”,按需选择即可

  1. 安装ubuntu:

上述步骤完成后,选择“ubuntu_vm”,右击选择”启动“,”正常启动“,如下图:

选择下载的ubuntu镜像文件,进入正在linux系统安装过程。

安装完成后,需要进行以下操作:

选择“ubuntu_vm”,右击选择”设置“

只勾选“硬盘“即可。

网络设置,请选择“桥接网卡“,并选择实际网络连接中使用的网卡。

然后正常启动即可进入linux系统界面:

查看当前IP地址,使用xshell或putty等工具ssh登录上该虚拟机,因为原生terminal界面使用不方便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值