一、Jenkins与GitLab基础信息
- Jenkins :原名Hudson,2011年更名,是开源的持续集成软件工具,官方网站为https://www.jenkins.io/。
- GitLab :官方网站为https://about.gitlab.com/。
二、GitLab安装与使用
(一)安装最小配置
- 内存至少4G;
- 若通过Docker安装,系统内核至少3.10以上(可通过
uname -r
查看)。
(二)SSH下安装步骤
-
安装依赖 :
bashsudo yum install -y curl policycoreutils-python openssh-server perl sudo systemctl enable sshd sudo systemctl start sshd
-
配置镜像 :
bashcurl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash
-
开始安装 :
bashsudo EXTERNAL_URL="http://192.168.44.103" yum install -y gitlab-jh
-
初始登录 :
- 用户名:root;
- 密码:随机生成,存储在
/etc/gitlab/initial_root_password
(24小时后自动删除,建议登录后立即修改)。
(三)常用命令
gitlab-ctl start
:启动所有组件;gitlab-ctl stop
:停止所有组件;gitlab-ctl restart
:重启所有组件;gitlab-ctl status
:查看服务状态;gitlab-ctl reconfigure
:启动服务;vi /etc/gitlab/gitlab.rb
:修改配置文件;gitlab-ctl tail
:查看日志。
(四)Docker下安装步骤
-
安装Docker :
- 更新yum源:
yum update
; - 安装依赖:
yum install -y yum-utils device-mapper-persistent-data lvm2
; - 添加镜像(阿里镜像为例):
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
; - 查看可用版本:
yum list docker-ce --showduplicates | sort -r
; - 安装指定版本:
yum install docker
; - 配置开机启动:
systemctl start docker
、systemctl enable docker
; - 验证:
docker version
。
- 更新yum源:
-
使用容器安装GitLab :
bashdocker run --detach \ --hostname 192.168.44.103 \ --publish 443:443 --publish 80:80 \ --name gitlab \ --restart always \ --volume $GITLAB_HOME/config:/etc/gitlab:Z \ --volume $GITLAB_HOME/logs:/var/log/gitlab:Z \ --volume $GITLAB_HOME/data:/var/opt/gitlab:Z \ --shm-size 256m \ registry.gitlab.cn/omnibus/gitlab-jh:latest
-
容器操作 :
- 启动:
docker start gitlab
; - 查看容器:
docker ps -a
; - 进入容器:
docker exec -it gitlab /bin/bash
。
- 启动:
-
访问与问题排查 :
- 访问地址:
http://192.168.44.101
; - 首次502错误排查:虚拟机内存至少4G;等待片刻刷新。
- 访问地址:
三、Jenkins安装与配置
(一)安装需求
- 机器要求:256MB内存(建议>512MB),10GB硬盘空间;
- 需安装软件:Java 8(JRE或JDK)、Docker。
(二)JDK安装
- 检索可用包:
yum search java|grep jdk
; - 安装:
yum install java-1.8.0-openjdk
。
(三)Jenkins启动与初始化
- 首次启动:war包在
/root/.jenkins
生成配置文件; - 访问:服务器8080端口;
- 初始密码:存储在
/root/.jenkins/secrets/initialAdminPassword
(使用后自动删除)。
四、Maven相关配置
(一)安装
官网https://maven.apache.org/下载后,复制到Jenkins所在服务器解压缩。
(二)阿里云镜像配置
修改/usr/local/maven/conf/settings.xml
,在<mirrors>
标签中添加:
xml
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
<mirror>
<id>nexus-public-snapshots</id>
<mirrorOf>public-snapshots</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/repositories/snapshots/</url>
</mirror>
五、Jenkins + Git + Maven 自动化部署配置
(一)Git配置
- 仓库URL:
http://92.168.44.103/rootjava-projectgit
; - 分支:指定分支(如
*/main
)。
(二)Maven配置
- 新增Maven:名称
maven3
,MAVEN_HOME设为/usr/local/maven/
。
(三)Pom.xml配置
- Root POM:
demo-1/pom.xml
。
六、Java Home配置(可选)
-
配置路径:
bashexport JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64 export JRE_HOME=$JAVA_HOME/jre PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin export JAVA_HOME JRE_HOME CLASS_PATH PATH
-
立即生效:
source /etc/profile
; -
报错解决:若找不到JDK,执行
yum install -y java-devel
(默认可能只安装JRE)。
七、Publish over SSH配置
- 安装插件:在Configure System菜单中配置。
- 添加目标服务器 :
- 填写名称、主机名(如
192.168.44.104
)、端口(默认22)等;
- 填写名称、主机名(如
- 文件传输与命令执行 :
- 源文件:
**/demo*.jar
; - 移除前缀:
demo-1/target
; - 远程目录:
/xxoo
; - 执行命令(示例):
nohup java -jar /root/xxoo/demo*.jar >mylog.log 2>&1 &
(避免窗口卡住)。
- 源文件:
八、构建方式
1.** 快照依赖构建 :当依赖的快照被构建时执行。
2. 触发远程构建 :通过REST API调用执行(需配置身份验证令牌)。
3. job依赖构建 :依赖的job被构建时执行。
4. 定时构建 **:基于Jenkins cron表达式(与标准cron不同):
- 格式:
分 时 日 月 周
(取值范围分别为0-59、0-23、1-31、1-12、0-7,0和7为周日); - 特殊符号:
/
表示间隔(如*/10 * * * *
每10分钟);H
为哈希值,避免任务同时执行。
5.** Git提交触发 :通过GitLab WebHook回调触发。
6. 定期检查代码变更 **:定时检查代码变更后构建。
九、自动化部署到Docker容器
(一)外挂目录
bash
docker run -d -p 8080:8080 --name demo-out -v /root/jarfile/demo-1-0.0.1-SNAPSHOT.jar:/app.jar openjdk:11 java -jar app.jar
(二)打包到容器内
1.** Dockerfile示例 **:
dockerfile
FROM openjdk:11
EXPOSE 8080
WORKDIR /root
ADD jarfile/demo*.jar /root/app.jar
ENTRYPOINT ["java","-jar","/root/app.jar"]
2.** 打包镜像 **:docker build -t demo .
。
(三)配置国内镜像
-
修改
/etc/docker/daemon.json
:json{ "registry-mirrors": [ "https://ustc-edu-cn.mirror.aliyuncs.com", "http://hub-mirror.c.163.com", "https://registry.aliyuncs.com" ] }
-
重启服务:
systemctl daemon-reload
、systemctl restart docker
。
十、Jenkins高级功能
(一)集群/并发构建
多机器并发执行构建,提升效率。
(二)流水线(Pipeline)
1.** 必备组成部分 :pipeline
(整条流水线)、agent
(指定执行器)、stages
(所有阶段)、stage
(某一阶段)、steps
(阶段内步骤)。
2. 基础框架示例 **:
groovy
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
echo '拉取代码完成'
}
}
stage('执行构建') {
steps {
echo '执行构建完成'
}
}
}
post {
always {
echo "完成"
}
failure {
echo "失败"
}
}
}
3.** 关键配置 **:
agent
:指定执行节点(如label "jenkins-02"
);post
:流水线完成后执行(如always
、success
、failure
等状态)。
4.** 类型对比 **:- 声明式:可读性高,支持语法检查,适合常规流程;
- 脚本式:更灵活,可构建复杂工作流,对编程要求高。
(三)辅助工具
-** 阶段视图(Stage View):可视化阶段流程;
- Blue Ocean **:全新UI,支持重复执行某阶段,需在插件中心安装。
十一、测试报告邮件通知
使用163邮箱时,密码需填认证码(非登录密码)。