使用docker-compose快速部署cicd环境

安装docker

添加docker-ce源

1wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker

1yum -y install docker-ce

配置docker加速

 1mkdir /etc/docker
 2cat > /etc/docker/daemon.json <<EOF
 3{
 4    "registry-mirrors": [
 5        "https://mciwm180.mirror.aliyuncs.com",
 6        "https://docker.mirrors.ustc.edu.cn/",
 7        "https://registry.docker-cn.com"
 8    ],
 9    "exec-opts": ["native.cgroupdriver=systemd"]
10}
11EOF

运行docker

1systemctl enable --now docker

安装docker-compose

安装docker-compose

1yum -y install epel-release
2yum -y install docker-compose

检查安装

1docker-compose --version
2docker-compose version 1.18.0, build 8dd22a9

持续集成配置

这里主要是由Gitlab+Jenkins+SonarQube集成的一个示例,当然你可以把Harbor仓库什么的都集成在里面也没有问题

创建docker-compose.yaml文件

 1version: "3.7"
 2services:
 3  jenkins:
 4    image: jenkins/jenkins:lts
 5    container_name: jenkins
 6    restart: always
 7    volumes:
 8    - ./jenkins/jenkins_home:/var/jenkins_home:rw
 9    ports:
10    - "8080:8080"
11    networks:
12    - net-cicd
13  gitlab-ce:
14    image: gitlab/gitlab-ce:12.0.0-ce.0
15    container_name: gitlab-ce
16    restart: always
17    environment:
18      GITLAB_OMNIBUS_CONFIG: |
19        external_url 'http://git.hzde.com:9080'
20        gitlab_rails['gitlab_shell_ssh_port'] = 9022
21    volumes:
22    - ./gitlab/config:/etc/gitlab
23    - ./gitlab/logs:/var/log/gitlab
24    - ./gitlab/data:/var/opt/gitlab
25    ports:
26    - "9443:443"
27    - "9080:9080"
28    - "9022:22"
29    networks:
30    - net-cicd
31  sonarqube:
32    image: sonarqube:lts
33    container_name: sonarqube
34    restart: always
35    deploy:
36      resources:
37        limits:
38          cpus: '0.50'
39          memory: 1Gi
40        reservations:
41          cpus: '0.25'
42          memory: 512Mi
43    environment:
44      sonar.jdbc.username: sonar
45      sonar.jdbc.password: sonar
46      sonar.jdbc.url: jdbc:postgresql://postgresql/sonar
47    volumes:
48    - ./sonarqube/conf:/opt/sonarqube/conf
49    - ./sonarqube/data:/opt/sonarqube/data
50    - ./sonarqube/logs:/opt/sonarqube/logs
51    - ./sonarqube/extensions:/opt/sonarqube/extensions
52    ports:
53    - "9000:9000"
54    depends_on:
55    - postgresql
56  networks:
57    - net-cicd
58  postgresql:
59    image: postgres:9.6
60    container_name: postgresql
61    restart: always
62    environment:
63      POSTGRES_USER: sonar
64      POSTGRES_PASSWORD: sonar
65      POSTGRES_DB: sonar
66    volumes:
67    - ./postgresql/data:/var/lib/postgresql/data:rw
68    ports:
69    - "5432:5432"
70    networks:
71    - net-cicd
72networks:
73  net-cicd:

在docker-compose.yaml同级的目录建立一下目录

/ostgresql/datajenkins持久化数据 gitlab/config gitlab配置目录 gitlab/logs gitlab日志目录 gitlab/data gitlab数据目录 sonarqube/conf sonarqube/data sonarqube/logs sonarqube/extensions postgresql/data

1mkdir -p jenkins/jenkins_home
2mkdir -p gitlab/{config,logs,data}
3mkdir -p sonarqube/{conf,data,logs,extensions}
4mkdir -p postgresql/data

建立完成后的目录结构如下

 1tree
 2.
 3├── docker-compose.yaml
 4├── gitlab
 5│   ├── config
 6│   ├── data
 7│   └── logs
 8├── jenkins
 9│   └── jenkins_home
10├── postgresql
11│   └── data
12└── sonarqube
13    ├── conf
14    ├── data
15    ├── extensions
16    └── logs

启动docker-compose

1docker-compose up -d

第一次启动的过程会比较慢,因为需要从Docker Hub下载镜像

访问jenkins

打开浏览器,输入:http://localhost:8080进行访问,初始密码可以通过docker-compose logs -f jenkins进行查看,或者直接cat jenkins/jenkins_home/secrets/initialAdminPassword进行查看。

选择插件进行安装,新手推荐选择推荐插件。

插件安装完会提示创建一个管理员账户,创建完账户并使用管理员账户登录进入主界面。

jenkins-dashboard

访问gitlab

先配置一条hosts文件127.0.0.1 git.hzde.com

然后打开浏览器,访问:http://git.hzde.com:9080,第一次访问的时候,需要设置root账户的密码,修改完成之后,使用该密码进行登录;然后创建项目,用户以及用户组等操作。

gitlab

访问sonarqube

打开浏览器,访问:http://localhost:9000

点击左侧的login进行登录,默认用户名和密码为admin,admin

sonarqube

然后可以进入Administration-Marketplace应用商店安装中文语言包,安装插件等操作。

部署项目

环境配置好之后,就可以部署项目了,将代码存入到gitlab上,在gitlab上面设置好触发Jenkins构建的webhook,之后每次提交代码就会触发构建了。

在jenkins上配置好SonarQube的server以及SonarQube Scanner。

Jenkinsfile中添加SonarQube检测项。