Jenkins实现CI/DI

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_envtest运行环境标识:dev-开发环境、test-测试环境、prod-生产环境
p_project_namedemo项目名称
p_docker_repository192.168.13.247:5000docker私服地址
打包推送镜像
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
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇