JENKINS部署-学习踩坑日记

news2024/11/25 16:47:21

1、JENKINS情况介绍

        使用docker安装JENKINS,教程可以在网上搜到,步骤执行;

2、服务器情况介绍

        JENKINS部署在A服务器上面,要把项目从gitlab上面拉取下来,然后编译推送jar到B服务器,然后通过docker-compose build framework(构建新镜像) 和 docker-compose up framework -d(启动项目执行)命令启动 ,此处要注意这些命令必须在docker文件下执行,然后在root等文件下执行,会报错

  3、目前使用到命令

pipeline {
  agent any
  
  
  
  stages {
    stage('拉取代码') {
      agent none
      steps {
        git credentialsId: 'gitlab_xblict', url: 'XXX.git',branch: 'master'
        
      }
    }
    stage('编译 & 打包') {
         
      agent none
      steps {
        sh 'cd ./framework-service'
        sh 'cd ./framework-service;  mvn -Dmaven.test.skip=true -gs `pwd`/settings.xml clean package'
        sh 'echo 正在构建 '
      }
    }

    
    stage('推送 & 构建 & 部署') {
      agent none
      steps {
sshPublisher(publishers: [sshPublisherDesc(configName: '10.XX.126.XX', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''cd /root/docker-compose-rational-agriculture
pwd
docker-compose build framework
docker-compose up framework -d''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/', remoteDirectorySDF: false, removePrefix: 'framework-service/framework-module-system/framework-system-start/target/', sourceFiles: 'framework-service/framework-module-system/framework-system-start/target/framework-system-start-1.0.0.jar ')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])          
      }
    }
  }
  environment {
    DOCKER_CREDENTIAL_ID = ''
    GITEE_CREDENTIAL_ID = ''
    KUBECONFIG_CREDENTIAL_ID = ''
    REGISTRY = 'XXX.XX.XX.Xx:8000'
    BRANCH_NAME = 'master'
  }
  
}

4、执行步骤

        1、拉取代码-这个不是我做的,没有对应的问题

        2、编译 & 打包

                此处可能存在的问题, sh 'cd ./framework-service;  mvn -Dmaven.test.skip=true -gs `pwd`/settings.xml clean package' 需要放在一行执行,因为settings.xml文件有可能路径不正确,我这个项目就是下面还多了一个路径,导致出现mvn不能执行。

        3、推送到远程服务器比较复杂(个人理解)

         a、第一次尝试,SSH的方式链接到远程服务器,自己在服务器链接,具体操作步骤自己搜索,记住要在JENKINS镜像里面操作,然后输入命令     sh 'scp  /var/jenkins_home/workspace/rational-agriculture-server/framework-service/framework-module-system/framework-system-start/target/framework-system-start-1.0.0.jar root@10.XX.126.XX:/root/docker-compose-rational-agriculture/ra-system/' ,是可以把jar复制到B服务器上,但是不能执行docker-compose build framework和docker-compose up framework -d  这两个命令,找了好长时间也没找到,理解的还是不够深入

        b、第二次尝试,通过sshPublisher: Send build artifacts over SSH这种方式执行的,执行步骤如下:

        先配置Dashboard-系统配置,里面找到 Publish over SSH ,如果没有找到,需要在插件里面安装一下,请自行百度,然后在服务器执行远程链接命令,这边生成的key用的是id_rsa里面的值,注意这边要用ssh-keygen -m PEM -t rsa -b 4096  命令来生成密钥,然后在做其他操作。不然会出现jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey: [B@ba77e81]] 的错误信息

       Path to key和key的值随便写一个,然后下面的值填写好,Remote Directory一般写根路径比较好。然后点Test Configuration,出现success,就表示链接成功了。

        然后配置流水线命令

选择流水线语法 ,配置信息

        点击生成流水线脚本,复制到流水线里面执行。如果出现SSH: Transferred 0 file(s)的情况,可能是路径没有配置正确,

参考博客(这个里面更详细,我这篇只是记录一下):Publish Over SSH插件的使用(jenkins远程服务器发送文件)_Koma-forever的博客-CSDN博客

 

 

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

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

相关文章

Linux:文本三剑客之sed编辑器

Linux:sed编辑器 一、sed1.1 sed编辑器1.2 sed编辑器的工作流程1.3 命令格式1.4常用选项1.5 常用操作1.6 实际应用 一、sed 1.1 sed编辑器 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。sed编辑器可以根据命…

理解JVM

认识JVM Java 虚拟机(JVM)是运行 Java 字节码的虚拟机。 什么是字节码? 字节码就是jvm能理解的代码。即扩展名为 .class 的文件。 我们日常的java文件先编译成.class 文件 然后在jvm上运行。 个人觉得 内存区域是理解JVM相关的基石。所以彻…

微服务简介,SpringCloud Alibaba Nacos的安装部署与使用,Nacos集成springboot

目录 一.认识微服务 1.0.学习目标 1.1.单体架构 单体架构的优缺点如下: 1.2.分布式架构 分布式架构的优缺点: 1.3.微服务 微服务的架构特征: 1.4.SpringCloud 1.5Nacos注册中心 1.6.总结 二、Nacos基本使用 (一&…

【C++】深入剖析C++11新特性

目录 一、C11简介 二、统一的列表初始化 1.{}初始化 2.std::initializer_list 三、声明 1.auto 2.decltype 3.nullptr 四、范围for 五、final和oberride 六、STL中一些变化 1.array 2.forward_list 3.unordered_map和unordered_set 七、右…

RabbitMQ养成记 (2. java操作MQ快速入门,日志监控,消息追踪)

快速入门 刚开始我们就一步一步来, 先搞什么spring集成。 先使用原始的java代码来操作一下MQ。 这里给新手兄弟的建议,这种技术性的学习 一定要先动手,从简单的地方动手,一步一步来,不然上来就搞理论或者复杂的应用很…

JDBC API

注册数据库驱动 Class.forName("com.mysql.jdbc.Driver"); 所谓的注册驱动,就是让JDBC程序加载mysql驱动程序,并管理驱动 驱动程序实现了JDBC API定义的接口以及和数据库服务器交互的功能,加载驱动是为了方便使用这些功能。 获…

Spring IOC相关注解运用——下篇

目录 一、Configuration 二、ComponentScan 1. 说明 2. 测试方法 3. 运行结果 三、PropertySource 1. 说明 2. 测试方法 3. 测试结果 四、Bean 1. 说明 2. 添加驱动依赖 3. 将Connection对象放入Spring容器 3. 测试 五、Import 1. 说明 2. 测试方法 3. 运行结…

从一道go逆向出发,讨论类tea的逆算法

tea代码很短,经常被直接复制为源码(而不是像标准算法那样调库)。在ctf逆向中也算比较常见,复杂度适中。 例题是一道go逆向,经go parser处理后,核心代码如下图。 panic算是go的专有名词,类似异常…

吃透 Spring AOP (1.理解概念)

理解 什么是AOP AOP,全称面向切面编程。 它可以说是对面向对象OOP的思想升华。从总的理解来讲,AOP是横向对不同程序的抽象。这个思想要不断实践动手之后,才会有很深刻的理解 理解 代理模式 在理解AOP之前,我们首先要单独说一个…

FFMPEG录屏(16)--- MAG(Magnification)捕获桌面

最近增加了对Magnification API捕获桌面的支持,记录一下过程和其中遇到的问题。 参考资料 Magnification API overview Magnification API sample webrtc screen_capturer_win_magnifier.cc Structured Exception Handling (C/C) 前言 我又不得不吐槽一下了&a…

【JavaWeb】-- HTTP、Tomcat、Servlet

文章目录 HTTP1.简介2.请求数据格式2.2.1 格式介绍 3.响应数据格式3.1 格式介绍3.2 响应状态码 Tomcat1.简介1.1 什么是Web服务器 2.基本使用2.1 安装2.2 启动2.3 关闭 3.Maven创建Web项目4.IDEA使用Tomcat4.1集成本地Tomcat4.2 Tomcat Maven插件 Servlet1.简介2.快速入门3.执行…

okhttp篇3:RealCall

Call Call一般代表一个已经准备好的Request,Request的包装类,可执行,它一般有两个主要的方法: execute(立即执行,并阻塞线程,直到Response返回)enqueue(将Request放入队列,等待线程池调度执行…

spring源码学习_01 本地环境搭建

参考网上各种资源,终于把spring源码运行起来了;步骤总结如下: spring版本: 5.2.x 本地系统mac idea 2019.3.2 下载地址:https://www.jetbrains.com/idea/download/other.html jdk 11 下载地址:https://repo…

【设计模式二十三剑】✨编写更高质量代码的秘诀✨

文章目录 ✨✨简述🎆【万能之门】简单工厂模式(Simple Factory)🎇【制造之剑】工厂方法模式(Factory Method)🎇【生产之剑】抽象工厂模式(Abstract Factory)&#x1f387…

C语言基础知识:函数的调用

函数的定义 一般来说,执行源程序就是执行主函数main,其他函数只能被主函数所调用,而其他函数之间也可以相互调用。 1.标准库函数: 分为:I/O函数,字符串,字符处理函数,数学函数&am…

Go语言的函数和defer用法

目录 函数的基本用法 函数中的变长参数 递归函数(recursion) 函数是“一等公民” 函数中defer的用法 defer的底层原理 使用 defer 跟踪函数的执行过程 defer的注意事项 (1)Go语言内置的函数中哪些可以作为deferred 函数 (2&#xf…

面试code(1)—— 排序算法

算法动画 从小到大排序 1 冒泡排序 被动的将最大值送到最右边 1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 3、针对…

Redis修炼 (17. redis主从集群的数据同步原理 全量同步/增量同步)

数据同步 在一个集群之中 数据同步是很重要的。 redis的集群有多种。 我们这次主要说 主从集群。 全量同步 既然是主从集群 那么肯定是 1个master节点 多个从节点。redis的集群中的第一次同步 我们叫 全量同步: 为什么要强调第一次? 因为如果你是第一…

独家策略大放送:最高年化150%的策略,谁不感兴趣?(含免费版)

上一节我们在沪深300中回测了550中均线交叉策略,有朋友想看看这些策略在沪深300以外的中小市场表现如何,同时大家都非常好奇表现抢眼的老Q自研指标WMA_Q系列到底是怎么计算的。 于是老Q又选择了中证500和创业板指来验证下这些策略是否能有同样的表现(PART 1),顺便在今天的…

流水线中的握手信号笔记

1.《握手信号的打拍(一)》 解释了,为什么在流水线中,握手信号不能简单得加一级寄存器 业界关于流水线级握手信号的标准答案是 skid buffer,此外还有人提到了 Register slice 2.《握手信号的打拍(二)》 为什么简单加一级寄存器会握手失败 &…