使用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,一经查实,立即删除!

相关文章

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…

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可以在线安装,也可以直接…

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(…

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

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

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

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

图片打标

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

动态定时任务与动态生成class代码

动态定时任务 原理 采用定时任务线程池ThreadPoolTaskScheduler来实现定时任务。动态定时任务就是可以配置的&#xff0c;而不是写死在代码中。所以我们要将其写入到数据库中&#xff0c;然后暴露接口就可以进行配置比如创建、启动、结束任务。 数据库脚本 DROP TABLE IF EXIS…

docker登录mysql数据库_Docker下搭建mysql数据库

1.获取官方镜像&#xff1a;[rootCentos7 mysql]# docker pull mysql/mysql-server:latestlatest: Pulling from mysql/mysql-server1f5b026b07bc: Pull complete3d5697fc1304: Pull complete2747c84403db: Pull completedc0c445a852b: Pull completeDigest: sha256:7aba8c77f9…

LNMP与CA认证的童话故事

在前面的一篇博客中&#xff0c;我已经介绍过&#xff0c;如何通过源码编译安装LAMP&#xff0c;见教你源码编译制作LAMP详细过程 &#xff0c;这里就介绍下如何编译安装LNMP&#xff0c;以及如何在LNMP中添加ssl认证。LNMP&#xff0c;也叫做LEMP。L&#xff0c;即linux操作系…

Zabbix 最新版 5.2 版本源码安装

Zabbix 最新版 5.0 LTS 版本安装 zabbix 5.0 版本于 5 月 11 日正式发布&#xff0c;是最新的 LTS&#xff08;长期支持&#xff09;版本&#xff0c;5.0 带来很多功能和特性&#xff0c;后面会陆续推出文章介绍&#xff0c;下面主要介绍下 5.0 版本的安装。 环境要求 5.0 版…

【声卡驱动】安装realtek high definition audio后重启电脑被自动卸载替换成系统自带的realtek auto

解决步骤 先断网安装前先记录realtek auto的GUID&#xff0c;可以从设备管理器中事件中找到它&#xff0c;复制保留备用 安装 realtek high definition audio &#xff0c;重启&#xff08;断网&#xff09;在断网状态下&#xff0c;winr &#xff0c;输入gpedit.msc&#xff…

mysql explain是什么意思_mysql explain的作用是什么?

mysql explain的作用是模拟Mysql优化器是如何执行SQL查询语句的&#xff0c;从而知道Mysql是如何处理用户的SQL语句&#xff0c;提高数据检索效率&#xff0c;降低数据库的IO成本。mysql explain的作用是&#xff1a;模拟Mysql优化器是如何执行SQL查询语句的&#xff0c;从而知…

d3.js 搭建 d3-force-directed-graph 例子

d3.js 搭建 d3-force-directed-graph 例子 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <script src&q…