JENKINS部署-学习踩坑日记

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 [email protected]:/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]] 的错误信息

JENKINS部署-学习踩坑日记_第1张图片

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

JENKINS部署-学习踩坑日记_第2张图片

        然后配置流水线命令

JENKINS部署-学习踩坑日记_第3张图片

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

JENKINS部署-学习踩坑日记_第4张图片

JENKINS部署-学习踩坑日记_第5张图片

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

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

 

 

你可能感兴趣的:(jenkins,学习,运维)