新建项目到Jenkins中
在以Jenkins为镜像创建Docker容器时,我们在jenkins的dockerfile文件中写明了要安装Docker Compose,目的也是在Jenkins容器中借助Docker Compose来完成相关的操作。
一、容器中安装Docker Compose
1、同时安装Jenkins和Docker Compose:参照之前写过的文章安装Jenkins的同时也安装Docker Compose: https://www.cnblogs.com/CKExp/p/9536864.html
安装完毕,开始安装jenkins内部的插件,如有安装失败的插件,点击Retry重新安装。如果发现jenkins缺少东西,需要重装,则把/var/jenkins_home文件夹整体删除,重新安装。
2、只安装Jenkins,再进入容器后安装Docker Compose,进入Jenkins容器中 $ docker exec -it 容器ID /binbash 然后参照官网文档进行安装:https://docs.docker.com/compose/install/#install-compose
二、在Jenkins中新建项目
首先把系统时间修改一下,使用中国时区,在系统管理,脚本命令行中写入如下代码设置jenkins中的系统时间同步北京时间,方便后期做定时删除无效镜像使用。
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
1、点击新建项目按钮,输入一个项目名称。

2、配置项目的Git路径,如为私有项目,则增加凭证(Credentials)。

3、构建触发器,定时两分钟检查一次查看Git中是否有代码变更,

4、设置构建时间(建议将时长分配多一点,如果构建复杂应用,构建过程将会耗时很长)。

5、构建过程脚本,在这里使用docker compose完成相应的功能,

构建脚本具体如下,在此过程中指明了两个.yaml文件的具体位置,以项目的根目录为基准进入docker文件夹找到两个.yaml文件,然后docker compose将两个文件合并,停止并删除本地已有的容器、镜像、网桥、数据卷,然后重建:
#!/bin/bash
# 获取短版本号 GITHASH=`git rev-parse --short HEAD`
docker-compose -f ./docker/docker-compose.yml -f ./docker/docker-compose.override.yml -p surround down --rmi local --remove-orphans
docker-compose -f ./docker/docker-compose.yml -f ./docker/docker-compose.override.yml -p surround up -d --build
或可以使用如下命令,不在本地生成容器,而只生成镜像即可
#!/bin/bash
# 获取短版本号 GITHASH=`git rev-parse --short HEAD`
docker-compose -f ./docker/docker-compose.yml -f ./docker/docker-compose.override.yml -p surround down --rmi local --remove-orphans
docker-compose -f ./docker/docker-compose.yml -f ./docker/docker-compose.override.yml -p multimap build
6、将镜像推送到镜像仓库中,方便后期的服务部署工作。
echo ---------------Push-Images...------------------
docker login -u=xxx用户名xxx -p=xxx密码xxx ccr.ccs.tencentyun.com
docker-compose -f ./docker/docker-compose.yml -f ./docker/docker-compose.override.yml push
7、保存,配置结束,点击开始构建。
三、新建过程中可能出现的问题
在Jenkins中发布项目时,从控制台中查看到错误,并指明了docker compose报错,则进入jenkins容器,测试docker-compose --version ,能够正常显示则安装成功,如果jenkins中的docker compose附属安装失败,则在jenkins容器内重新安装docker, 通过命令进入容器:docker exec -it 容器ID /binbash,然后先删除已有的文件夹,跟随官网文档重新安装:https://docs.docker.com/compose/install/#install-compose 并测试docker-compose --version ,能够正常显示则安装成功,再次测试jenkins发布项目是否能够正常跑通。
本文地址:https://www.cnblogs.com/CKExp/p/9940479.html
欢迎关注微信订阅号,有新的文章将同步到订阅号中

2018-11-11,望技术有成后能回来看见自己的脚步
新建项目到Jenkins中的更多相关文章
- Python项目在Jenkins中的自动化测试实践(语法检查、单元测试,coverage(代码覆盖率)、自动打包)
原始链接:http://blog.csdn.net/a464057216/article/details/52934077 requirments OS: Ubuntu 14.04+ Gitlab 8 ...
- Jenkins新建项目中源码管理Repository URL使用Git报错:Failed to connect to repository : Command "git ls-remote -h......
之前部署了Gitlab+Gerrit+Jenkins持续集成环境,但在Jenkins中新建项目的源码管理"Repository URL"中添加git地址环节出现了问题,信息为&qu ...
- Jenkins中构建Testcomplete项目的方法介绍
Jenkins的部署在上一篇随笔中已经和大家介绍了,下面我们介绍一下再Jenkins中构建testcomplete项目.我这里使用的是Testcomplete11,下面详细介绍一下构建步骤. 1.Je ...
- Jenkins中maven的作用--构建项目(三)
本文主要根据Jenkins上的日志来继续说明构建项目的过程,上文我们已经讲到构建一个测试环境或单独终端的过程,详情可以了解上篇文章 一.背景介绍 首先看下SVN代码的仓库的结构: 代码仓库里有一个文件 ...
- git+jenkins jar包代码的发布加新建项目
1.本地仓库 java开发 把代码上传上来 ,问一下他要上传到的主机ip , 分支 2.本地 , 设置-->仓库 更新数据,让他同步到南阳gitlab, 若没有这个项目,需要创建相同名字的项目 ...
- Android Studio中新建项目时Your android sdk is out of date or is missing templates的解决办法
在Android Studio中新建项目时出现了以下问题:Your android sdk is out of date or is missing templates. Please ensure ...
- 在eclipse中首次新建项目的时候,出现Project interpreter not specified
在eclipse中首次新建项目的时候,出现Project interpreter not specified(大致可以理解为:没有执行的项目编译者) 原因就是安装了pydev之后,我们的python还 ...
- 2.在Jenkins中配置及执行 maven + selenium + testng项目
1. 在Jenkins中配置Maven与Git 1)在系统管理>管理插件>可选插件 页面分别下载Git plugin 与 Maven Integration plugin插件,安装完成后再 ...
- vs2005新建项目中没有ASP.NET WEB应用程序的解决方法
在vs2003的年代,我们可以在项目模板中选择创建"asp.net web应用程序",可是到vs2005中,就变成了创建网站,原有的创建"asp.net web应用程序& ...
随机推荐
- APP内置react 应用与APP的交互问题
一.内置的H5应用唤起(返回)app 可以用 intent url 来唤起,但要求 webview 实现 shouldOverrideUrlLoading() ,解析 uri,找到对应的 activi ...
- 2个byte类型数据相加(转型问题的分析)
转自https://blog.csdn.net/alinshen/article/details/53571857 今天看到网上有网友问到关于final修饰的面试题目,题目如下: <span s ...
- vector作为函数返回值
在实际的操作中,我们经常会碰到需要返回一序列字符串或者一列数字的时候,以前会用到数组来保存这列的字符串或者数字,现在我们可以用vector来保存这些数据.但是当数据量很大的时候使用vector效率就比 ...
- bzoj 3166 可持久化Tire
每一个数能做出的贡献就是其两端第二个比他大的中间的数和他的异或值 按权值大小排序,按照位置扔进set,set内的元素都是比他大的,也是全的 然后Tire上跑就行了.. #include<cstd ...
- Android缓存机制——LruCache
概述 LruCache的核心原理就是对LinkedHashMap的有效利用,它的内部存在一个LinkedHashMap成员变量,值得注意的4个方法:构造方法.get.put.trimToSize LR ...
- Linux文件属性及权限
一.Linux文件属性: 例如: drwxr-xr-x 2 hdy hdy 4096 11月 28 00:18 桌面 drwxr-xr-x 2 hdy hdy 4096 11月 28 00:18 桌面 ...
- 使用MediatR重构单体应用中的事件发布/订阅
标题:使用MediatR重构单体应用中的事件发布/订阅 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/10640280.html 源代码:https ...
- Protocol Buffers(2):编码与解码
目录 Message Structure 解码代码一窥 varint Protobuf中的整数和浮点数 Length-delimited相关类型 小结 参考 博客:blog.shinelee.me | ...
- PHP扩展高性能日志系统SeasLog简单上手
Windows部分:-------------------------------------------------------- https://pecl.php.net/package/Seas ...
- Android 8.0对隐式广播的进一步限制
项目targetSdkVersion升级到26后,对应的的是Android O版本,即Android 8.0系统.经测试发现针对8.0及以上安卓版本手机,AndroidMainfest.xml中静态注 ...