linux搭建jenkins实现自动化发布

2 篇文章 0 订阅
1 篇文章 0 订阅

本篇讲述linux(centos)搭建jenkins并实现自动拉取仓库中的项目以及自动完成项目的发布操作。
在linux环境下安装jenkins的官网地址

安装jenkins的依赖java

参考我之前的篇目,注意jenkins要求java版本为11或17

安装jenkins

//通过wget写入jenkins仓储地址
wget -O /etc/yum.repos.d/jenkins.repo \
    https://pkg.jenkins.io/redhat-stable/jenkins.repo

//导入jenkins.io.key
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

//yum update
yum upgrade

//安装java依赖这步为可选,如果你之前没安装过
yum install java-11-openjdk

//yum安装jenkins
yum install jenkins

//重载守护进程
systemctl daemon-reload

启动jenkins

//设置开机启动
systemctl enable jenkins

//启动jenkins (默认是8080端口 如果端口被占用需要修改端口)
systemctl start jenkins

//查看jenkins状态
systemctl status jenkins

如果你未按照jenkins官方的安装步骤,之前已经安装了java,启动可能出现问题。
在这里插入图片描述
解决方案:

//配置jenkins里的jdk路径
vi /etc/init.d/jenkins

//查看java位置
which java

修改jenkins的端口


//修改jenkins.service 找到Environment="JENKINS_PORT=8080"项修改为你需要的端口号
vi /usr/lib/systemd/system/jenkins.service

//重载守护进程
systemctl daemon-reload

//再启动nginx

在这里插入图片描述
如果修改为你自己的端口之后 注意开启防火墙

直接通过war包方式启动jenkins

//该方式启动jenkins 如果ctrl+c结束之后 程序自动结束
java -jar /usr/share/java/jenkins.war --httpPort=8787  //--httpPort可指定启动端口

通过cat命令查看jenkins密码

cat /var/lib/jenkins/secrets/initialAdminPassword

在这里插入图片描述
在这里插入图片描述

到此页面选择安装推荐的插件即可

通过jenkins自动化拉取仓库单层netcore项目仅包含api一层发布到docker中

这是我的一个netcore项目 里面已经包含Dockerfile,注意Dockerfile为开始项目时自动生成无需修改即可

这里首先要确保宿主机或者docker里面安装了net相应版本的运行时环境,具体如何安装这里暂不叙述,以后补充

新建Item

点击jenkins控制面板里面的第一项新建Item
在这里插入图片描述
输入一个任务名称 选择freestyle project(自由项目)
在这里插入图片描述
进入配置界面
在这里插入图片描述
进入源码管理,设置一个源码拉取的地址,也就是你项目所在地址
在这里插入图片描述
添加git仓库访问的用户名密码
在这里插入图片描述

jenkins配置gitee仓储url 出现403 Crumb异常 需要勾选全局配置里面的跨域访问
在这里插入图片描述
勾选上跨站请求伪造保护
在这里插入图片描述

执行docker脚本
在这里插入图片描述
下面是Build Steps执行的shell内容还可以根据自己的要求进行shell脚本优化,这里只是一个小小的demo

#!/bin/bash
# 获取短版本号
GITHASH=`git rev-parse --short HEAD`
#拉取运行时(如果宿主机已经安装了运行时这里可以不拉取) 来自Dockerfile的第一行 FROM 
echo --------------pull net runtime...----------
docker pull mcr.microsoft.com/dotnet/aspnet:7.0

echo ---------------Building Docker Image...--------
#构建镜像 到
docker build -t odsdemo:$GITHASH .
#把构建的镜像 归于最近的镜像
docker tag odsdemo:$GITHASH odsdemo:latest
echo ---------------Launching Container...----------
#强制删除容器 注意这里是docker rm不是docker rmi(这是删除镜像)
docker rm -f odsdemo1
#根据最近的镜像构建启动容器
docker run -d -p 5001:80 --name odsdemo1 odsdemo:latest

到这一步就可以应用开始构建项目了,到这里会出现异常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。
在这里插入图片描述
解决方案:
1)解决不能操作这个/var/run/docker.sock的问题

//查看该文件
ls -al  /var/run/docker.sock//结果srw-rw----. 1 root docker 0 Feb 14 00:49 /var/run/docker.sock 只有root可以操作

//赋予777权限
sudo chmod 777 /var/run/docker.sock

再次尝试构建项目,发现成功了。

在这里插入图片描述

//查看运行的容器
docker ps

在这里插入图片描述

访问buildSteps配置的5001端口看看,发现访问不了,注意防火墙添加端口。


//防火墙开启端口
firewall-cmd --zone=public --add-port=5001/tcp --permanent
//重载防火墙
firewall-cmd --reload

访问成功
在这里插入图片描述

2)解决命令没有权限问题
docker默认安装是以root用户安装的,所以执行只能以root用户执行。如果使用普通账户,比如在search镜像时就会出现此类错误。
docker 守护进程启动的时候,会默认赋予名字为docker的用户组读写Unix socket的权限,因此只要创建docker用户组,
并将当前用户加入到docker用户组中,那么当前用户就有权限访问Unix socket了,进而也就可以执行docker相关命令。
将jenkins所用的用户添加到docker用户组中,操作需要使用root权限。

//查看当前docker用户组
cat /etc/group | grep docker

//将当前用户添加到docker组
usermod -a -G docker jenkins //docker后面跟jenkins的用户名 我这里由于是创建了自己的用户需要用自己的用户名在后面 例如wy

//更新用户组
newgrp docker

设置构建超时时间(可选)
在这里插入图片描述

文件从jenkins上拉取之后的存储空间位置所在

在这里插入图片描述
在这里插入图片描述
这就是Dockerfile执行时,【.】这个点所处的目录就是项目工作空间Dockerfile所在目录,然后进行拷贝 构建镜像 等操作。

根据版本提交自动通知jenkins构建项目

webhook
由于需要一个能被gitee访问的服务器,之前我采用的本地服务器,如果需要根据git提交之后,自动通知jenkins构建项目这里不现实,那么我们可以采用定时构建等方式来模拟。具体方法这里暂时不介绍,后面再说。一般是需要把jenkins这边生成的webhook设置到对应项目的webhook里面也就是实现一个项目提交后推送到jenkins的一个回调地址

在这里插入图片描述

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值