基于docker+jenkins+gitea自动化部署.net core项目
南风 2022-01-25 02:10 347

0.我的系统配置

1.安装gitea

a).下载gitea:https://dl.gitea.io/gitea/

我这里使用的版本是:gitea-1.15.3-linux-amd64

mkdir -p /usr/local/gitea
cd /usr/local/gitea
wget -O gitea https://dl.gitea.io/gitea/1.15.3/gitea-1.15.3-linux-amd64

b).授权

chmod +x gitea

c).启动

nohup ./gitea web &

d).在宝塔面板中的开放3000端口

e).浏览器访问:http://ip:3000

 

f).gitea安装完成

2.使用docker安装jenkins

a).拉取jenkins镜像(笔者当前版本:Jenkins 2.313)

docker pull jenkins/jenkins

b).启动前准备(jenkins配置,启动时挂载到docker中jenkins目录)

mkdir -p /var/jenkins_home

c).特别注意

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json: dial unix /var/run/docker.sock: connect: permission denied

为了防止后面的通过shell执行docker构建.net core项目出现权限问题,所以在此先查看一下宿主的docker组id

cat /etc/group |grep docker

可以看到我的docker组id是993,然后我们在启动jenkins时加入 --group-add=993

d).启动jenkins

docker run -itd -p 8880:8080 -p 50000:50000 \
	--name jenkins \
	--privileged=true \
	-v /etc/localtime:/etc/localtime:ro \
	-v /var/run/docker.sock:/var/run/docker.sock \
	-v $(which docker):/bin/docker \
	-v /var/jenkins_home:/var/jenkins_home \
	--restart=always \
	--group-add=993 \
	jenkins/jenkins

e).在宝塔面板中的开放8880端口(操作如gitea开放端口一样设置)

f).浏览器访问:http://ip:8880

g).输入密码(根据界面的提示,通过docker命令进入容器)

docker exec -it jenkins /bin/bash
cat /var/jenkins_home/secrets/initialAdminPassword

执行完命令可以看到一串密码,把它复制粘贴到浏览器界面中

h).安装插件

i).新手入门(等待插件安装完成)

j).设置登录账户

k).实例配置

l).安装完成

m).安装generic-webhook-trigger插件

m.1)选择Manage Jenkins

m.2)选择Manage Plugins

m.3)查找插件并安装

m.4)下载完成,重启

m.5)重新登录即可

3.创建jenkins任务

a).创建任务

b).构建一个自由风格的软件项目

c).源码管理(配置项目git地址)

c.1)笔者通过vs2017创建了一个名为MyWebApi的webapi项目

c.2)选择WebApi

c.3)在gitea中创建一个仓库

c.4)上传代码

c.6)特别注意,通过vs2017创建的api项目,完成后Dockerfile文件是和MyWebApi.csproj同级目录的,我们需要把它移动到和MyWebApi.sln同级目录中

c.7)回到Jenkins界面中,源码管理

c.8)构建触发器

c.9)构建

docker container rm testwebapi -f || true
docker build -f Dockerfile -t testwebapi .
docker run --name testwebapi -dp 9527:80 testwebapi

c.10)在宝塔面板中添加webapi的端口放行,端口:9527

c.11)嗯嗯,jenkins配置完成

4.配置gitea的Web钩子

a).配置钩子

b).配置url地址

c).添加成功

5.尝试

a).修改一下mywebapi的代码,通过git push到仓库中

b).查看构建日志

c).览器中访问一下webapi

d).嗯嗯,可以正常访问到,整个部署配置完成

6.总结

其实过程并没有这么顺利,看着别的小伙伴的教程好像很简单,但自己动手时中间出现了多次的问题,但通过前辈的经验最终都解决了,其中比较坑的是jenkins中没有执行docker命令的权限。

这是我的在学习中记录下来的笔记,希望也可以帮到正在学习的小伙伴。

纸上得来终觉浅,绝知此事要躬行

本网站提供的文章除原创外均转载自其他网站,本网站只为更好的记录及学习技术经验
若网站内转载的文章侵犯了您的版权,请通过 意见反馈 告知本网站,我们会尽快删除相关信息
Copyright©2021-2021 kcBlog博客 版权所有 粤ICP备2021119076号 v1.0.0 栈谷统计