zoukankan      html  css  js  c++  java
  • Jenkins Pipeline+Maven+Gitlab持续集成构建问题集锦

    问题

    1、全局配置一定要写正确,之前where git 给的地址时E:Gitcmdgit.exe一直报错,其实Windows真正的git.exe在bin目录下

      如果是Linux中,使用whereis git查看git安装地址,一般都在/usr/bin/git

    2、Windows环境的pipeline调用mvn 需要写成这样

     bat 'D:\chromeDownload\apache-maven-3.6.0-bin\apache-maven-3.6.0\bin\mvn install'

    node {
    
        stage('Pull Code'){
            
            git branch: 'master', credentialsId: 'gitlab_account', url: 'http://********.git'
            
        }
        
       stage('Code Check') {
                echo "敬请期待!"
             }
    
       stage('Unit Test') {
             echo "敬请期待!"
          }
         
    
       stage('Compile') {
           echo '编译开始'
           bat 'D:\chromeDownload\apache-maven-3.6.0-bin\apache-maven-3.6.0\bin\mvn install'
           
        
       }
    
       stage('Build Images') {
            echo '敬请期待!'
          
        }
    
        stage('Backup'){
            echo '旧版本软件包已经备份'
        }
    
        stage('Deploy'){
           echo '敬请期待!'
        }
    
        stage('Integration Testing') {
              echo "敬请期待!"
           }
    
        stage('UI Automated Testing') {
              echo "敬请期待!"
           }
    
        stage('Send Testing Report') {
              echo "敬请期待!"
           }
    
    }

    Linux下脚本

    node {
    
    
        stage('Pull Code'){
            
            git branch: 'master', credentialsId: 'git_account', url: 'http://********.git'
            
        }
        
       stage('Code Check') {
                echo "代码检查!"
             }
    
       stage('Unit Test') {
             echo "单元测试 !"
          }
         
    
       stage('Compile') {
            echo '编译开始'
            sh "/var/tools/apache-maven-3.3.9/bin/mvn install"
       }
    
       stage('Build Images') {
            echo '敬请期待!'
          
        }
    
        stage('Backup'){
            echo '旧版本软件包已经备份'
        }
        
        stage('Delete Old war'){
            echo "删除老的包"
        }
        
    
        stage('Deploy'){
           echo '部署!'
        }
    
        stage('Integration Testing') {
              echo "敬请期待!"
           }
    
        stage('UI Automated Testing') {
              echo "敬请期待!"
           }
    
        stage('Send Testing Report') {
              echo "敬请期待!"
           }
    
    }

    3、出现 fatal: Authentication failed for 'http://***.git/'

    ERROR: Error cloning remote repo 'origin'
    hudson.plugins.git.GitException: Command "/usr/bin/git fetch --tags --progress http*****.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
    stdout: 
    stderr: remote: HTTP Basic: Access denied
    fatal: Authentication failed for 'http://***.git/'

    刚开始怀疑是执行Jenkins机器没有把公钥放在gitlab上,其实不是这个原因。

    明显是权限账号问题,检查凭证,是不是账号密码输入错误了,或者pipeline中的脚本 credentialsId 写错了(我就犯了这么低级的错误,哈哈哈)

      

     4、出现下图not found

    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] stage
    [Pipeline] { (Code Check)
    [Pipeline] echo
    代码检查!
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] stage
    [Pipeline] { (Unit Test)
    [Pipeline] echo
    单元测试 !
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] stage
    [Pipeline] { (Compile)
    [Pipeline] echo
    编译开始
    [Pipeline] sh
    + /home/tools/apache-maven-3.3.9/bin/mvn install
    /var/jenkins_home/workspace/wechatcapi@tmp/durable-4f4430f6/script.sh: 1: /var/jenkins_home/workspace/wechatcapi@tmp/durable-4f4430f6/script.sh: /home/tools/apache-maven-3.3.9/bin/mvn: not found
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] }
    [Pipeline] // node
    [Pipeline] End of Pipeline
    ERROR: script returned exit code 127
    Finished: FAILURE

    原因:是因为缺少插件:Pipeline Maven Integration (此原因已排除,读者忽略,仅做记录 )

    实际原因:pipeline中脚本要指定容器中mvn地址,而不是宿主机的

    stage('Compile') {
    echo '编译开始'
    sh "/var/tools/apache-maven-3.3.9/bin/mvn clean"
    }

    这里用了容器的mvn但是容器中还缺少环境变量配置:

    vi /etc/profile 又提示:

    bash: vi: command not found

    安装vi 又提示没有权限

    jenkins@443d62de8949:/var/tools$ apt-get install vi
    E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
    E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

    解决方法:进入容器时使用root账户进入

    sudo docker exec -it -u root e36f /bin/bash

    先更新源:

    apt-get update

    apt-get upgrade

    再安装vi

    apt-get install vi

    如果安装vi不行,那就安装vim

    apt-get install vim

    5、settings.xml文件配置放置位置

      可以看到有两个.m2目录,正确的地方是/var/jenkins_home/.m2这个目录下放置settings.xml文件,同时记得修改settings文件中地址:<localRepository>/var/jenkins_home/.m2</localRepository>

    root@e36f8029c9f2:~/.m2# find / -name .m2
    /root/.m2
    /var/jenkins_home/.m2
  • 相关阅读:
    VSCode远程编写Shell并实时调试配置过程
    eclispe 无法启动调试 cannot connect to VM
    工作流之设置表访问权限
    利用工作流返回达到无限次重复办理业务的过程
    eworkflow工作流系统在iis中发布
    ie8用ajax访问不能每次都刷新的问题
    视频演示(动态指定执行人+指定申请人的上级)
    视频演示eworkflow集成定制aspx页面的过程
    利用开发框架中的标签库集成报表工具
    流程设计器之标签工具
  • 原文地址:https://www.cnblogs.com/gcgc/p/10190614.html
Copyright © 2011-2022 走看看