使用Jenkins从gitlab拉取代码并部署以及gitlab更新代码后自动构建

使用Jenkins从gitlab上拉取代码,使用ssh。

  • 创建Jenkins服务器的SSH密钥对;
  • 为相应的Gitlab用户添加密钥对的公钥,相当于Jenkins拉取代码时,使用的是该Gitlab用户,拥有其相应的代码克隆权限;
  • Jenkins添加密钥对的私钥,实现基于key的连接;
  • 将Gitlab项目的SSH克隆地址配置到相应的Jenkins任务中,在构建时将代码拉取到Jenkins服务器的相应目录,为接下来的测试、部署等操作做好准备。

首先进入Jenkins 容器中

docker exec -it jenkins bash
# 使用 -m PEM ,后面Jenkins使用插件Publish over SSH 不会报错
ssh-keygen -m PEM -t rsa -b 4096
cd ~/.ssh
cat id_rsa.pub
cat id_rsa

将 id_rsa.pub 复制到gitlab中
在这里插入图片描述
将 id_rsa 私钥添加到 Jenkins全局凭证中
在这里插入图片描述
在这里插入图片描述

测试

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

在这里插入图片描述
这时已经将代码成功拉取到jenkins本地了,这样就可以做后续的编译部署操作等等。
在这里插入图片描述
但是如果拉取代码失败!
如下:
在这里插入图片描述
在Jenkins容器中输入:

git  ls-remote -h git@192.168.150.128:xiuyuandashen/hello_world.git HEAD

在这里插入图片描述测试拉取代码
在这里插入图片描述

在这里插入图片描述

实在不行的话,在.ssh目录下添加config
User 为gitlab用户名称,Host gitlab的ip
IDentityFile 为私钥地址
在这里插入图片描述

部署

这时代码已经在jenkins的工作目录下了,我们需要将其编译打包发布到其他服务器上。
首先我们要解决jenkins免密ssh登录部署服务器的问题。
假设我们在 192.168.150.128这台服务器上部署项目。

将Jenkins这台机子的公钥,拷贝到部署服务器上
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.150.128

然后我们需要将私钥放在Jenkins上,这样Jenkins才能访问控制部署服务器。

在Jenkins中安装 插件Publish over SSH

在这里插入图片描述

安装后,去系统管理=》系统配置中配置它
在这里插入图片描述
在这里插入图片描述
测试一下是否联通
在这里插入图片描述

进入项目的配置
在这里插入图片描述
执行 shell

echo '当前 WORKSPACE 工作目录'
pwd
#'在构建时,默认会直接切换到 workspace 目录,所以可以直接将当前目录中的内容复制给被部署的服务器
# 使用maven 打包
/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven3.8.5/bin/mvn  clean package
# 将打包后的文件拷贝到部署服务器
scp -r ./target/*.jar  root@192.168.150.128:/data/#echo '登录'
echo '部署'
# 打包运行

下面就是在远程服务器上运行打包后的jar包

在这里插入图片描述

在这里插入图片描述

这个build.sh 脚本是在部署服务器上的

#!/bin/bash
mv /data/*.jar /data/app.jar
echo '部署'
java -jar /data/app.jar --server.port=9099 &

配置完这些后,进行保存。进行构建

在这里插入图片描述

在这里插入图片描述

部署成功!
在这里插入图片描述

构建触发器,当gitlab代码改变后自动部署

首先需要下载 gitlab 插件,下载后就可以在构建触发器看到下面的选项。
在项目设置中构建触发器,这边我们默认 push时进行触发构建。
在这里插入图片描述
在这里插入图片描述
然后去gitlab进行设置

在这里插入图片描述

当报 Urlis blocked: Requests to localhost are not allowed错误时,去下面这边设置即可
在这里插入图片描述
在这里插入图片描述
测试
在这里插入图片描述
在这里插入图片描述

在部署项目时删除原来的文件以及原有的进程再部署

在这里插入图片描述

# 用 && 连接起来,这样不会出现实际上项目已经部署成功,但是Jenkins的构建不会结束的问题,最终会导致构建超时
# NR==1 表示第一行 $2 表示第二列就是 pidecho '删除原来的文件' && rm -rf *.jar && kill -9  `ps -ef|grep app |awk 'NR==1{print $2}'` && sh /data/build.sh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wincc版本升级_wincc组态软件下载

wincc7.4中文版这款组态软件是由西门子打造能够为用户们带来众多行业中的各项自动化工业制作效果,广泛运用到钢铁行业以及食品行业,印刷行业中,带给了用户们十分便捷的操作体验!wincc中文版介绍由西门子推出的专业数据集与监控软件…

CentOS7.0下Hadoop2.7.3的集群搭建

集群服务器规划 使用3台CentOS-6.8虚拟机进行集群搭建 服务ip主机名称用户HDFSYARNhadoop1192.168.1.40hadoop1root NameNode,Datenode,SecondaryNameNodeResourceManager,NodeManager,hadoop2192.168.1.39hadoop2rootDatenodeNodeManagerhadoop3192.168.1.38hadoop3rootDate…

第五章(1)Libgdx应用框架之生命周期

生命周期 一个libgdx应用有一个良好定义的生命周期,管理应用的状态,比如创建,暂停和恢复,渲染和处理应用。 ApplicationListener 应用开发者通过实现ApplicationListener接口来调整生命周期: publicclassMyGameimpleme…

OnKeyPress事件和Javascript检测键盘输入

对于有些时候,我们需要检测用户键盘输入的键盘信息,来处理一些相应的事件。 这里田子建议使用OnKeyPress“”事件来处理。相类似的还有OnKeyUp和OnKeyDown事件,这些田子个人认为都不是特别的理想化。 假如,我们预定义一个方法fu…

ssh-copy-id 命令快速实现ssh远程免密登录

用ssh-copy-id将公钥复制到远程机器中 将本地公钥拷贝至 用户名为root的远程主机上 ssh-copy-id -i ~/.ssh/id_rsa.pub root192.168.150.128/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/var/jenkins_home/.ssh/id_rsa.pub" /usr/bin/ssh-copy…

智慧职教云答案在哪里找_职教云网课答案在线查询,职教云答案查询,智慧职教云答案在哪里找到...

[问答题] 简述“二重证据法”及其影响。[问答题] 西方古典史学有哪些传统?[问答题] 古典史学的一般特征?[问答题] 兰克被称为西方史学的泰斗,他对西方史学的贡献主要表现在:[问答题] 中世纪史学的贡献?[问答题] 人类学…

Win10配置VSCode+Opencv3(C++) GCC环境

环境清单: win10 _64位系统 VSCode:官网地址 Opencv:3.4.5 Cmake:3.9.0 MinGw:MinGW-W64 GCC-8.1.0(x86_64-posix-seh) MinGW配置: MinGW可以在线安装,也可以直接…

100C之13:他该如何存款?

Table of Contents 1 问题2 分析3 解决方案4 题后语问题 假设银行一年整存零取的月息为0.63%。现在某人手中有一笔钱,他打算在今后的五年中每年的年底取出1000元,到第五年刚好取完,请算出他存钱时应存多少钱? 分析 也比较简单&am…

c#生成一组不同的随机数的方法

代码 #region生成不同随机数的方法///<summary>///生成不同随机数的方法///</summary>///<param name"min">最小值</param>///<param name"max">最大值</param>///<param name"count">取xx个</par…

python实验二报告_20172304 2019-2020-2 《Python程序设计》实验二报告

20172304 2019-2020-2 《Python程序设计》实验二报告课程&#xff1a;《Python程序设计》班级&#xff1a; 1723姓名&#xff1a; 段志轩学号&#xff1a;20172304实验教师&#xff1a;王志强实验日期&#xff1a;2020年4月15日必修/选修&#xff1a; 公选课1.实验内容设计并完…

安装minikube

下载安装 kubectl sudo curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && sudo chmod x kubectl && sudo mv kubectl /us…

网管必须了解的理光复印机相关故障现相之一

相信很多人都知道&#xff0c;网络管理员主要负责的是维护管理好局域网的正常运行。很有公司、企事业单位&#xff0c;IT部门负责的工作常常会包含各种周边设备的日常维护。这其中又以打印机、复印机为主。当然&#xff0c;很多时候不要求我们一定要懂得维修打印机、复印机&…

windows10 vscode 构建最强大的 Mingw C++ gcc 编译环境

工具准备 首先应该准备如下工具&#xff1a; 安装对应版本的Visual Studio Code。安装VS Code上的C扩展&#xff1a;C extension for VS Code。下载MinGW-w64&#xff0c;考虑到是外网资源&#xff0c;建议选择离线版本&#xff0c;在线安装比较慢&#xff0c;不太稳定。MinG…

mysql数据库关联练习_mysql数据库建立数据表的练习(附代码)

数据库操作和学习并不难&#xff0c;难的是如何在各种实际运用情况下编写SQL语句的实现。这个过程&#xff0c;需要大量的练习&#xff0c;那么从这里开始&#xff0c;我们来讲解实现。任务概述具体关系数据库如下&#xff1a;数据库名&#xff1a;教师数据库教师表(编号 char(…

Xml中SelectSingleNode方法中的xpath用法

最常见的XML数据类型有&#xff1a;Element, Attribute&#xff0c;Comment, Text.Element, 指形如<Name>Tom<Name>的节点。它可以包括&#xff1a;Element, Text, Comment, ProcessingInstruction, CDATA, and EntityReference.Attribute, 指在<Employee >中…

win10安装vmware tools + 无法拖拽文件解决

1、加载VMware Tools安装光盘 打开虚拟机VMware Workstation&#xff0c;启动 Ubuntu 系统 菜单栏 - 虚拟机 - 安装VMware Tools。 2、将安装文件提取到本地磁盘 打开加载的VMwareTools光盘&#xff0c;鼠标右键 VMwareTools-*.tar.gz 文件&#xff0c;提取到系统盘下的文件…

火狐最实用的几款插件介绍[含附件]

今天早上发现了FF插件的一遍文章&#xff0c;感觉非常实用&#xff0c;尤其是批量下载图片&#xff0c;以前这个是最头疼的&#xff0c;现在变得很简单了&#xff0c;开心&#xff0c;下来给大家也分享一下吧。 我总结最实用的如下&#xff1a; Firebug 前端开发利器DownThemA…

mysql 需要什么硬件配置_如何来给指定的硬件环境配置一份比较合理的MySQL配置文件-爱可生...

简介通过sysbench的oltp_read_write测试来模拟业务压力、以此来给指定的硬件环境配置一份比较合理的MySQL配置文件。环境介绍硬件配置软件环境优化层级与指导思想优化层级MySQL数据库优化可以在多个不同的层级进行&#xff0c;常见的有&#xff1a;SQL优化参数优化架构优化本文…

perl插入文本

有2个文件。a.txt和b.txt,文件内容如下cat a.txt111 222 333cat b.txtabc def要求把b文件的内容插入a文件含有222的上面。perl -e open $FH,"b.txt";while (1) {$bytesread($FH,$lines,3,length($lines));last if $bytes0};open $FH_A,"a.txt";while (<…

图片打标

在物体检测问题中&#xff0c;第一个需要解决的就是给训练集中的图片打标&#xff0c;所谓打标&#xff0c;就是用一个文件来描述图中物体的位置框坐标&#xff08;xmin&#xff0c;ymin&#xff0c;xmax&#xff0c;ymax&#xff09;&#xff0c;以定位物体的位置。 一个比较…