软件安装环境如下。
- 操作系统:CentOS 7
- Docker:19.03
- Jenkins:tls 长期维护版
- GitLab:13.3.8-ce.0
第一步:安装 Docker
安装 Docker 的步骤可以参考这篇文章:Centos7 安装 Docker,这里就不再赘述。Docker 环境准备好后,我们就可以利用 Docker 来部署 GitLab 和 Jenkins 了。
第二步:安装 GitLab
GitLab官方提供了GitLab的Docker镜像,因此我们只需要执行以下命令就可以快速启动一个GitLab服务
docker run -d \
--name gitlab \
--restart on-failure:3 \
-p 8080:80 -p 8081:443 -p 8082:22 \
-v /tmp/gitlab/config:/etc/gitlab \
-v /tmp/gitlab/logs:/var/log/gitlab \
-v /tmp/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:13.3.8-ce.0
Tips:
- 这个启动过程可能需要几分钟的时间。当服务启动后我们就可以通过 http://localhost:8080 访问到我们 的GitLab服务了(如果页面显示502,可参考:Docker gitlab 502解决办法)
- 由于上面我们把22端口映射到服务器的8082端口,22端口主要用于git ssh拉取/推送代码,使用如下命令关联远程代码:
git add remote origin ssh://git@ip:8082/xxx.git
第三步:安装 Jenkins
Jenkins 官方提供了Jenkins的Docker镜像,因此我们只需要执行以下命令就可以快速启动一个Jenkins服务
docker run -d \
--name=jenkins \
--restart on-failure:3 \
-p 8083:8080 \
-u root \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
-v /tmp/jenkins_home:/var/jenkins_home \
jenkins/jenkins:lts
将 docker.sock 和 docker 二进制挂载到了 Jenkins 容器中,是为了让 Jenkins 可以直接调用 docker 命令来构建应用镜像。
Jenkins 的默认密码会在容器启动后打印在容器的日志中,我们可以通过docker日志找到 Jenkins 的默认密码,日志也会提示你密码存储的文件位置,首次登陆时还会提示你初始密码文件位置 ^ - ^
docker logs -f jenkins
服务启动后我们就可以通过 http://localhost:8083 访问到我们的Jenkins服务了
- 初始化设置:输入初始密码->安装推荐插件->设置管理员账户信息 后进入主界面
- 安装插件:Manage Jenkins -> Manage Plugins -> 可选插件,安装Gitlab,Gitlab hook,Gitlab API以及 Docker
- 安装完成后重启Jenkins
至此,基于Docker+Gitlab+Jenkins 的CI/CD环境已经搭建完毕。
使用请参考:DI/CD实现持续集成与交付