.net core自动化部署:jenkins+docker+git
参考:
jenkins参考:https://www.cnblogs.com/huyong/p/14331097.html
jenkins参考: https://pkg.jenkins.io/redhat-stable/
docker参考:https://blog.csdn.net/xjjj064/article/details/106481955/
git参考:https://blog.csdn.net/sinat_36246371/article/details/52981343
1.安装java环境(安装jdk)
jenkins 是一个java web程序,所以必然需要jdk
yum install java
查看jdk版本
java -version
2.安装docker
(1)添加Yum源需要的依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
(2)添加Yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum clean all
yum makecache
(3)安装docker
sudo yum install docker-ce -y
(4)启动docker
systemctl start docker.service
(5)配置开机启动
systemctl enable docker.service
(6)查看版本
docker --version
其他拓展:
删除已安装的docker版本
# yum -y remove docker*
3.linux上安装git(客户端)及GitHub的配置
3.1.安装git
(1)安装
sudo yum install git git-core git-doc
(2)一路安装下去,安装完后输入下面命令(邮箱为你在GitHub注册的邮箱号)
ssh-keygen -t rsa -C "youremail@qq.com"
注意这里会让你输入一些东西,首先要输入保存key的文件名,这个随便写,这里的例子写了keyfilename。
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): keyfilename
然后会提示输入密码,当然还得确认密码。如果你不想设置密码,直接回车两次就OK了
(3)打开keyfilename.pub文件(公钥),将里面的所有字符全部复制出来:
vim keyfilename.pub
如果提示“-bash: vim: 未找到命令”,则先安装vim命令
(安装vim命令:# yum -y install vim*)
复制完后按Esc键,然后按 : ,输入 q! 退出
3.2. 与Github关联
打开Github站点https://github.com,并登陆,点击头像右边的小三角,选择settings,然后选择屏幕左边目录的“SSH and GPG keys”,如下图所示:
然后新建一个SSH key(单击new SSH key),出现新建表格:
Title中随便填,然后把刚才从keyfilename.pub文件中全部复制出来的字符粘贴到Key中,然后点击“Add SSH key”。
其他拓展:
查看git版本号:
# git --version
4.jenkins安装与使用
4.1.安装jenkins
1.
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
如报:颁发的证书已经过期,在上面的命令 后面加上 --no-check-certificate
# sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate
若报“-bash: wget: 未找到命令”,请先执行下面命令安装wget
# yum -y install wget
2.导入公钥
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
3.安装
yum install jenkins
4.启动jenkins服务
service jenkins start
开机自启动Jenkins
chkconfig jenkins on
5.查看默认安装路径
rpm -ql jenkins
6.修改端口
vim /etc/sysconfig/jenkins
输入 “:set number” 显示行号
linux下jenkins默认使用jenkins用户进行脚本和文件的操作,如果不修改,在部署项目时需要调整涉及到的文件和目录的操作权限。可以调整jenkins配置文件,将用户修改为root用户
修改第29行用户账号将JENKINS_USER="jenkins" 改成JENKINS_USER="root"
修改第56行端口号(将8080改成其他端口号)
按Esc,然后按 : , 输入 wq保存
7.修改目录的相应权限
chown -R root /var/log/jenkins
chgrp -R root /var/log/jenkins
chown -R root /var/lib/jenkins
chgrp -R root /var/lib/jenkins
chown -R root /var/cache/jenkins
chgrp -R root /var/cache/jenkins
8.如果设置了防火墙的,需开放一下设置的端口
查看已开放的端口
firewall-cmd --list-ports
开放端口(开放后需要要重启防火墙才生效)
firewall-cmd --zone=public --add-port=8081/tcp --permanent
重启防火墙
firewall-cmd --reload
9.重启Jenkins
service jenkins restart
10.查看ip
ip addr
11.完成jenkins安装
在浏览器输入:http://你的ip:8081/
(1)根据提示到指定目录拿到一串密码
vim /var/lib/jenkins/secrets/initialAdminPassword
(2)安装插件,选择推荐安装
(3)等待安装
若有部分插件安装失败的,点击重试按钮
(4)创建用户
4.2 .jenkins配置
1.创建一个.net core web项目
将右键Dockerfile文件,属性,设置为始终复制
编译文件,确认能正常访问页面,然后提交到git
2.创建一个jenkins项目
(1)构建一个自由风格的软件项目
(2)源代码管理
指定git分支
如果项目是非任何人都可以访问,那么还需要配置凭证,否则是不能链接到git仓库的,如下图所示:
使用账户密码方式:
填写你在GitHub上登录的账号和密码
选择刚刚添加的凭证
(3)构建触发器
这里的是设置轮询去git拉取代码,如果代码有更新就触发构建操作,H/2 * * * * 是指每2分钟轮询拉取一次;
(4)构建环境
Abort the build if it's stuck 是指如果构建过程中卡住了,就终止构建;这里是5是5分钟,5分钟超时构建失败;
(5)添加构建脚本Execute Shell
填写构建脚本
image_version=`date +%Y%m%d%H%M`; echo $image_version; # 停止之前的docker container CID=$(docker ps | grep "testjk" | awk '{print $1}') echo $CID if [ "$CID" != "" ];then docker stop $CID docker rm $CID fi #docker stop testjk; # 删除这个container #docker rm testjk; # build镜像并且打上tag docker build -t testjk:$image_version .; docker images; # 把刚刚build出来的镜像跑起来 docker run -p 8010:80 --name testjk -d testjk:$image_version; docker logs testjk;
(6)点保存回到testjk项目界面,点击立即构建Build Now
蓝色图标表示构建成功,红色图标标识构建失败
(7)如果设置了防火墙的,需开放一下设置的端口
开放端口(开放后需要要重启防火墙才生效)
firewall-cmd --zone=public --add-port=8010/tcp --permanent
重启防火墙
firewall-cmd --reload
查看已开放的端口
firewall-cmd --list-ports
9.访问网站:
可能出现的错误:
(1)如果报以下错误,尝试多构建(Build Now)几次
Failed connect to github.com:443; Connection refused
error: RPC failed; result=35, HTTP code = 0
(2)ERROR: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:
Get "http://%2Fvar%2Frun%2Fdocker.sock/_ping": dial unix /var/run/docker.sock: connect: permission denied
这个错误是因为 Jenkins 无法连接到 Docker 守护程序导致的。
解决方法如下:
①确认 Jenkins 用户是否有访问 Docker 守护程序的权限。
需要将 Jenkins 用户添加到 Docker 用户组中,使其有访问 Docker 守护程序的权限。可以通过以下命令将 Jenkins 用户添加到 Docker 用户组中:
sudo usermod -aG docker jenkins
②重启 Jenkins 服务。
在添加 Jenkins 用户到 Docker 用户组之后,需要重启 Jenkins 服务才能生效。可以通过以下命令重启 Jenkins 服务:
sudo systemctl restart jenkins
③验证权限是否已经生效。
重新执行 Jenkins 构建任务,检查是否还有权限错误。如果还有权限错误,请确认是否已经正确地将 Jenkins 用户添加到 Docker 用户组中,并重新启动 Jenkins 服务。
其他拓展:
卸载jenkins:
查询以前是否安装jenkins
rpm -qa |grep jenkins
卸载 jenkins
rpm -e jenkins
彻底删除jenkins残留文件
find / -iname jenkins | xargs -n 1000 rm -rf