新建项目到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应用程序& ...
随机推荐
- Python中的r+和a+
问题描述 我打算更改文件user_list2中的内容, 本来的想法是加一个temp 文件. 先把user_list2的内容读取并修改后写入temp, 之后再写回来. 但是在读取内容并修改后写入temp ...
- Go的context的问题
Go的context的问题 2017-05-29 最近被由context引发的一个bug坑得不轻,所以反思一下Go的context的问题. context是隐式的约束,没有检测 如果我们写一个函数,比 ...
- BZOJ_2809_[Apio2012]dispatching_可并堆
BZOJ_2809_[Apio2012]dispatching_可并堆 Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称 ...
- BZOJ_1316_树上的询问_点分治
BZOJ_1316_树上的询问_点分治 Description 一棵n个点的带权有根树,有p个询问,每次询问树中是否存在一条长度为Len的路径,如果是,输出Yes否输出No. Input 第一行两个整 ...
- selenium+python,解决selenium弹出新页面,无法定位元素的问题(报错:Unable to locate element:元素)
1.问题发生描述: 从一个页面进行点击等操作,页面跳转到第二个页面,对第二个页面中的元素,采取任何措施定位都报错,问题报错点如下: 2.出现问题的原因: 窗口句柄还停留在上一个页面,对于当前新弹出的页 ...
- ES 19 - Elasticsearch的检索语法(_search API的使用)
目录 1 Search API的基本用法 1.1 查询所有数据 1.2 响应信息说明 1.3 timeout超时机制 1.4 查询多索引和多类型中的数据 2 URI Search的用法 2.1 GET ...
- 手写事件代理函数 (Delegated function)
‘手写 ’ 这个词 ,面试是不是听过无数遍呢 ! 今天我们来手写一个这样的事件委托函数 => function( parent, selector, type , handle) {} 你需 ...
- c#Socket服务器与客户端的开发(2)
上一篇文章我们使用原生的socket分别实现了服务器和客户端, 本篇文章使用SuperSocket来开发实现服务器, 之前也介绍了SuperSocket是一个轻量级, 跨平台而且可扩展的 .Net/M ...
- Zabbix-server 3.4 安装详细和修改web界面中文出现的乱码(一)
1. 老套路先来个Zabbix简介: Zabbix是一个企业级的.开源的.分布式的监控套件: Zabbix可以监控网络和服务的监控状况. Zabbix利用灵活的告警机制,允许用户对事件发送Email. ...
- 学习 JavaScript (五)核心概念:语句
语句 语句被称作是流控制语句,通常有标志性的一个或者多个关键字,if . do-while. while.for. for-in. label. break.continue.with.switch. ...