Jenkins+Docker+.Net Core自动化集成部署
概述Jenkins安装卸载初始化环境变量下载安装启动服务账号密码环境配置工作空间配置插件源修改
Docker用户权限设置Gitlab Webhook设置基于dockerfile构建脚本插件安装配置Publish over SSH配置生成电脑生成公密钥Jenkins SSH配置
概述
基于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
# 改为
#删除既有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配置
相关文章
发表评论