Jenkins Pipeline+Maven+Gitlab持续集成构建问题集锦
问题
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持续集成构建问题集锦的更多相关文章
- Jenkins Pipeline+Maven+Gitlab持续集成构建
http://www.cnblogs.com/xiaodai12138/p/9996995.html
- Jenkins + testNg + maven 项目持续集成
搞了一整天,梳理下关键点: 1.项目的pom.xml要配置插件,同时指定testng.xml文件的位置.就被这个卡了好久 <properties> <maven-surefire-p ...
- Jenkins pipeline+Maven+Gitlab
参照文档:http://www.cnblogs.com/xiaodai12138/p/9996995.html
- Jenkins + Github持续集成构建Docker容器,维基百科&人工自能(AI)模块
本文分两部分,第一部分是手动计划任务的方式构建Github上的Docker程序,第二部分是用Github webhook Trigger一个自动构建任务. Jenkins采用2.5版本Docker采用 ...
- 从零入门 Serverless | 教你 7 步快速构建 GitLab 持续集成环境
作者 | 存诚 阿里云弹性计算团队 本文整理自<Serverless 技术公开课>,"Serverless"公众号后台回复"入门",即可获取系列文章 ...
- 【iOS】Jenkins Gitlab持续集成打包平台搭建
Jenkins Gitlab持续集成打包平台搭建 SkySeraph July. 18th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点: ...
- Net 项目构建基于Jenkins + Github + Mono 的持续集成环境
Net 项目构建基于Jenkins + Github + Mono 的持续集成环境 阅读目录 1 安装 2 配置 3 测试 在Redhat enterprise 6.5 的服务器上,为在gutub 上 ...
- 学习笔记——Maven实战(四)基于Maven的持续集成实践
Martin的<持续集成> 相信很多读者和我一样,最早接触到持续集成的概念是来自Martin的著名文章<持续集成>,该文最早发布于2000年9月,之后在2006年进行了一次修订 ...
- Maven实战(四)——基于Maven的持续集成实践
Martin的<持续集成> 相信非常多读者和我一样.最早接触到持续集成的概念是来自Martin的著名文章<持续集成>.该文最早公布于2000年9月,之后在2006年进行了一次修 ...
随机推荐
- FrameworkElement.FindName 根据名字查找控件
WPF FrameworkElement.FindName 根据名字查找控件 运行环境:Window7 64bit,NetFramework4.7,C# 7.0, 编者:乌龙哈里 2017-10 ...
- Using Mono DLLs in a Unity Project
[Using Mono DLLs in a Unity Project] The path to the Unity DLLs will typically be: 一个生成dll的例子如下: mcs ...
- Excel VBA入门(一)数据类型
与其它的编程语言一样,VBA也有它自己的数据类型.讲到数据类型,就离不开"变量"与"常量"这两个概念,变量与常量,都是用于保存数据的.顾名思义,"变量 ...
- 169. Majority Element 出现次数超过n/2的元素
[抄题]: Given an array of size n, find the majority element. The majority element is the element that ...
- [erlang 002]gen_server中何时会跑到terminate函数
一.从start方法产出的独立gen_server进程 实验代码: %%%-------------------------------------- %%% @Module : %%% @Auth ...
- 电商项目面试题 及mysql面试题 太难没啥用
需要按照功能点把系统拆分,拆分成独立的功能.单独为某一个节点添加服务器.需要系统之间配合才能完成整个业务逻辑.叫做分布式.集群:同一个工程部署到多台服务器上.优点:1.把模块拆分,使用接口通信,降低模 ...
- Can not find -lXXXX
Description I had the error message Can not find -lGL when i run qt qmake long ago. The error messag ...
- C++ std::unordered_multimap
std::unordered_multimap template < class Key, // unordered_multimap::key_type class T, // unorder ...
- SQL Server 2008 收缩日志
如果SQL SERVER 日志过大,比如,达到了几十个G,想一次性收缩的,直接执行下面命令即可: USE DATABASENAME; GO – Truncate the log by changing ...
- OpenCV学习记录(一):使用haar分类器进行人脸识别 标签: opencv脸部识别c++ 2017-07-03 15:59 26人阅读
OpenCV支持的目标检测的方法是利用样本的Haar特征进行的分类器训练,得到的级联boosted分类器(Cascade Classification).OpenCV2之后的C++接口除了Haar特征 ...