设为首页 收藏本站
查看: 1168|回复: 0

[经验分享] ubuntu 16.04 jenkins pipline的实现 最终docker启动服务

[复制链接]

尚未签到

发表于 2018-1-9 21:09:53 | 显示全部楼层 |阅读模式
  准备工作:两台虚拟机A:192.168.1.60  B:192.168.1.61  C:一个存放代码的代码库(github)
  A:jenkins  git  docker  openssh-server(ssh)
  B:docker  openssh-server(ssh)
  A主机jenkins用户的公钥放到github上,A主机jenkins用户可以免密码登陆B的普通用户
  ************************************************************************************************************
  先说思路,自己写的太乱了,有点看不下去了:
  建四个job,建一个pipline把四个job连起来。
  test1是通过python基础镜像打成里边包含服务的镜像并上传docker hub。
  test2是通过ssh进入目标服务器,把test1上传的镜像拉去下来。根据镜像生成容器,容器启动同时启动服务。
  test3,test4没用。
  *************************************************************************************************************
  jenkins首先要下载pipline的plugin,在系统管理-->管理插件-->可选插件   搜索Build Pipeline Plugin
  在jenkins上建一条pipline:
  先创建4个job:主界面-->新建-->然后选第一个(构建一个自由风格的软件项目)。重复四次,分别命名test1,test2,test3,test4

  在新建一个pipline:pipline插件下载完成后点击下图中的加号会出现 Build PipLine View这个选项,名字随便(testpipline1)创建。

  创建完成后会出现配置的页面:最重要的就是把Select Initial Job这个选项设置好,设成test1。其他的设置也能看懂随便设置。

  现在开始配置job。
  打开test1:点击test1-->点击配置(Configure)
  github插件安装完成后,在General中会有GitHub project,这个配置只是在外边的时候能直接连到github地址。对于配置没什么大用,但是还是设置上。https://github.com/badboyf/PyService
  源码管理的部分:选git,url如果配置错误下面会有红字。

  构建触发器:选择github上什么条件触发构建,因为自己的这个是内网,如果到时候换成服务器ip,当push的时候就会触发这个构建了。

  构建:
  在构建下选择excecute shell,这里执行的shell是服务器上的脚本,可以写绝对路径,如果是相对路径,现在的路径在jenkins的家目录,也就是/var/lib/jenkins
  构建后操作:这个意思是当test1构建完成后下一个job是test2。

  但是现在并不能触发。需要在test2的。需要在test2的<触发构建器> --> Build after other projects are built 填上test1。test2,test3,test4配置类似。功能很多,慢慢研究。
  现在开始看看脚本。
  与docker有关的在jenkins家目录建了一个docker目录。下面是docker目录里的东西。
  我写的是一个python项目(自己瞎看没多长时间,代码写的还特别糟)。首先用打了一个docker的python的flask的基础镜像。这步是手动完成的,需要自己先打出来。
  #Dockerfile
  

FROM ubuntu:16.04  

  
ADD sources.list
/etc/apt/sources.list  

  
RUN mkdir
/workspace  
RUN mkdir
~/.pip  

  
ADD pip.conf
~/.pip/  

  
RUN apt
-get update  
RUN apt
-get install python-pip libmysqlclient-dev libmysqld-dev python-dev python-setuptools -y  
RUN pip install MySQL
-python  
RUN pip install
--upgrade pip  
RUN pip install SQLAlchemy
  
RUN pip install Flask
  

  Dockerfile中包含的两个文件:
  sources.list用了阿里的源:
  

# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ ->
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties  
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
  
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
  
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
  
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
  
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
  
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
  
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
  
deb http://archive.canonical.com/ubuntu xenial partner
  
deb-src http://archive.canonical.com/ubuntu xenial partner
  
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
  
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
  
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
  
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
  

  pip.conf 从国内下载
  

[global]  
index
-url = https://pypi.tuna.tsinghua.edu.cn/simple  
[install]
  
trusted-host=mirrors.aliyun.com
  

  这里遇到的问题就是我命名已经安装了virtualenv,但是放到上面就是启动不起来,只能在容器中重新下载一边全局的模块。
  在Dockerfile的目录执行
  

$ docker build -t badboyf/python-flask .    #打出一个名为badboyf/python-flask的镜像  

  这个镜像可以放在Docker hub上,基镜像吗,以后每次升级可定需要在这个基础上打镜像的。
  基础镜像有了,开始打项目的镜像
  #Dockerfile
  

FROM badboyf/python-flask  

  
ADD PyService
/workspace/PyService  

  
EXPOSE
5000  

  jenkins上配置的执行的脚本放在了execute目录下。
  test1执行的脚本:build_image.sh
  

#!/bin/bash  

  
cd
~/docker  
cp
~/workspace/PyService/ ./ -R  
docker build
-t badboyf/py .  
docker login
-u <username> -p <password>  
docker push badboyf
/py  
docker rmi badboyf
/py  docker logout
  

  test2执行的脚本:run_docker.sh
  

#!/bin/bash  

  
ssh fzk@
192.168.1.61  
docker pull badboyf
/py  
docker run
-d -p 5000:5000 badboyf/py python/workspace/PyService/src/py_service/serv.py  

  这里test3,test4没用,建了这两个只是为了测试一下pipline怎么用。
  还有,jenkins的主配置文件在家目录的config.xml。
  <au.com.centrumsystems.hudson.plugin.buildpipeline.BuildPipelineView plugin="build-pipeline-plugin@1.5.6">
  ..........
  </au.com.centrumsystems.hudson.plugin.buildpipeline.BuildPipelineView plugin="build-pipeline-plugin@1.5.6">
  这两个标签就是一个pipline。可以手动修改这个文件,重启一下jenkins,就会看到了自己手动写的。前提是得写对。自己建的job在jobs目录里。可以手动复制jobs里的一个项目,重命名为其他的。通过修改这几个文件,可以实现完全自动化的pipline流程,从什么也没有到自动生成job、pipline。想想就刺激。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-433365-1-1.html 上篇帖子: Jenkins远程代码执行漏洞 下篇帖子: jenkins-pipeline 自动部署后端的测试环境
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表