这是一篇纯干货文章,该文章介绍如何使用docker快速搭建持续集成环境。我假定大家看了我前面的两篇文章或者自己了解过docker和docker相关的知识,因此这篇文章目的只有一个,尽快搭建好具备持续集成的环境。

大纲

为了方便大家理解,也为了让我更好的完成文章编写,我画了一个脑图。这由于画这张脑图的时候并不是所有任务都做完了,所以有些是未完成状态,后续我也会根据进度慢慢完善这张脑图。
CI集成linux下搭建windows下搭建安装gitlab安装sonarQube安装jenkins安装gerritDocker安装下载安装配置加速器CI配置提交到gerritdev提交管理员force pushgerrit配置触发jenkins同步gitlab代码更新代码到gitlabjenkins编译apk生成apk文件生成apk下载地址上传apk到ftp服务器sonarqube配置配置sonarlint插件sonarqube项目配置jenkins触发sonarqubesonarqube定时扫描文章完善环境搭建项目配置

准备工作

工欲善其事,必先利其器。我们需要把基础环境准备好,基础环境包括:

  1. 一台性能还可以的安装了win10的电脑(4G以上+双核)
  2. docker for windows
  3. powerShell(Win10旗舰版自带)
  4. bios和win10 均开启虚拟化技术(VT)

在安装好docker之后我们需要在磁盘中开辟一个空间用来存放docker相关的配置,我电脑位置为C:/Docker ,然后根据本文需要使用powerShell创建几个基础目录。

PS C:\Docker> mkdir gitlab
PS C:\Docker> mkdir gerrit
PS C:\Docker> mkdir sonarqube
PS C:\Docker> mkdir Jenkins

然后我们需要使用阿里巴巴镜像加速服务,否则在安装对应镜像的时候可能菊花疼。阿里巴巴镜像加速服务会提示如何在docker中配置,这里不多说。

安装工作

安装对应的容器我们使用的docker-compose,在win10最新版本的docker中自带该工具(如果使用linux版我们可能需要单独下载并配置到环境中)。

安装镜像我们使用docker-compose能达到傻瓜式操作,总共就两步:

  1. 编辑compose配置文件*.yml;
  2. 运行yml文件;

安装gitlab

Step1:我们在C:/Docker/gitlab目录下创建一个名字为docker-compose.yml的文件,然后使用文本编辑工具打开,往里面复制如下内容(了解compose文件格式点击这里):

version: '3'
services:
    gitlab:
      image: 'twang2218/gitlab-ce-zh:10.5'
      container_name: gitlab
      restart: unless-stopped
      hostname: 'localhost'
      environment:
        TZ: 'Asia/Shanghai'
      ports:
        - '10080:80'
        - '10443:443'
        - '10022:22'
      volumes:
        - c:/docker/gitlab/data:/var/data/gitlab
        - c:/docker/gitlab/log:/var/log/gitlab

在这里我们使用的是gitlab社区版的中文汉化版,国内用这个版本的人挺多的。当然也有很多人用国际版,两者并无本质区别;
restart有多种配置,很多文章写的aways就是你停了还会启动,本文为了很好控制使用停止后不再重启 unless-stopped

Step2:使用docker-compose命令运行这个配置(-d表示在后台运行否则会打印出来)。

PS C:\Docker> cd .\gitlab\
PS C:\Docker\gitlab>  docker-compose up -d 

这个操作其实在内部是执行了包括读取解析配置,安装需要的镜像,配置对应容器,运行容器4个步骤。

方法非常简单,后面使用compose安装的镜像都是这样的方式,也是非常简单,就那么两步。

注意事项:

  1. docker-compose指令会解析当前目录下的docker-compose.yml,因此大家千万不要搞错目录了。
  2. 卷参的映射不要搞错,linux和windows文件系统是不一样的,如果是windows下就是- c:/docker/gitlab/etc:/etc/gitlab这种形式。

然后我们打开docker->dashboard,会看到gitlab已经跑起来了。
在这里插入图片描述使用ps -a命令也能验证(Status一栏会从starting->healthy):

PS C:\Docker\gitlab> docker ps -a                                                                                                                                                                              CONTAINER ID        IMAGE                         COMMAND             CREATED             STATUS                   PORTS                                                                  NAMES
138b843d9222        twang2218/gitlab-ce-zh:10.5   "/assets/wrapper"   9 minutes ago       Up 9 minutes (healthy)   0.0.0.0:10022->22/tcp, 0.0.0.0:10080->80/tcp, 0.0.0.0:10443->443/tcp   gitlab_gitlab_1

如果还不放心可以打开浏览器,输入配置文件中对应的网址,进入gitlab管理页面:
在这里插入图片描述

安装Gerrit

Gerrit的安装和gitlab安装基本一致,不同的是gerrit安装后需要配置验证方式。
Step1:我们在C:/Docker/gerrit目录下创建一个名字为docker-compose.yml的文件,然后使用文本编辑工具打开,往里面复制如下内容(了解compose文件格式点击这里):
这里使用的是github上的镜像,英文版的,我抄过来了,戳这里


version: '3'
services:
  gerrit:
    image: gerritcodereview/gerrit
    container_name: gerrit
    ports:
      - "29418:29418"
      - "20080:8080"
    depends_on:
      - ldap
    volumes:
      - c:/docker/gerrit/etc:/var/gerrit/etc
      - c:/docker/gerrit/git:/var/gerrit/git
      - c:/docker/gerrit/db:/var/gerrit/db
      - c:/docker/gerrit/index:/var/gerrit/index
      - c:/docker/gerrit/cache:/var/gerrit/cache
      - c:/docker/gerrit/logs:/var/gerrit/logs
    environment:
      - CANONICAL_WEB_URL=http://localhost:20080
    #entrypoint: /entrypoint.sh init

  ldap:
    image: osixia/openldap
    container_name: openldap
    ports:
      - "389:389"
      - "636:636"
    environment:
      - LDAP_ADMIN_PASSWORD=secret
    volumes:
      - c:/docker/gerrit/ldap/var:/var/lib/ldap
      - c:/docker/gerrit/ldap/etc:/etc/ldap/slapd.d

  ldap-admin:
    container_name: phpldapadmin
    image: osixia/phpldapadmin
    ports:
      - "6443:443"
    environment:
      - PHPLDAPADMIN_LDAP_HOSTS=ldap

Step2:使用docker-compose命令运行这个配置。

PS C:\Docker\gitlab> cd ..\gerrit\
PS C:\Docker\gerrit>  docker-compose up -d

验证方式和gitlab一样,docker->dashboard
在这里插入图片描述Step3 修改验证配置
我们知道gerrit登录有好几种方式,一般网上会推荐使用openID或者oAuth的方式,但是我发现当有多个服务运行的时候,管理密码是一件挺头疼的事情,于是引入了Ldap,我们再yml配置文件中能找到ldap的踪影;

具体就是修改C:/docker/gerrit/etc/gerrit.config这个文件,内容修为如下:

gerrit]
	basePath = git
	canonicalWebUrl = http://localhost:20080

......

[index]
	type = lucene

[auth]
	type = ldap
	gitBasicAuth = true

[ldap]
	server = ldap://ldap
	username=cn=admin,dc=example,dc=org
	accountBase = dc=example,dc=org
	accountPattern = (&(objectClass=person)(uid=${username}))
	accountFullName = displayName
	accountEmailAddress = mail

[sendemail]
	smtpServer = localhost

[sshd]
	listenAddress = *:29418

[httpd]
	listenUrl = http://*:8080/

[cache]
	directory = cache

[container]
	user = root

同时我们需要修改ldap对应的密码(密码按照自己要求修改),位于C:/docker/gerrit/etc/secure.config

[ldap]
  password = secret

到这里Gerrit就启动完成了,打开ldap管理界面添加用于Gerrit的管理员账号密码。账号就是我们gerrit.config文件中配置的:

用户名:cn=admin,dc=example,dc=org
密码: secret

登陆https:localhost:6443进去后,操作分别是:点击用户名->Create a child entry->选择第一个模板->输入信息->创建->commit;
在这里插入图片描述

参数为:
Given Name: Gerrit
Last Name: Admin
Common Name: Gerrit Admin
User ID: gerritadmin
Email: gerritadmin@localdomain
Password: secret

现在我们可以用杠杆再ladp上创建的账号登录gerrit了;gerrit的网址是http:localhost:20080

安装sonarqube

Step1:我们在C:/Docker/sonarqube目录下创建一个名字为docker-compose.yml的文件,然后使用文本编辑工具打开,往里面复制如下内容(官网的sonarqube的数据库镜像不稳定,我换成了国内大神的):


version: '2'

services:
  # database service: mysql
  mysql:
    image: liumiaocn/mysql:5.7.16
    container_name: mysql
    restart: unless-stopped
    ports:
      - "3306:3306"
    volumes:
      - c:/docker/sonarqube/mysql/lib:/var/lib/mysql
      - c:/docker/sonarqube/mysql/etc:/etc/mysql/conf.d
    environment:
      - MYSQL_ROOT_PASSWORD=hello123
      - MYSQL_DATABASE=sonarqube

    
  # Security service: sonarqube
  sonarqube:
    image: liumiaocn/sonarqube:6.7.1
    container_name: sonarqube
    restart: unless-stopped
    ports:
      - "9000:9000"
    volumes:
      - c:/docker/sonarqube/conf:/opt/sonarqube/conf
      - c:/docker/sonarqube/extensions:/opt/sonarqube/extensions
      - c:/docker/sonarqube/log:/opt/sonarqube/log
      - c:/docker/sonarqube/data:/opt/sonarqube/data
    environment:
      - SONARQUBE_JDBC_USERNAME=root
      - SONARQUBE_JDBC_PASSWORD=hello123
      - SONARQUBE_JDBC_URL=jdbc:mysql://mysql:3306/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
    links:
      - mysql:mysql
    depends_on:
      - mysql


Step2:使用docker-compose命令运行这个配置。

PS C:\Docker\gerrit> cd ..\sonarqube\
PS C:\Docker\sonarqube>  docker-compose up -d

注意: PostgreSQL数据库可以替换成其他的数据库,默认是用的嵌入式H2数据库,H2是一个内存数据库,重启后数据就没有了。

验证SonarQube是否安装成功了,打开http://localhost:8007,能够正常访问代表成功;
在这里插入图片描述

安装Jenkins

老规矩,贴上yml文件,这里使用的官方的镜像;

version: '3'
services:
  docker_jenkins:
    restart: unless-stopped
    image: jenkins/jenkins:lts
    container_name: jenkins
    ports:
      - '30080:8080'
      - '50000:50000'
    volumes:
      - c:/docker/jenkins/plugins/:/var/jenkins_home/plugins
      - c:/docker/jenkins/secrets/:/var/jenkins_home/secrets
      - c:/docker/jenkins/docker.sock:/var/run/docker.sock

然后启动

PS C:\Docker\sonarqube> cd ..\jenkins\
PS C:\Docker\jenkins>  docker-compose up -d

然后我们会看到这样一个登陆界面,他告诉我们密码保存在C:\Docker\jenkins\data\secrets\nitialAdminPassword文件中,如果你忘记密码了也可以在这里面找到。
我们复制密码,下一步进入到创建管理员用户界面。我把我的信息填写进去;
在这里插入图片描述我填写的信息如下:

Username:jenkins
Password: 12345678
Confirm password:12345678
Full name:Jekins Admin

注意:中间会提示你安装插件,你可以选择推荐配置也可以自定义配置,我喜欢自定义配置,因为推荐配置安装要很长时间。

最终,我们会进入到Jenkins管理页面,到这里持续集成环境就搭建成功了。
在这里插入图片描述默认是英文界面,如果你想要换成中文,需要在Jenkins->Manage Jenkins->Config System->control+f搜索
在这里插入图片描述
勾选下载完成重启,再次登陆后就是中文界面了。

这里贴上清华的源,有些同学反馈下载插件太慢了。

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

如果更换了源还是很慢,建议编辑Jenkins\updates\default.json。把里面的google改成百度,然后重启;root@ad3e3a6dabb3:/var/jenkins_home/updates# vim default.json
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐