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年进行了一次修 ...
随机推荐
- 「小程序JAVA实战」小程序视图之条件判断(15)
转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-15/ 小程序里面也是有条件判断的,我相信大家在开发java if和jstl c:if c:when ...
- ELK 日志管理系统,再次尝试记录
简介: 第二次尝试 ELK 记录... 工作流程: 1.客户端的 Logstash 将日志信息采集到之后传输给 Redis 做消息队列 2.然后服务端的 Logstash 将日志从 Redis 中取出 ...
- 团队合作的Ground Rules
在每个Sprint中,我们会为Sprint的确定DOD(Definition of Done,完成的定义).在团队成员合作的过程中,我们也需要定义合作规则,这就是Ground rules,就像小学生守 ...
- glTexGen
[glTexGen] Rather than having to explicitly provide a texture coordinate for each vertex, we can use ...
- Python——字典与字典方法
字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字.字符串.元组,这种结构类型也称之为映射.字典类型是Python中唯一內建的映射类型,基本的操作包括如下: (1)len():返回字典中键— ...
- CS API 测试3
//添加二级存储 http://192.168.150.16:8080/client/api? command=addSecondaryStorage& zoneId=7e34afc4-6 ...
- 安装运行 rovio odometry
https://github.com/ethz-asl/rovio https://github.com/ethz-asl/kindr 1. 新建catkinworkspace mkdir -p ~/ ...
- cactiez中文版10.1配置监控系统安装笔记
1.安装虚拟机vmware_player2.创建虚拟机,设置桥接模式,内存4g,磁盘大小50G3.启动虚拟机,安装系统4.系统root 默认密码 CactiEZ5.配置网络静态IP,修改IP,网关等信 ...
- (转)介绍一些.net开源项目
强大的插件系统,通过Addin构建成一个功能齐全的.net开发IDE.核心是AddInTree.跟随这个项目开发许多有用的组件,比如功能文本编辑器(ICSharpCode.TextEditor),Sh ...
- PropertyPlaceholderConfigurer使用及@Value使用注意事项
思考 PropertyPlaceholderConfigurer和<context:property-placeholder/>有何区别? @Value在Controller层和Servi ...