gitlab+jenkins通过钩子实现自动部署web项目,图文详细教程(代码片段)

the丶only the丶only     2023-01-24     488

关键词:

一:基础环境介绍及准备

1:Gitlab服务器:ubuntu 192.168.152.131 —参考搭建:Linux安装gitlab,docker安装gitlab教程

2:Jenkins服务器:ubunu 192.168.152.130 —参考搭建:linux安装Jenkins,或docker安装Jenkins教程

在服务器上生成ssh-keygen,用于配置web服务器和Gitlab服务器。

#生成密钥和私钥,至于为什么用这些参数生产密钥,详情往下看。
ssh-keygen -m PEM -t rsa -b 4096
#将公钥传给web服务器,实现免密码连接
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.152.150

3:web服务器:centos 192.168.152.150 —已搭建好LNMP环境

4:开发者电脑:Windows+key密钥 (用于提交代码)

二:配置Gitlab

1:在gitlab创建项目Test Project

2:配置ssh keys

2.1 配置一个开发者电脑的ssh公钥到gitlab

配置一个开发者电脑的ssh公钥到gitlab,这样才能模拟开发上传代码到gitlab。
windows生成key过程及git安装,可参考:Windows下git和github的使用图文详细教程

在windows测试clone,和提交代码。

#克隆代码仓库,然后测试是否能够上传代码到gitlab 
cd D:/code  #D盘code文件夹作为测试代码文件夹
#第一次需要配置全局邮箱和姓名,否则commit会报错
git config --global user.email "xxxxxxx@gmail.com"
git config  --global user.name "dev"
#克隆提交
git clone git@192.168.152.131:root/test-project.git
cd test-project/
echo this is test html > index.html
git add .
git commit -m "add 1.txt"
git push



注:最新版git 已经将默认分支master改为main了。所以看到main,而不是master不要太奇怪

测试成功,在gitlab也显示有index.html文件。

2.2 配置jenkins公钥到gitlab

同理,同样需要jenkins公钥,因为jenkins也需要拉去gitlab的代码。
jenkins服务器上查看公钥并复制添加到gitlab,并命名为jekins。

cat .ssh/id_rsa.pub

三:配置jenkins

1:插件管理,安装插件

jenkins本身没什么功能,主要是依靠插件来实现各种强大的功能。

基本需要添加的插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git Parameter

可以在Manage Jenkins >> Manage Plugins查看管理插件。在Available 选项搜索安装插件即可。
安装完成后,重启Jenkins。

2:添加需要部署的web主机

在Manage Jenkins >> Configure System 中往下翻,找到 Publish over SSH 选项,点击add ssh server。

在Jenkins服务器上,查看私钥,注,是私钥,不是公钥。

cat .ssh/id_rsa

将私钥填写在key位置,还有添加web服务器相关信息。

注:如果测试报错如下

Failed to connect or change directory
jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey: [B@2e54414f]


是因为默认用ssh-keygen命令,默认生成了OPENSSH 格式密钥。而Jenkins暂时不支持这种私钥,私钥开头结尾如下:

-----BEGIN OPENSSH PRIVATE KEY-----
jPay5FNbtfwDVN91InyRdFrt+14cFD8fM9ItDG4AS4WTajSP0Zdgf2PxcUBiFfMj
…
-----BEGIN OPENSSH PRIVATE KEY——

所以,需要生成rsa密钥格式的。用开头说的ssh-keygen加其他参数生成即可。
私钥开头结尾如下:

----BEGIN RSA PRIVATE KEY-----
fiUBpwmwPki3PU4jagpIhQuX6qokcLBb/E3B0QXC2Ws+mVwCD64q1nd/zA8=
.....
-----END RSA PRIVATE KEY-----

再次测试,显示success,则成功。然后点击save保存即可。

3:构建任务项目

首页创建任务或者一个项目

命名为web-project,选择为freestyle project 自由项目。然后ok确认。

3.1:源码管理 Source Code Management

选择源码管理,添加gitlab的项目clone地址。
注:最后路径选择分支,我gitlab主分支名字为main,如果是master,则写master,或者合并的其他分支。

在add添加用户

添加完成后,选择git用户,这时没有红色提醒,说明已成功连接

3.2:构建触发器 Build Triggers

现在Build Triggers,勾选build when…,其他默认,并记下链接http://192.168.152.130:8080/project/web-project

点击高级 advance 选项。
勾选filter branches regex选择,填写分支,生产token。其他默认

3.3:构建 Build

选择Build 选项。选择ssh

添加web服务器,
添加完毕,最后save保存。

四:再次配置Gitlab

1:添加钩子webhooks.

选择自己的项目Test Project,在设置setting里,选择钩子webhooks.
填写刚才记下的http://192.168.152.130:8080/project/web-project和token值。
最后Add webhook完成:

2:如添加失败,报错,更改Network

注:如填写失败提示Url is blocked: Requests to the local network are not allowed

还需更改Network选项。

3:测试钩子

添加完成后,下面会出现钩子选择。点击test中的,push event。
出现successful,既添加成功。

在Jenkins也可以看到刚才的测试时间信息。

五:测试提交代码是否会部署到远程主机

在开发电脑上测试提交,我这里为Windows电脑测试。
打开Git Bash,输入以下命令:

#进入代码目录
$ cd D:/code
#进入代码项目目录
$ cd test-project/
#添加内容到原测试网页
$ echo "test jenkins" >> index.html	
$ git add .
$ git commit -m "test commit"
#最后提交
$ git push

提交成功,回到Jenkins,查看是否构建成功:

绿色显示构建成功,无错误显示。回到gitlab查看项目。

时间显示刚才也提交成功,无错误。最后在浏览器输入web地址测试,本人配置了web访问端口8082。所以输入IP加端口访问。

内容也已经自动更新成功。

完结撒花!!!

jenkins+gitlab通过脚本自动部署回滚web项目版本至服务器集群(测试环境和正式环境),图文详细(代码片段)

扩展文章:Gitlab+Jenkins通过钩子实现自动部署web项目一:基础环境介绍及准备不在通过钩子自动部署至web服务器,需要自己通过脚本在Jenkins选择版本或者服务器发布回滚。灵活性更高,对于集群来说也实用。1&#... 查看详情

jenkins实现自动部署

主机A搭建gitlab。gitlab下载:https://www.gitlab.cc/downloads/  (gitlab中文网)主机B搭建jenkinsjenkins下载:https://jenkins.io/index.html (gitlab官网)两端同时下载openssl-servergitlab端建好,创建一个项目。首先需要在gitlab端配置jenkin 查看详情

jenkins结合gitlab实现pipline的自动构建部署(代码片段)

部署jenkins与gitlab服务就在这不演示了,可以参考前面的两篇文章。1、jenkins配置自动构建部署1.1、基于sshkey拉取代码先在jenkins服务器上创建个sshkey,在把公钥配置到gitlab上面,再到jenkinsweb界面配置凭据,使jenkins来拉取代码。roo... 查看详情

jenkins与gitlib实现自动化部署与持续构建

持续部署之jenkins与gitlab(一)主要部分安装部署Jenkins和gitlib了解gitlib的常用命令部署haproxy与tomcat环境配置Jenkins使用gitlib更新代码通过sonar实现代码检测实现gitlib触发Jenkins自动部署通过Jenkins实现自动部署实现haproxy动态添加删除... 查看详情

gitlab+jenkins实现自动部署

https://carlislebear.blogspot.com/2019/02/gitlab-jenkins-continuous-integration.html  此篇文章写得很详细大体思路如下:一、安装Gitlab+Jenkins(省略)二、配置Gitlab(上传Jenkins服务器的秘钥、捣鼓代码)三、配置Jenkins1、安裝插件ManageJenkins... 查看详情

jenkins实现项目自动部署

...脚本2远程执行3配置jenkins任务背景之前给公司搭建过一套gitlab+gerrit+jenkins的持续集成环境,由于操作起来有点繁琐,自己也没太搞清楚该怎么用,所以一直就只用了gitlab来做代码管理。最近要做一个项目自动部署的功能,使用过... 查看详情

jenkins+gitlab+ansible自动化部署(代码片段)

...neJob实现Nginix+MySQL+PHP+Wordpress实现自动化部署交付(Jenkins+Gitlab+Ansible自动化部署(五)https://www.cnblogs.com/zd520pyx1314/p/10249094.html)环境准备编写ansibleplaybook脚本实现Wordpress远程部署将wordpress源码与playbook部署脚本提交到gitlab仓库编... 查看详情

jenkins+gitlab集成实现自动构建(代码片段)

Jenkins+gitlab集成后,实现的功能是开发写好代码提交至gitlab上,当开始push到gitlab上之后,jenkins自动帮我们立即构建一、安装gitlab钩子脚本注意:jenkins不论想实现什么功能,都需要安装插件!!依次点击:系统管理==>>插件管... 查看详情

linux上gitlab+jenkins实现vuespringcloud项目的自动部署

一、相关插件安装1.安装GitLab相关插件2.NodeJS插件3.Maven插件4.手动安装插件网络或者其他原因,可能导致插件安装失败。可以采用手动安装的方式。手动下载jenkins插件:jenkins插件下载地址:http://mirror.xmission.com/jenkins/plugins/,一... 查看详情

gitlab+jenkins自动化部署

基于gitlab和jenkins的自动化部署 Gitlab基于Jenkins自动化部署教程:https://blog.csdn.net/aaaaaab_/article/details/82012044https://www.cnblogs.com/dengbingbing/p/10448185.html GitLab是一个代码仓库,用来管理代码。Jenkins是一个自动化服务器,可以运... 查看详情

gitlab+jenkins自动化上线部署持续集成(代码片段)

相信大家开始玩gitlab+jenkins的时候对着两个工具有肯定有一定了解,我就不做详细解释了,下面就跟大家简单的说下gitlab,jenkins之间工作关系:GitLab是一个代码仓库,用来管理代码。Jenkins是一个自动化服务器,可以运行各种自... 查看详情

开发测试环境通过gitlab+jenkins+docker实现一命令部署

开发测试环境的CI/CD拓扑图,程序员端执行gitpush之后,gitlab的webhook会触发Jenkins上的任务,jenkins在开发测试环境执行已定义好的shell脚本,脚本执行gitpull把最新的代码拿到本地,之后通过dockerfilebuilddocker镜像,然后推到harbor中,... 查看详情

使用gitlab+droneci持续集成自动部署web项目,图文详细(代码片段)

扩展参考:Gitlab+Jenkins通过钩子实现自动部署web项目一:环境介绍1:gitlab服务器192.168.152.131搭建参考:Linux安装gitlab、docker安装gitlab2:Drone服务器192.168.152.132搭建参考:Linux基于gitlab搭建DroneCI3&# 查看详情

jenkins+git+gitlab+ansible实现持续集成自动化部署静态网站--技术流ken(代码片段)

 前言 在之前已经写了关于Git,Gitlab以及Ansible的两篇博客《Git+Gitlab+Ansible剧本实现一键部署Nginx--技术流ken》,《Git+Gitlab+Ansible剧本实现一键部署动态网站(二)--技术流ken》,以及关于jenkins的简单使用《Jenkins持续集成介... 查看详情

docker+harbor+jenkins+gitlab自动化cicd构建

文章大纲1.实现CICD的架构简介2.Gitlab部署和实践3.Docker部署4.Harbor私有仓库部署5.Jenkinspipeline项目持续集成实践6.整体架构参考文献1.实现CICD的架构简介本实践介绍了利用Jenkins和docker技术,如何实现CI/CD的各环节的步骤,包括代码... 查看详情

gitlab根据hook钩子自动化部署

 原理是: 在gitlab中项目设置,hook->提交触发指定地址,服务器收到请求,通过验证后,在项目中执行gitpull更新服务器中代码 注意事项: 1.gitlab中要设置sshkey,项目中也要设置一模一样的key,才能gitclone已生成... 查看详情

springcloud+docker+jenkins+gitlab+maven实现自动化构建与部署实战(代码片段)

...景为初心进行实际细讲。本文章主要讲述Docker、Jenkins、GitLab、Git、JDK、SpringBoot、Maven等技术结合实现自动化运维部署 查看详情

springcloud+docker+jenkins+gitlab+maven实现自动化构建与部署实战(代码片段)

...景为初心进行实际细讲。本文章主要讲述Docker、Jenkins、GitLab、Git、JDK、SpringBoot、Maven等技术结合实现自动化运维部署 查看详情