上一篇文章完成了 jenkins的装和基本配置 。
新建一个maven的持续集成项目。
注意:maven命令我们在上文最后部分自动安装,配置保存之后并不会立刻安装maven,maven命令工具会在第一次构建maven项目是自动下载安装。
新建项目
配置基本信息
配置源码获取方式为git
遇到的一个错误
No valid crumb was included in the request
在jenkins 的Configure Global Security下 , 取消“防止跨站点请求伪造(Prevent Cross Site Request Forgery exploits)”的勾选或者使用代理的情况下勾选代理。(如下图)
继续,设置构建触发条件,定时扫描构建
构建前后都可以执行特定的动作如shell脚本,这里演示就省略了。只填入构建命令clean package
报保存配置之后,点立即构建
jenkins就会在后台开始自动构架,这里会显示构建进度,构建完成后红色表示失败,蓝色表示成功,点击可以进去查看日志。
点击console查看日志
如果执行错误可以通过日志查看原因,修改错误后,重新构建
可以看到前面三步有构建失败,查看日志可以发现原因:一个是找不到pom.xml,另一是maven下载不了文件。pom文件需要从工程根目录开始算,加上子文件夹路径即可。
通过查看构建日志, maven报错如下:
Failed to transfer Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.4.1.RELEASE from/to central (<a href="https://repo.maven.apache.org/maven2">https://repo.maven.apache.org/maven2</a>): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/151.101.52.215] failed: Connection timed out (Connection timed out) ERROR: Failed to parse POMs org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs: [FATAL] Non-resolvable parent POM for com.jege.spring.boot:spring-boot-hello-world:1.0.0.RELEASE: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.4.1.RELEASE from/to central (<a href="https://repo.maven.apache.org/maven2">https://repo.maven.apache.org/maven2</a>): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/151.101.52.215] failed: Connection timed out (Connection timed out) and 'parent.relativePath' points at no local POM @ line 24, column 10
构建失败,是因为jenkins配置了代理,但是自动安装的maven没有设置代理,给maven配置代理之后构建成功。
检查完毕之后,编辑~/.m2/settings.xml文件,代码如下:添加代理配置如下:
<settings> ... <proxies> <proxy> <id>my-proxy</id> <active>true</active> <protocol>http</protocol> <host>192.168.10.117</host> <port>3267</port> <!-- <username>shihuan</username> <password>123456</password> <nonProxyHosts>repository.mycom.com|*.google.com</nonProxyHosts> --> </proxy> </proxies> ... </settings>
proxies下可以配proxy元素,如果你声明了多个proxy元素,则默认情况下第一个被激活的proxy会生效。这里声明 了一个id为my-proxy的代理,active的值为true表示激活该代理,protocol表示使用的代理协议,这里是http。当然,最重要的 是指定正确的代理服务器的ip和端口。
加我微信