本节我们将一起来搭建持续集成(CI)的基本环境,涉及到代码仓库gitlab的搭建和jenkins的安装与设置。因为之前我们为centos搭建好了docker环境(包括docker-compose工具的安装,参考docker安装与设置 - 掘金 (juejin.cn)),在此基础上搭建CI环境将变得非常简单。开干!
搭建gitlab
执行步骤:
-
查看GitLab镜像
docker search gitlab
-
拉取GitLab镜像
docker pull gitlab/gitlab-ce
这里我们拉取的是最新版的,实则为
14.6.1
版。 -
准备docker-compose.yml文件
路径位于
/usr/local/docker/devops/gitlab
version: '3.1' services: gitlab: image: 'gitlab/gitlab-ce:latest' container_name: gitlab restart: always environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://192.168.0.114:8929' gitlab_rails['gitlab_shell_ssh_port'] = 2224 ports: - '8929:8929' - '2224:22' volumes: - './config:/etc/gitlab' - './logs:/var/log/gitlab' - './data:/var/opt/gitlab'
-
启动容器(需要稍等一小会……)
docker-compose up -d
-
访问地址:http://192.168.0.114:8929
-
查看root用户初始密码
docker exec -it gitlab cat /etc/gitlab/initial_root_password
登陆进来后,修改root密码,在右上角点Preferences -> User Settings | Password
输入之前的原密码,新密码改为12345678,重新登陆root/12345678
搭建Jenkins
安装
在机器dev-1上安装,步骤如下:
-
先拉取image:
docker pull jenkins/jenkins:2.414.1-lts
-
在路径
/usr/local/docker/jenkins
下新建docker-compose.yml新建一个data目录:
chmod -R a+w data/
docker-compose.yml
version: "3.1" services: jenkins: image: jenkins/jenkins:2.414.1-lts container_name: jenkins restart: always ports: - 8080:8080 - 50000:50000 volumes: - ./data/:/var/jenkins_home/
-
启动
docker-compose up -d
-
访问页面
http://192.168.0.113:8080
输入查看的密码:
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
先停掉容器,重新启动Jenkins容器后,由于Jenkins需要下载大量内容,但是由于默认下载地址下载速度较慢,需要重新设置下载地址为国内镜像站
# 修改数据卷中的hudson.model.UpdateCenter.xml文件 default https://updates.jenkins.io/update-center.json # 将下载地址替换为http://mirror.esuni.jp/jenkins/updates/update-center.json default http://mirror.esuni.jp/jenkins/updates/update-center.json # 清华大学的插件源也可以https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
-
进入页面,安装推荐的插件
-
设置第一个管理员账号
都是root,邮箱root@root.root
-
使用默认的实例
http://192.168.0.113:8080/
-
开始使用
进入jenkins页面
-
下载必要的插件
下载Git Parameter、Publish over ssh
安装完成后重启Jenkins即可。
基本配置
设置全局环境变量
我们将在容器内添加java和gradle的环境变量
docker-compose.yml
version: "3.1"
services:
jenkins:
image: jenkins/jenkins:2.414.1-lts
container_name: jenkins
restart: always
environment:
JAVA_HOME: /var/jenkins_home/jdk8
GRADLE_USER_HOME: /var/jenkins_home/.gradle
ports:
- 8080:8080
- 50000:50000
volumes:
- ./data/:/var/jenkins_home/
把jdk-8u291-linux-x64.tar.gz丢到data下,路径为:/usr/local/docker/jenkins/data/jdk-8u291-linux-x64.tar.gz,解压并改名:
tar -zxvf jdk-8u291-linux-x64.tar.gz
# 改名
mv jdk1.8.0_291/ jdk8/
把gradle7.tar.gz丢到data下,解压并改名为gradle7。
再创建一个.gradle
目录
mkdir .gradle
chmod -R a+w .gradle/
把两个全局配置文件丢到.gradle
目录下:
gradle.properties
# 设置gradle工作时使用的jvm最大堆内存
org.gradle.jvmargs=-Xmx1024M
# 可选配置:all,none,summary,用来设置gradle构建时控制台输出警告信息的模式,all为打印所有警告信息,summary为只打印概要信息,none为不输出警告信息,因为警告并不影响gradle构建成功,因此这里我们把它屏蔽掉。
org.gradle.warning.mode=none
init.gradle
allprojects {
repositories {
mavenLocal()
maven{ url 'https://maven.aliyun.com/repository/public'}
maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
maven{ url 'https://maven.aliyun.com/repository/spring'}
maven{ url 'https://maven.aliyun.com/repository/spring-plugin'}
}
}
部署的结构如下图:
重启下Jenkins:
docker-compose restart
配置JDK
进入系统管理、全局配置
配置gradle
配置连接服务器
系统管理 -> 系统配置
拉到最下面,新增服务器:
高级中设置密码:
最后点测试配置,success则ok
最后点Save按钮。
找回管理员密码
Jenkins在首次安装时会分配一个密码串,当初始化完成了,密码文件会被删除,如果没有及时修改密码,就找不回来了,下面说下解决办法。
备份配置文件,删除默认的认证设置:
重启jenkins服务
docker-compose restart
再次登录Jenkins页面的时候,发现已经不需要登录了,可以直接进入页面,并且是管理员权限。
先做如下设置:
再进入root用户的设置中,
设计密码为好记的12345678
,保存。
最后恢复config.xml
文件内容,并重启Jenkins服务,重新用root/12345678登录即可。