问题

1、全局配置一定要写正确,之前where git 给的地址时E:\Git\cmd\git.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 :
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./bin/mvn install
/var/jenkins_home/workspace/wechatcapi@tmp/durable-4f4430f6/script.sh: : /var/jenkins_home/workspace/wechatcapi@tmp/durable-4f4430f6/script.sh: /home/tools/apache-maven-3.3./bin/mvn: not found
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code
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

Jenkins Pipeline+Maven+Gitlab持续集成构建问题集锦的更多相关文章

  1. Jenkins Pipeline+Maven+Gitlab持续集成构建

    http://www.cnblogs.com/xiaodai12138/p/9996995.html

  2. Jenkins + testNg + maven 项目持续集成

    搞了一整天,梳理下关键点: 1.项目的pom.xml要配置插件,同时指定testng.xml文件的位置.就被这个卡了好久 <properties> <maven-surefire-p ...

  3. Jenkins pipeline+Maven+Gitlab

    参照文档:http://www.cnblogs.com/xiaodai12138/p/9996995.html

  4. Jenkins + Github持续集成构建Docker容器,维基百科&人工自能(AI)模块

    本文分两部分,第一部分是手动计划任务的方式构建Github上的Docker程序,第二部分是用Github webhook Trigger一个自动构建任务. Jenkins采用2.5版本Docker采用 ...

  5. 从零入门 Serverless | 教你 7 步快速构建 GitLab 持续集成环境

    作者 | 存诚 阿里云弹性计算团队 本文整理自<Serverless 技术公开课>,"Serverless"公众号后台回复"入门",即可获取系列文章 ...

  6. 【iOS】Jenkins Gitlab持续集成打包平台搭建

    Jenkins Gitlab持续集成打包平台搭建 SkySeraph July. 18th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点: ...

  7. Net 项目构建基于Jenkins + Github + Mono 的持续集成环境

    Net 项目构建基于Jenkins + Github + Mono 的持续集成环境 阅读目录 1 安装 2 配置 3 测试 在Redhat enterprise 6.5 的服务器上,为在gutub 上 ...

  8. 学习笔记——Maven实战(四)基于Maven的持续集成实践

    Martin的<持续集成> 相信很多读者和我一样,最早接触到持续集成的概念是来自Martin的著名文章<持续集成>,该文最早发布于2000年9月,之后在2006年进行了一次修订 ...

  9. Maven实战(四)——基于Maven的持续集成实践

    Martin的<持续集成> 相信非常多读者和我一样.最早接触到持续集成的概念是来自Martin的著名文章<持续集成>.该文最早公布于2000年9月,之后在2006年进行了一次修 ...

随机推荐

  1. Python实践练习:口令保管箱

    缘由 做中学才是最好的方法,通过这些项目来加强自己的Python掌握程度. 所有练习目录地址 题目描述: 一个字典中存在着账户和密码,通过命令行参数直接执行,查看是否有这个账户. 若有,则复制账户的密 ...

  2. 使用Spring表达式语言进行装配

    1.1注入外部的值 Spring中,处理外部值的最简单方式就是声明属性源并通过Spring的Environment来检索属性.例如,程序清单3.7展现了一个基本的Spring配置类,它使用外部的属性来 ...

  3. [转] 基于C#的波形显示控件的实现

    转自 基于C#的波形显示控件的实现[附完整源码下载] 编者记: 09年暑假正好在学院实验室呆了一段时间,做了个完整的上位机软件(具体实现:根据下位机的指令,实现通过串口来操纵下位机进行实验,并将采集的 ...

  4. 有关Zedgraph的功能扩展的笔记

    1.坐标轴范围.刻度调整后需要加上下面的语句才能刷新:     zedGraphControl1.AxisChange();     zedGraphControl1.Refresh(); 2.坐标范 ...

  5. mysql 随机查询 记录集

    有时候需求需要随机从数据库查询若干条记录集,网上搜了一下,几篇博文都是些重复的.....不知道他们谁抄的谁的,这里除了介绍提供一种笔者自己想到的方法,本质都是利用mysql 的rand() 第一种方法 ...

  6. Linux系统构架 - HA集群配置

    一.安装 HA 即(high available)高可用,又被叫做双机热备,用于关键性业务. 简单理解就是,有两台机器 A 和 B,正常是 A 提供服务,B 待命闲置,当 A 宕机或服务宕掉,会切换至 ...

  7. 关于 Apache Shiro 详解

    1.1  简介 Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Securi ...

  8. 【296】Python 默认 IDE 修改

    参考:找回Python IDLE Shell里的历史命令(用上下键翻历史命令怎么不好用了呢?) 参考:Python IDLE快捷键一览 参考:Python IDLE 自动提示功能 参考:如何让pyth ...

  9. 索引(index)

    #创建索引 create index index_name_pass on student(name,pass); create index index_name_id on student(name ...

  10. Apache Hive (四)Hive的连接3种连接方式

    转自:https://www.cnblogs.com/qingyunzong/p/8715925.html 一.CLI连接 进入到 bin 目录下,直接输入命令: [hadoop@hadoop3 ~] ...