GitLab、jenkins

2024-06-17 09:20
文章标签 jenkins gitlab

本文主要是介绍GitLab、jenkins,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Gitlab服务器:192.168.10.20
jenkins服务器:192.168.10.30
web应用服务器:192.168.10.100
通过容器部署gitlab:
安装容器管理软件podman
d65cbead2c4541869dfdaebf8dd587cb.png
c608cb975db747e0962951df925f4151.png
修改主机的22端口,该gitlab软件包中会使用到该端口
abdf3aacc5f24f4695be45753fc5bb10.png
gitlab容器需要使用/etc/resolv.conf文件
0a081735ee08440fa6ba790d7139d1c6.png
导入镜像
697a1fd144d84f28bb81fc104f96f39e.png
将容器中的目录和宿主机的目录映射保存数据
9027ea3707144516a5aa827af2e3f58d.png
-d后台运行。-h gitlab设置容器的主机名。--name gitlab是podman ps查看到的容器名;-p指定宿主机和容器关联的端口号,当访问宿主机443/80/22端口时,这样的请求就发给容器的相关端口; --restart always是开机自启;-v是映射路径,将容器中指定的路径,映射到宿主机,以便保存容器产生的数据;最后的gitlab_zh是镜像名。
88762e2514064c75891bc677980e0877.png
等待一会,访问该IP地址
3154a633586c4d019740e4c9f46f1605.png
默认以root登录,修改密码为1234.com
20a787fb51b842429704f8f9a6ea60d1.png
efefa2bdc0d24c18978912b7b4c401b4.png
91c4c6a8a142479396767ffdb8bf7200.png
修改登录页面
060fae648da84c5393b8b01717c01457.png
c9ec7aaaf979496b8c1f93cf24bd82a9.png
重新登录查看页面
1ef527f58687440ca5607334eeb1adb2.png
user1为root用户
048fe3a22c4a4e29aaf0c4920fe45530.png
eb6b7902104b437abd672d0bb7ca1316.png
创建用户
ac958499df6d4d3fbff6576f01ed2594.png
286d88d806fd488a8c858a33f769e0ed.png
给用户设置默认的登录密码
5ed3988283e34f4ea02ded19f7dfb8bf.png
3a0ea31378bc4d87a6cba38f5fc42bed.png
创建组
696185963f9f4944864505ef1b2ee4bf.png
dc83eb0276bc4511a4bf3ccac58679ab.png
给组添加用户
b6f1c49d47d34f48bd1ecb4a7cda4d99.png
318790cb6cad4316a5a352020c4743ce.png
创建项目
18c4fb237dc947ea992c716ade484ab9.png
0ff08b5c2fba4ebc98f363db215817d7.png
f502369b27e94bea89a60fb6b5ae403e.png
使用jack用户登录,管理项目
f1ff591d83dc46728301ca1de992c1e2.png
第一次登录需要重新设置密码
74218db9b5d64eef9bcc89dec5b6c49c.png
重新登录
c0bd7ca7ef9444a4ac7a9b0856033894.png
1e5b476fed00479cb2788313309e007d.png
点击项目
54a976cebb9f4fe2b23730a42139f504.png
复制链接
b16e883d7cfd4477925520b03c32e23b.png
http://gitlab/devops/myproject.git将链接中的gitlab修改为gitlab服务虚拟主机的IP地址
http://192.168.10.20/devops/myproject.git
在develop主机上克隆该myproject项目,在本地仓库中会有远程分支(origin)来记录远程仓库的地址。
e7f57ee2820748ed84b09eda04e842a0.png
在myproject目录中创建文件并且创建快照
353c8a8019874a09a780fad31e6b2535.png
添加文件并打快照
daeb13b02c9a4c79b25780bcd4c36a7f.png
git remote -v :查看远程分支
934b867da9984bc4b521cd2646e27ed1.png
push:推送本地的代码
d093d89c521144b9b69b559f8faa270b.png
刷新Gitlab页面
284eda187a0c416bac3dfbb30c7b022f.png
添加hosts文件
ff154aff92df4157aa29ad7ebdd371fd.png
此时也可以不需要加-u 指定远程仓库分支,也能push成功
17ce04cf9aa04f2d9a3bd9e6cebf6040.png
a230ffdfa4da44e1b946b561b7825fc5.png
将远程仓库的代码pull,拉取下来
先将远程仓库克隆
98049b11948c4d4f94d18d54ffcb7fb6.png
在root下面的仓库添加一个新文件,打快照上传到远程仓库
64c3347b4cd24ca6bb476246f0290709.png
5a54756eeafc4166a7e8c5734e43d64e.png
78af2a461e3142a5af58aca0fb0b6454.png
在/var/tmp下将远程仓库中没有的文件,拉取下来
此时没有passwd文件
8692202dc57543bbaee5ae11beeaa65e.png
git pull:拉取文件
1d8659b1ff784cae916f89babf33f848.png
创建公钥
577a821d9adf4b30a64e873d1efe389d.png
查看密钥,复制公钥
4b41d63a5fb54ac590256ef70113885b.png
选择设置
12bec8d23dd24910aa504bbf59e094e7.png
选择ssh密钥
0cb1682784a94c208ff51629ec7f646f.png
7f33aa7fd3ea4d388a95cb96f34e4b21.png
将复制的公钥拷贝到密钥框中
c44de6f2c2794e18b6be5b1ec70c2261.png
00a82820d6b848ab9535d7ed75369e87.png
此时在develop主机中myproject仓库中的记录的远程仓库路径为http协议,而免密的是ssh协议,所以需要把origin分支删除
ef37da9763784917aba187254769ff1a.png
创建ssh协议的地址
点击项目
d910bfb2a9b742abb445cce1274aae03.png
选择ssh协议的地址
8035d78edd204ce589c8ab145f9ba3b8.png
git@gitlab:devops/myproject.git将gitlab替换为IP地址
git@192.168.10.20:devops/myproject.git
创建ss地址
1c48f3f98bc144e988d33d38b0e8a173.png
添加文件并创建快照
d48bfeeffd044602a438343bf9cfab9e.png此时push到远程仓库,就不需要用户和密码了
2802d5e723704b8195ee37d082be5222.png
2b7e1360f23e4b0fa09af21403f3f2a7.png
练习:
1.在gitlab上新建名为mytest的项目,为devops组创建,可见等级为公开
2.将192.168.10.10 (develop服务器,以自己的ip为准)上的mytest项目关联到gitlab的mytest,以ssh方式关联
3.在192.168.10.10 (develop服务器,以自己的ip为准)上,把mytest目录中文件上传
以root用户创建项目
d09feebe0771466c915160162f0ca981.png
c3c4056eed204930921734196363e11f.png
37bb330a76b442b5a3d5e6c4f0cb1588.png
git@gitlab:devops/mytest.git修改为git@192.168.10.20:devops/mytest.git
将develop主机的mytest项目添加远程仓库的地址记录
ab7b147ebfcb4400814cd285a9ea8a55.png
上传文件到远程仓库
7a02f98b29e2411cbeb5ca015f3ad2b8.png
d16cc9c58c7d434897c8178533e30632.png
设置自动开启gitlab服务,给文件添加x权限
d566f1a8d7434d2b8a537cc0594403bb.png
173178989c2e4a089a82389a7b6bf2ea.png
CI(持续集成)/CD(持续部署)
项目部署的过程:
CI(程序员--->gitlab--->jenkins)CD(--->应用服务器(python编写自动化脚本))
7d2d2a3adbcd497f9fd37f9d064f3e78.png
安装Jenkins依赖,jenkins是Java程序所以装java,postfix和mailx是邮件程序,jenkins可以通过它们给管理员发邮件
81b63e7b4c1e41e08620eaaa20b50197.png
安装jenkins软件包
67d1f381e8ef4a709e133df52fa6e2a4.png
开启服务
336b6aca433246dfab78b7e99c209897.png
访问jenkins端口号为8080
986a2f75c1d14f319f3f44673fc07555.png
在/var/lib/jenkins/secrets/initialAdminPassword文件中查看密码
90c3c1e76f0643c79303885b2bd14eda.png
输入密码
8c2ee71a8f514e6faa8a59200b56a2ed.png
选择跳过插件安装
976d537c4854445ca165e59eebdd0c8f.png
选择系统自带的管理员用户
4cd483d1810840728096994251851118.png
保存并完成
9a0f431b8c7446f08c9f88c772cfd024.png
7b1264a97fdc4092b60779e2c961c720.png
c46cc292e7df4042aa92594003d57599.png
修改用户密码
ed92f15785ea44229633ad294e55236b.png
dcaea7da5cae4753876c7827b729f883.png
此时密码为123456
34709083866f47c58e4e89e1ff9bf4e9.png
2ef2170451804e9d8c5d84426283b709.png
安装插件
3f0f81d3287d4f2caa5d7ad4aaff4077.png
将解压的插件复制到/var/lib/jenkins/plugins/目录下面
3f9ea342a67049eea262ac77ba7fa937.png
重启jenkins服务
53e19d9da95d45a5a88fee69090ced0f.png
刷新页面此时语言就有中文显示
469f79e42c5f4c229b5f1dce34c8070c.png
有些英文没有翻译
75f44e2c4b284ef4a84f41162fd18b78.png
给当前的myproject项目打一个标记
9f54e95ed31f4a7d9dfe546485942cab.png
cb9efa7ffcf140cea15dea03f96990a1.png
添加index.html文件并打快照、打标记
6e899a1a0ecb4e998961789f12fa3fef.png
将标签传递给远程仓库
22010d2d58994d4aa321991cd6c55278.png
9fd49f96071a4f8ab6d01375c78bcea3.png
f27052e2b0214ff68a4341bbcb64228f.png
使用jenkins将指定版本的代码下载下来
在jenkins创建任务
0bd02dca229b466aaea67363afab3633.png
259bdc56d9e346bd8d6599df0dc951fa.png
ae651344e9f247908f2c69e0213d7a3a.png
12d11b974b3c483a9d0ba19988516b76.png
bf4f93568a104415ab4d7c0a81b12fe3.png
将jenkins创建的任务和远程仓库对接,使用myprojecthttp的地址 http:/192.168.10.20/devops/myproject.git
a3092dacdd154ee9a835b40c80abae8d.png
指定分支使用定义的web变量来获取
f95a4702abe64842b60d1ad750714e3c.png
通过web变量来构建项目(将指定标签的版本拉取到jenkins)
d85e05d553af4e51b2a8b314e3fc49b8.png
4872dd931f26459db53a4f4d8c8f75ac.png
666ca791590c48d19df8d90d992788e5.png
查看jenkins拉取远程仓库的相关操作
97d6e0d9ca714c4ea30e7b684fd86bfb.png
1fd6d6eb06144583bfce52654d9e5bdb.png
查看拉取下来的文件,拉取的是1.0版本没有index文件
f21800fd133d46698188d97c1c72afed.png
拉取1.1的版本
a9e8003473e6436d95274a635c768dc2.png
149b567471f64944a5ab665869e4ce44.png
此时覆盖了1.0的版本文件
2c7c5b2c2aad4ceb8c0a20ba544c53d7.png
让不同版本存放在不同的目录,创建项目的子目录存放不同的版本
bc65111bfe2b466eac2335bd96fd8752.png
e97d61b3ac584a81b086dffb00bead63.png
7e583c9222774abd9087461bfbd2e5c3.png
将已经构建拉取的myproject项目删除
37444791a153404d8ae6774c828e8ee3.png
重新构建项目
79303616d5f6454495d5336bc3f8cb1f.png
38f8b0640cb14747ae9678fcccf85c05.png
b8144ff98b3a4ea5872e2a28b6a65c8c.png
4d8b958a612d4016b7710def904806bb.png
查看项目
5f901ca2d491493b8ce418c47f20fadc.png
给应用服务器使用,将指定版本的目录打包
在jenkins安装http服务。用来响应应用服务器的http服务请求
570f15c76d7a4e8196be8a8b43b7544d.png
b8d3e64e12714e7aafce44a0c075cc6a.png
将版本号打包
91923628e26f4b67b179f392b9d81937.png
ab13e58d4f9a460d9087fd0bf82a3947.png
执行的shell命令{
pkg_dir=/var/www/html/deploy/packages
cp -r myproject-$web $pkg_dir
rm -rf $pkg_dir/myproject-$web/.git
cd $pkg_dir
tar zcf myproject-$web.tar.gz myproject-$web
rm -rf myproject-$web
md5sum myproject-$web.tar.gz | awk '{print $1}' > myproject-$web.tar.gz.md5
cd ..
echo -n $web > version.txt
a14ed8b5049c4fd4a7745d4f565357d1.png
将jenkins的拉取的项目删除,重新构建项目
606bb8c595294532a1516eecc467b796.png
c5e1dc621ac643b3a995edf3f6a332b2.png
50ae2eb9d9de4291baea50102911d612.png
12570bd1ed38452aaa68e9e8f9ab054e.png
50678457c0024e0d831fa142cd692431.png
查看http服务的目录文件
9f56260780d54bf597538dfbc3db59c4.png
在构建1.1项目
7540ac54b8d14ffb89b8eb687615c0a0.png
240ab6eaa2ae4fef8d30478948814377.png
此时访问该项目的http服务路径,就能显示版本文件压缩包和md5文件
008e9d7cca424406819324ebf435fe80.png
在web应用服务器部署http服务,用来获取jenkins服务器http中的项目包,解压自己的项目,并且检查最新版本
安装http服务和Python环境
f5e955fb46804f8d9e0e0b57aa8ad77e.png
创建download(复制下载tar包)和deploy(部署指定的项目)目录
fae79f2866444752acac6485ffb27f5c.png
当没有web服务器中没有部署过项目,或者项目的版本号不一致时需要从jenkins上下载tar包
d4e1b1a9a3bf45f8b63da3e11a55dc92.png
b1dbe79dccc1401194d6c0b95c783057.png
全部代码
import os,requests,hashlib,tarfile 
#web_ver_path:web服务器的version.txt文件路径
#ver_url:jenkins服务器的version.txt文件的URL路径
def has_new_ver(web_ver_path,ver_url):if os.path.exists(web_ver_path) == False:return True #没有该路径,表示没有该项目文件,需要下载with open(web_ver_path,mode='r') as f:local_ver = f.read()#读取本地的版本号response = requests.get(ver_url)if local_ver != response.text:return True #版本号不同需要下载return False
def file_is_ok(web_tar_path,jenkins_tar_md5_url):m=hashlib.md5()with open(web_tar_path,mode='rb') as f:while True:data = f.read(4096)if len(data) == 0:breakm.update(data)resp = requests.get(jenkins_tar_md5_url)#去掉换行符if resp.text.strip() == m.hexdigest():return Truereturn False
def deploy(web_tar_path,dest,web_deploy):tar = tarfile.open(web_tar_path,mode="r")tar.extractall(path=web_deploy)tar.close()#截取项目名file_name = web_tar_path.split("/")[-1][:-7]deploy_dir = os.path.join(web_deploy,file_name)#创建软连接if os.path.exists(dest) == True:os.remove(dest)os.symlink(deploy_dir,dest)
if __name__ == '__main__':web_ver_path='/var/www/deploy/version.txt'ver_url='http://192.168.10.30/deploy/version.txt'if has_new_ver(web_ver_path,ver_url) == False:print('没有新版本,不需要下载')exit()resp = requests.get(ver_url)#jenkins_tar_url:获取jenkins的tar包URL路径#web_tar_path:web下载tar的路径jenkins_tar_url=f'http://192.168.10.30/deploy/packages/myproject-{resp.text}.tar.gz'web_tar_path=f'/var/www/download/myproject-{resp.text}.tar.gz'#下载tar包with open(web_tar_path,mode='wb') as f:f.write(requests.get(jenkins_tar_url).content)#计算md5值的函数jenkins_tar_md5_url=f'http://192.168.10.30/deploy/packages/myproject-{resp.text}.tar.gz.md5'if file_is_ok(web_tar_path,jenkins_tar_md5_url) == False:print('资源不完整')os.remove(web_tar_path)#项目部署dest = '/var/www/html/current' #软连接web_deploy = '/var/www/deploy' #部署目录deploy(web_tar_path,dest,web_deploy)#更新版本文件if os.path.exists(web_ver_path) == True:os.remove(web_ver_path)with open(web_ver_path,mode='w') as fw:fw.write(resp.text)
5af76c47c31845a9b5923bd9ba00e3a4.png
执行该脚本
c1ccdd2b73a84186b812ca3ed33afb9b.png
访问web服务器
2ef0c71f4b444ead945839ca951b6f84.png
此时在deploy主机中添加文件打标签为1.2
8c6585a5e83548db8b9c83f7a2ec492b.png
在jenkins上拉取项目
f273de8fa53f4f689d4ced9ba91b6b03.png
执行该脚本
af7e026be3884675a729bb3eada1a656.png
刷新web服务器的浏览器网址
dc84886f692e4dca8bbb2f1dc4cbfa82.png

这篇关于GitLab、jenkins的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1069057

相关文章

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

GitLab文件的上传与下载方式

《GitLab文件的上传与下载方式》:本文主要介绍GitLab文件的上传与下载方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录GitLab 项目拉取到本地GitLab 项目上传方法方法 1:本地项目未初始化Git方法 2:本地项目已初始化GitGitLab 上

Docker部署Jenkins持续集成(CI)工具的实现

《Docker部署Jenkins持续集成(CI)工具的实现》Jenkins是一个流行的开源自动化工具,广泛应用于持续集成(CI)和持续交付(CD)的环境中,本文介绍了使用Docker部署Jenkins... 目录前言一、准备工作二、设置变量和目录结构三、配置 docker 权限和网络四、启动 Jenkins

Jenkins中自动化部署Spring Boot项目的全过程

《Jenkins中自动化部署SpringBoot项目的全过程》:本文主要介绍如何使用Jenkins从Git仓库拉取SpringBoot项目并进行自动化部署,通过配置Jenkins任务,实现项目的... 目录准备工作启动 Jenkins配置 Jenkins创建及配置任务源码管理构建触发器构建构建后操作构建任务

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

Jenkins 通过 Version Number Plugin 自动生成和管理构建的版本号

步骤 1:安装 Version Number Plugin 登录 Jenkins 的管理界面。进入 “Manage Jenkins” -> “Manage Plugins”。在 “Available” 选项卡中搜索 “Version Number Plugin”。选中并安装插件,完成后可能需要重启 Jenkins。 步骤 2:配置版本号生成 打开项目配置页面。在下方找到 “Build Env

Jenkins自动构建部署项目

1. 楔子 在实际开发中,经常需要编译、静态代码检查、自动化测试、打包、部署、启动等一连串重复机械的动作,浪费时间、而且容易出错,而Jenkins就是专门Continuous integration(CI)/ Continuous Deploy(CD)开源工具,本文简单介绍Jenkins的使用。 在线无安装免费试用Jenkins:http://www.jenkins.org.cn/test

jenkins--节点的简单配置

添加节点 准备:在master上安装插件SSH 插件 Master即部署jenkins的机器,master通过网络向节点机器发布构建命令。 添加节点,需要一台独立的机器,可以是windows​机器或linux机器或虚拟机都可以。 ​配置节点: 在Manage Jenkins中打开Manage Nodes: 添加节点步骤–安装JDK(在linux上安装) 检查是否安装过JDK yum