maven安装
软件下载
# 离线安装,直接下载对应的版本即可
https://maven.apache.org/download.cgi
基础环境配置
注意:此次jenkins、gitlab相关软件都安装在一台机器(192.168.13.247)上,可根据实际情况调整
环境变量
# 解压软件,路径可根据实际情况调整
tar -xvf /home/apache-maven-3.8.8-bin.tar.gz -C /home/
# 配置环境变量
vim /etc/profile
export MAVEN_HOME=/home/apache-maven-3.8.8
export PATH=$MAVEN_HOME/bin:$PATH
:wq
source /etc/profile
修改仓库地址及镜像地址
# 创建仓库地址
mkdir $MAVEN_HOME/localRepository
vim $MAVEN_HOME/conf/settings.xml
# 更改仓库地址
<localRepository>$MAVEN_HOME/localRepository</localRepository>
# 更改镜像地址
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
构建本地docker仓库
# 创建本地仓库存储目录
mkdir -p /home/registry
# 拉取本地仓库镜像
docker pull registry:2.8.2
# 启动服务
docker run -d -v /home/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:2.8.2
# 添加本地仓库信息,允许http协议访问,文件没有就新建
vim /etc/docker/daemon.json
{
"insecure-registries": ["192.168.13.247:5000"],
"log-driver": "json-file",
"log-opts": {
"max-size": "30m",
"max-file": "2"
}
}
:wq
systemctl daemon-reload
service docker restart
安装jenkins
使用docker安装(不推荐)
# 创建jenkin_home目录
mkdir /home/jenkins /home/jenkins/jenkins-data /home/jenkins/jenkins-docker-certs
docker container stop jenkins
docker container rm jenkins
docker run -d -p 18080:8080 --name=jenkins --restart=on-failure \
-v /home/jenkins/jenkins-data:/var/jenkins_home \
-v /home/apache-maven-3.8.8:/home/apache-maven-3.8.8 \
-v /home/jenkins/jenkins-docker-certs:/certs/client \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
jenkins/jenkins:2.346.1-alpine-jdk8
war包直接启动(推荐)
下载地址
# 根据需要选择对应的版本即可
https://pkg.jenkins.io/war/
# 上传挖war包至指定的目录,如:/home/jenkins
启动服务
新建启动脚本
# 配置jenkins_home
vim /etc/profile
export JENKINS_HOME=/data/jenkins_home
:wq
source profile
touch /home/jenkins/start-jenkins.sh
vim /home/jenkins/start-jenkins.sh
# --后的参数可参考:https://www.jenkins.io/doc/book/installing/initial-settings/
nohup /home/jdk1.8.0_361/bin/java -jar /home/jenkins/jenkins.war -DJENKINS_HOME=/home/jenkins/jenkins-data --httpPort=18080 > /home/jenkins/jenkins.log 2>&1 &
chmod +x /home/jenkins/start-jenkins.sh
新建服务脚本
cd /etc/systemd/system
vim jenkins.service
[Unit]
Description=jenkins service
After=network.target
[Service]
Type=forking
ExecStart=/home/jenkins/start-jenkins.sh
# 下面是官方推荐的加上去的东西,加上就好了
# Other directives omitted
# (file size)
LimitFSIZE=infinity
# (cpu time)
LimitCPU=infinity
# (virtual memory size)
LimitAS=infinity
# (locked-in-memory size)
LimitMEMLOCK=infinity
# (open files)
LimitNOFILE=64000
# (processes/threads)
LimitNPROC=64000
[Install]
WantedBy=multi-user.target
:wq
# 设置开机自启
systemctl enable jenkins
进入登录界面
# 数据本机的ip地址及启动时指定的端口号
http://192.168.13.247:8080
查看密匙
初始化密匙默认放置在/var/jenkins_home/secrets/initialAdminPassword文件中
# 方式一
# 交互模式进入jenkins容器
docker exec -it jenkins bash
# 查看密匙
cat /var/jenkins_home/secrets/initialAdminPassword
# 方式二:直接查看jenkins日志,第一次服务启动后控制台会输出密匙
docker logs jenkins
安装maven插件
安装插件
# 在插件市场直接搜索 Maven Integration plugin 安装即可
跳转地址:http://192.168.13.247:18080/pluginManager/available
配置Maven
Maven配置
# 跳转地址:http://192.168.13.247:18080/configureTools/
Maven配置:
默认 settings 提供:
提供文件系统中的 settings 文件
文件路径:
/home/apache-maven-3.8.8/conf/settings.xml
默认全局 settings:
提供文件系统中的 settings 文件
文件路径:
/home/apache-maven-3.8.8/conf/settings.xml
maven变量配置
# 跳转地址:http://192.168.13.247:18080/configureTools/
maven name:
apache-maven-3.8.8
MAVEN_HOME:
/home/apache-maven-3.8.8
配置JDK
# 跳转地址:http://192.168.13.247:18080/configureTools/
docker exec -it jenkins echo $JAVA_HOME
# 默认值
/home/jdk1.8.0_361
JDK别名:
jdk1.8.0_361
JAVA_HOME:
/home/jdk1.8.0_361
设置时区
# 跳转地址:http://192.168.13.247:18080/user/jenkins/configure
时区选择:Asia/Shanghai
安装gitlab
设置环境变量
vim /etc/profile
export GITLAB_HOME=/home/gitlab
:wq
source /etc/profile
拉取镜像
docker pull gitlab/gitlab-ee:latest
启动服务
docker run --detach \
--hostname 192.168.13.247 \
--publish 1443:1443 --publish 180:180 --publish 122:122 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ee:latest
修改默认配置
vim $GITLAB_HOME/config/gitlab.rb
# 页面访问地址:此处填写publish对应的第一个端口即可
external_url 'http://192.168.13.247:1443'
:wq
# 重启服务
docker restart gitlab
访问web界面
# 查看root默认密码
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
hiY7YDWFB7vLiCEMg5W/Yl1IWYr/mCT8YxDNXeIrzBg=
# 直接访问地址即可,默认账户root
http://192.168.13.247:1443
新增代码拉取用户
# 管理员用户进入任意项目后点击扳手图标,找到:Overview => Users => New User新增即可
跳转地址:http://192.168.13.247:1443/admin/users/new
# 新增用户后点击编辑按钮重置新用户密码即可
新建一个测试项目
# 新建一个demo项目,地址:http://192.168.13.247:1443/jenkins/demo.git
# 初始化代码并上传至git仓库
配置jenkins流水线
安装插件
# 跳转地址:http://192.168.13.247:18080/pluginManager/available
# 安装 git、gitlab、ssh、docker-build-step(可选) 插件
docker-build-stop配置(可选)
# 参考:https://plugins.jenkins.io/docker-build-step/
跳转地址:http://192.168.13.247:18080/configure
Docker Builder
Docker URL: unix:///var/run/docker.sock
配置全局的授权用户
# 新建一个gitlab代码拉取用户
# 跳转地址:http://192.168.13.247:18080/credentials/store/system/domain/_/newCredentials
# 类型选择:Username with password
# 范围选择:全局 (Jenkins, nodes, items, all child items, etc)
# 输入用户名和密码保存即可
# 新建一个可用于登录其他服务器的ssh用户(模拟服务部署用到)
后端打包配置
新建maven项目
源码管理
# 选择git,
# Repository URL 填写gitlab对应的仓库地址
# Credentials 选择上述步骤中配置的gitlab拉取代码用户凭证
# 指定分支 根据实际情况选择即可
构建触发器
# Build when a change is pushed to GitLab. GitLab webhook URL: http://192.168.13.247:18080/project/demo (安装了gitlab插件后显示)
# 点击高级选项,生成Secret token,后续配置webhook时用到
构建环境
Root POM:pom.xml
# 此处配置打包命令,可根据实际情况跳转
Goals and options: clean package -Dmaven.test.skip=true
build
设置全局环境变量
general -> 参数化构建过程 => 新增字符串参数
变量名 | 变量值 | 备注 |
---|---|---|
p_env | test | 运行环境标识:dev-开发环境、test-测试环境、prod-生产环境 |
p_project_name | demo | 项目名称 |
p_docker_repository | 192.168.13.247:5000 | docker私服地址 |
打包推送镜像
shell方式(使用简单)
# 选择:Run only if build succeeds:
# 此处为打包成功后的操作步骤:构建docker镜像并将镜像推送至docker私库(可根据实际情况调整)
REPOSITORY=$p_docker_repository/$p_project_name:$p_env
# 构建镜像时先删除原有镜像
docker rmi $p_docker_repository/$p_project_name:$p_env
# 构建新镜像
docker build -t $REPOSITORY .
# 上传镜像
docker push $REPOSITORY
docker-build-step插件(过程略复杂)
按照shell中的步骤分别选择 Execute Docker command中对应的分步骤配置对应的脚本即可。
拉取镜像启动服务
根据目标服务器,编写对应的脚本即可
docker方式
目标机器上需要安装docker环境
# 选择 Execute shell script on remote host using ssh
docker container stop $p_docker_repository/$p_project_name:$p_env;
docker container rm $p_docker_repository/$p_project_name:$p_env;
docker rmi $p_docker_repository/$p_project_name:$p_env;
docker pull $p_docker_repository/$p_project_name:$p_env;
docker run -d -p 18888:8080 --name $p_project_name $p_docker_repository/$p_project_name:$p_env
k8s方式
目标机器上需要安装k8s相关环境
# 切换至k8s启动脚本目录,如:/home/k8s/backend
cd /home/k8s/backend
kubectl delete -f demo.yaml
kubectl apply -f demo.yaml
配置webhook
# 在demo项目中配置webhook
项目管理 => settings => Webhooks
# 填写jenkin流水线中构建触发器:GitLab webhook URL
URL:
# 填写jenkin流水线中构建触发器:GitLab webhook 高级选中生成的Secret token
Secret token:
# 根据实际情况选择(一般选择Push events、Merge request events)
Trigger:
前端打包配置
安装nodejs
在线安装
# 直接在jenkins中选择对应版本安装即可
跳转链接:http://192.168.13.247:18080/configureTools/
离线安装
# 上传文件至指定目录,如:/home/
tar -xvf /home/node-v18.17.1-linux-x64.tar.xz -C /home/
# 配置环境变量
export NODEJS_HOME=/home/node-v18.17.1-linux-x64
export PATH=$NODEJS_HOME/bin:$PATH
source /etc/profile
# 查看版本信息
node -v
npm -v
NodeJS全局配置
注:在线安装node时不需要此步骤
# jenkins中配置NodeJS全局配置
NodeJS 安装
系统下NodeJS 安装列表
NodeJS
别名
node-v18.17.1
安装目录
/home/node-v18.17.1-linux-x64
配置代码提交、服务更新等消息通知
参考:配置钉钉消息通知
其他问题
webhook填写后无法保存
# 此次测试gitlab和jenkins安装在一台服务器,保存提示:Url is blocked: Requests to the local network are not allowed
# 解决办法:
登录管理员账户,进入项目配置,允许本地网络配置webhook
项目管理 => settings => Network => Outbound requests => Allow requests to the local network from web hooks and services
# 跳转路径:
http://192.168.13.247:1443/admin/application_settings/network