使用jenkins来跑docker image的惨痛经历
记录一下我使用jenkins来跑docker container的艰辛路程吧,是照着jenkins官网的[文档](https://jenkins.io/doc/tutorials/build-a-java-app-with-maven/)做的,同时参考了multibranch情况下应该如何写jenkinsFile,也查了很多博客,想做成的效果是jenkins可以自动拉取github上的项目,根据分支名不同使用不同的端口来运行程序。
agent {
docker {
image 'maven:3-alpine'
args '-v /root/.m2:/root/.m2'
}
}
先说下jenkinsFile中的这条命令,args '-v /root/.m2:/root/.m2',它将主机中的root/.m2目录映射到了docker中的container中,这里指的就是maven:3-alpine,因为maven:3-alpine这个container在运行完之后,就会被remove掉,如果映射了仓库目录的话,就没必要每次run job的时候重新下载jar包了,官网也是这样介绍的,这个地方前面应该替换成自己本地的maven仓库目录。jenkins官网说要安装jenkins,要先安装docker,后来我发现即使没装docker,也可以安装jenkins,在8080端口启动服务的,至于docker的相关知识,docker官网的教程可以说是非常详细了。我最后是通过java -jar xxx.jar来运行java程序的,就这样job一直运行着,job显示是红色的图标,端口一直监听着提供服务,虽然功能是实现了,但不是很合适。
说下我遇到的一个大坑,就是关于权限的问题,默认jenkins服务是以jenkins用户运行着的,我想去文件目录里验证下到底有没有jenkins用户,没找到,还以为没有呢,后来才知道有些linux的用户名就是没有在文件中记录的,我是通过在跑jenkins任务的时候,在shell中输出了当前用户查看的,后来我通过更改jenkins的配置文件,使得运行jenkins服务的用户为root,但还是报权限错误,场景是,我在我的spring boot 项目中添加了一个shell文件,jenkins在跑job的时候拉取我github上的项目到本地jenkins的家目录workspace里面,拉取了很多次,我到那个目录去查看那个shell文件的可执行权限,没有可执行权限啊,让我很是崩溃,直接去改源文件的权限,文件模式发生了变化,但git好像无法提交,后来我采取的方法是,删除掉原来的shell文件,重新建一个shell文件,建好之后,就更改它的权限,然后提交,权限问题就解决了。
最新文章
- blade and soul Group Combos
- Work around by "; Due to heavy load, the latest workflow operation has been queued. "; 分类: Sharepoint 2015-07-08 00:19 3人阅读 评论(0) 收藏
- dsquery、netdom工具示例
- java环境搭建系列:JDK环境变量详细配置
- JQuery 如何选择带有多个class的元素
- Activity生命周期图
- js取单选按钮,复选按钮的值
- APUE习题8.7
- RunTime 应用实例–关于埋点的思考
- POJ 2579 Fiber Network(状态压缩+Floyd)
- C++继承、多态、虚函数
- Netty4 学习笔记之二:客户端与服务端心跳 demo
- Windows server2008R2 企业内部搭建虚拟专用网络服务
- 强网杯2018 Web签到
- Jquery :animate反复执行的动画可以利用函数的回调
- C++ 螺旋矩阵算法
- 如何去除 gvim 的 acp和 ";option omnifunc is not set"; 的问题
- html中一些常用标签及属性
- readAsDataURL
- android 自定义View 对话框
热门文章
- What makes an inferred latch? how To avoid creating inferred latches? when do you know you need latches?
- unix下网络编程之I/O复用(四)
- Unix文件指令-Mac终端命令应用
- Spring Boot Starter 速查
- Markdown简要规则
- 0016_练习题d2
- 剑指offer 39_二叉树的深度
- webService(简单小demo)
- GSON 报错HibernateProxy. Forgot to register a type adapter? 的解决办法
- activeMQ功能Demo