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年进行了一次修 ...
随机推荐
- vue之vue-router跳转
vue之vue-router跳转 一.配置 在初始化使用vue-cli的时候会有vue-router的安装选择,选择安装即可. 二.嵌套路由 一般情况下,登录和项目页面属于同级,所以App.vue 只 ...
- tornado 自定义session (一)
tornado 中没有session功能,需要我们自己实现. 目录: settings: settings = { 'template_path': 'templates', 'static': 's ...
- JSP页面中的时间显示问题
在JSP页面中往往要将时间显示为指定格式的,如果传入的是Date类型很好解决 <fmt:formatDate value="${orderTime}" pattern=&qu ...
- Linux虚机密码破解
1 重启机器,在机器读秒时按回车键 2 选择要启动的操作系统按 e 3 选择kernel所在行按 e 4 末尾输入空格 single 5 敲回车 在按 b 系统将进入单用户模式 然后 可以 通过 p ...
- Mysql 5.6 源码编译安装
简介: 多余的话不说,就是源码安装 Mysql 5.6 ,机器内存 512 MB ,系统 CentOS 6.6 ,安装方式 minimal ! 1.安装底层支持包 shell > yum -y ...
- 2.Hadoop集群搭建之Hadoop(包含HDFS和Yarn)安装
前期准备 下载JDK 6.0以上版本 下载Hadoop 2.4.1 1. 安装JDK 因为Hadoop是Java开发的,所以需要安装JDK,建议JDK 6.0以上. 解压JDK tar -zxvf J ...
- 实现二叉树的基本操作(Java版)
近期研究了一下二叉树,试着用Java语言实现了二叉树的基本操作,下面分享一下实现代码: package com.sf.test; import java.util.ArrayDeque; import ...
- 使用AddressSanitizer做内存分析(一)——入门篇
使用AddressSanitizer做内存分析 新建文件mem_leak.cpp,键入代码: #include <iostream> int main() { ]; p = NULL; ; ...
- Application.LoadLevel & Object.DontDestroyOnLoad
[Application.LoadLevel] 只有在File->Build Setting中设置了的按钮才能被加载. 当level加载完成后,MonoBehaviour.OnLevelWasL ...
- Appium+python自动化-Remote远程控制
前言 在第三篇启动app的时候有这样一行代码driver = webdriver.Remote('http://192.168.1.1:4723/wd/hub', desired_caps),很多小伙 ...