Jenkins+Docker+Gitlab+.Net Core自动化集成部署

概述

基于Jenkins + Docker的自动化部署记录,由于配置的步骤较多,本文重点介绍Jenkins安装部署和.Net Core项目的自动化部署的关键配置,其他基础组件安装请参考其他大佬的博文,文中也留下了部分相关的链接,也感谢各位大佬的无私分享

Jenkins版本:2.361.4 LTS
Linux版本:Centos7.9

Jenkins安装

卸载

配置Jenkins目录时,参考多种方法都未成功,所以反复卸载,卸载步骤这里也做个记录

# 停止服务
systemctl stop jenkins
# yum卸载
yum clean all 
yum -y remove jenkins
# 查找并删除Jenkins有关文件
find / -name *jenkins
find / -name jenkins*
rm -rf (文件路径)

初始化环境变量

我们会有将jenkins的数据文件,安装到一个指定的地方,而不是默认的地方~/.jenkns,配置/ect/profile,添加JENKINS_HOME的环境变量,即可安装到指定目录了。

#修改所有用户的环境变量
vim /etc/profile

#添加如下配置,设定jenkins的应用目录存储卷
JENKINS_HOME=/data/jenkins/
export JENKINS_HOME

#让环境生效
source /etc/profile 

在这里插入图片描述

在这里插入图片描述

下载安装

由于后续需要配合宿主机Docker使用,安装Jenkins部件不可采用Docker安装

下载:https://www.jenkins.io/download/在这里插入图片描述

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install -y fontconfig java-11-openjdk
yum install -y jenkins

启动服务

# 启动Jenkins
systemctl start jenkins
# 设置开机启动
systemctl enable jenkins
# 查看Jenkins状态
systemctl status jenkins
# 关闭Jenkins
systemctl stop jenkins
#开放xxxx端口
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --reload

如启动失败,出现Java版本冲突需采用可采用以下方法解决

  • 查看版本目录

这里用Java版本切换工具查看java-11-openjdk 安装位置
无需切换选项编号,避免影响其他应用!!!*
Ctrl+C退出即可

alternatives --config java 

# 显示内容如下
# [root@localhost bin]# alternatives --config java
# 共有 2 个提供“java”的程序。
#   选项    命令
# -----------------------------------------------
# *+ 1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.345.b01-1.el7_9.x86_64/jre/bin/java)
#    2           java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.17.0.8-2.el7_9.x86_64/bin/java)
# 按 Enter 保留当前选项[+],或者键入选项编号:

发现 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.17.0.8-2.el7_9.x86_64/bin/java)对应的目录

  • 编辑启动脚本
vim /etc/init.d/jenkins

#将找到的路径放如其中
candidates="
/usr/lib/jvm/java-11-openjdk-11.0.17.0.8-2.el7_9.x86_64/bin/java
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-11.0/bin/java
/usr/lib/jvm/jre-11.0/bin/java
/usr/lib/jvm/java-11-openjdk-amd64
/usr/bin/java
"
  • 重新加载服务
 systemctl daemon-reload

【补充】
测试机器执行重新加载服务仍无法使用systemctl start jenkins启动服务,仅执行 cd /etc/init.d/,然后采用./jenkins start才能启动,有类似情况的同学解决了,麻烦给我留个言

账号密码

  • 获取管理员密码
cat /var/lib/jenkins/secrets/initialAdminPassword

在这里插入图片描述

  • 安装推荐插件
    在这里插入图片描述
  • 设置账户密码
    截图略

环境配置

注意:先别启动Jenkins!!!
注意:先别启动Jenkins!!!
注意:先别启动Jenkins!!!

# Jenkins的默认安装路径是/var/lib/jenkins 现在由于这个根目录的磁盘太小,所以切换到/data 目录下
mkdir -p /data/jenkins
# 设置文件夹权限
chown -R jenkins:jenkins /data/jenkins
#编辑Jenkins配置
vim /etc/sysconfig/jenkins
#修改JENKINS_HOME路径
JENKINS_HOME="/var/lib/jenkins"
#为
JENKINS_HOME="/data/jenkins"

工作空间配置

#关闭jenkins
systemctl stop jenkins
# 创建新目录
mkdir -p /data/jenkins/workspace
# 修改配置
vim /var/lib/jenkins/config.xml

<workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULL_NAME}</workspaceDir>
# 改为
<workspaceDir>/data/jenkins/workspace/${ITEM_FULL_NAME}</workspaceDir>

#删除既有Workspace
rm -rf /var/lib/jenkins/workspace

#启动jenkins
systemctl start jenkins

最后一步,点击页面重新加载配置
在这里插入图片描述

插件源修改

启动后,从网页修改!!!
启动后,从网页修改!!!
启动后,从网页修改!!!

然后进入 Manage Jenkins -> Manage Plugin -> Advanced 最下面有 Update Site,修改为源url,然后提交

#清华大学源,推荐稳定
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

Docker用户权限设置

Docker安装网络上教程很多,建议参考CentOS8 安装 Docker
需要开启远程端口和用户权限,否则Jendkins无法在工作空间中运行Docker命令

# 把jenkins用户加入到docker组中 
sudo gpasswd -a jenkins docker 
newgrp docker
# 修改服务器的docker配置,让其可以远程访问
vi  /lib/systemd/system/docker.service
# 其中ExecStart= xxx 的  后面  添加配置
-H tcp://0.0.0.0:2375 -H unix:/run/containerd/containerd.sock

# 添加端口
firewall-cmd --zone=public --add-port=2375/tcp --permanent 
firewall-cmd --reload
firewall-cmd --zone=public --query-port=2375/tcp
# 重启Docker
systemctl daemon-reload
sudo systemctl restart docker

Gitlab Webhook设置

这一步 网上已有不少大佬做了分享,笔者部署时参考的是minger_lcm的博文:
Jenkins配置Gitlab自动触发构建

基于dockerfile构建脚本

Jenkins和Docker 状态同一台服务器上,基于docker脚本构建即可,适用测试环境
配合着宇宙最强IDE Visual Studio 可以轻松生成dockerfile文件,就不再赘述
构建过程中使用脚本构建粘贴以下命令即可(镜像名称和容器名称可结合自身情况调整)

#定位到服务端dockerfile所在目录(相对工作空间)可根据自己的情况进行路径定位
cd src/server/
#创建时间戳变量,解决多次构建镜像名称冲突问题
curTime=$(date "+%Y%m%d%H%M%S") 
# 构建API镜像
docker build --force-rm -t xxx-api-t:$curTime .
# 删除API容器
docker rm -f xxx-api-t
# 运行API容器,注意:容器名称没有加时间戳
docker run -p 8061:80 -v /data/xxx/Logs:/app/wwwroot/Logs --restart=always --name xxx-api-t	-d xxx-api-t:$curTime
# 删除多余的中间镜像(悬虚镜像,即没有name也没有tag的镜像)
docker image prune -f

插件安装配置

Publish over SSH配置

用于控制远程服务器自动构建,原理也是一样通过shell脚本构建,适用生产环境

生成电脑

IP 172.xx.xx.xx

生成公密钥

Jenkins服务器需访问多台服务器,需将公钥(id_rsa.pub)粘贴到authorized_keys文件中
再将authorized_keys文件拷贝到需要远程连接服务器的/root/.ssh/文件夹下(也可以放在其他地方)

#如果没有/root/.ssh/这个目录,须新建目录
# mkdir -p /root/.ssh/
[root@localhost ~]# cd /root/.ssh/  
[root@localhost .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):  ##这里设置密码为adnin123(最好复杂点)
Enter same passphrase again: 	##再次输入密码为adnin123(最好复杂点)
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:IE3exKhrLjjVPOjSnU47EzuOEeEftsNbxjYdB3pKico root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|      .o.        |
|     +.o.        |
|  . ..+ o        |
| . ..o + .       |
|  o++.+ S .      |
| .o*B= + o       |
| =E+*=B .        |
|+ ++OB .         |
| o.+=+           |
+----[SHA256]-----+
[root@localhost .ssh]# ls
id_rsa  id_rsa.pub  known_hosts
[root@localhost .ssh]# touch authorized_keys
[root@localhost .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub  known_hosts
[root@localhost .ssh]#

在这里插入图片描述

Jenkins SSH配置

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值