Docker管道库

pypline-ci的Python项目详细描述


Pypline ci

管道状态

用于基于容器的交付管道的Docker编排工具-为开发人员、测试人员和操作员提供用于本地工作站和交付管道基础设施的通用自动化测试工具。

我目前正在Docker的交付管道中进行实验,这个管道是用一种高级语言编写的,希望能够利用Python自带的面向对象的概念。虽然bash确实提供了在docker管道中编写docker脚本的简单功能;但在一定的规模下,跨多个集成存储库或项目创建和维护独立的脚本变得繁琐和低效。

为什么默认为python 2.7?

目前,Python2.7是大多数Docker开发工作站(流行的Linux发行版或MacOS)的本机版本。此工具的主要关注点是最小的依赖关系,但是,此库也与Python3兼容。

示例

生成图像并运行容器:

importosfrompyplineCIimportPipelinedirPath=os.path.dirname(os.path.realpath(__file__))buildPath=dirPath+'/docker/'localTag='local/foo:latest'pl=Pipeline()pl.build_image(buildPath,localTag)pl.rund(localTag)

从专用测试映像实现测试框架:

importosfrompyplineCIimportPipelinedirPath=os.path.dirname(os.path.realpath(__file__))volumes={dirPath:{'bind':'/tmp','mode':'rw'}}testDir='/tmp/tests'pl=Pipeline(dockerRegistry='registry.gitlab.com/christiantragesser/')pl.runi(image=pipeline.dockerRegistry+'my-test-image:latest',name='foo-test',working_dir=testDir,volumes=volumes,command='pytest')

为uat测试编排应用程序堆栈,然后在测试成功时删除所有容器:

importosfrompyplineCIimportPipelinedirPath=os.path.dirname(os.path.realpath(__file__))cleanUp=[]uat_volume={dirPath:{'bind':'/tmp','mode':'rw'}}testDir='/tmp/tests'db_env_vars={'MYSQL_ROOT_PASSWORD':'root','MYSQL_DATABASE':'foo-db','MYSQL_ROOT_HOST':'%'}app_env_vars={'DB_HOST':'mysql-test','DB_USER':'root','DB_PASSWORD':'root','DATABASE':'foo-db'}pl=Pipeline()cleanUp.append(pl.rund(image='mysql:5.7',name='mysql-test',environment=db_env_vars))cleanUp.append(pl.rund(image='local/foo_app',name='foo-app-test',environment=app_env_vars))pl.runi(image='tutum/curl:latest',name='foo-uat',working_dir=testDir,volumes=uat_volume,command='./uat.sh foo-app-test:5000')pl.purge_containers(cleanUp)

对Docker图像执行CVE扫描:

frompyplineCIimportPipelinepl=Pipeline()pl.cve_scan('nginx:latest')

API参考
  • 管道网络='ci_net',dockerregistry='library/'

    类pypline ci.pyplineci.pipeline

    • 创建网络(网络>创建Docker管道网络。
      参数:
      • 网络(str)-管网名称,默认值ci\u net
    • 生成图像(路径,标记>生成Docker图像。
      参数:
      • path(str)—包含dockerfile的目录的路径。
      • tag(str)—应用于新建图像的标记。
    • 拉取图像(图像拉取给定名称的图像,类似于docker pull命令。如果未指定标记,则将从该存储库中提取所有标记。
      参数:
      • 图像(str)-要拉取的图像名称。
    • rund(映像,stderr=none,ports=none,volumes=none,name=none,environment=none,network=<;obj network>;,command=none,detach=true,remove=false。| 对提供的映像执行拉取操作,运行守护容器,然后返回容器ID。
      参数:
      • 环境(dict或list)—要在容器内设置的环境变量。
      • 映像(str)—要更新和运行的映像。
      • 名称(str)—此容器的名称。
      • 端口(dict)-端口绑定到容器。字典的键是要在容器内绑定的端口,可以是整数,也可以是port/protocol格式的字符串,协议可以是tcp或udp。字典的值是要在主机上打开的相应端口。
      • 卷(dict)-配置装入容器中的卷。
    • runi(映像,命令,名称=无,卷=无,工作目录='/root',tty=真,环境=无,stdin打开=真,网络=<;obj network>;,auto_remove=false对提供的映像执行拉取操作,运行实现所提供命令的交互式容器,然后返回容器stdout记录和命令退出状态(零或非零)。
      参数:
      • 命令(str)-命令在容器中运行。
      • 环境(dict或list)—要在容器内设置的环境变量。
      • 映像(str)—要更新和运行的映像。
      • 名称(str)—此容器的名称。
      • 端口(dict)-端口绑定到容器。字典的键是要在容器内绑定的端口,可以是整数,也可以是port/protocol格式的字符串,协议可以是tcp或udp。字典的值是要在主机上打开的相应端口。
      • 卷(dict)-配置装入容器中的卷。
      • 工作目录(str)-工作目录的路径。
    • 清除容器(ids按容器id强制删除容器。
      参数:
      • ids(list)-要删除的容器id列表。
    • CVE_U扫描(扫描图像使用coreos clair执行Docker图像的CVE扫描。 参数:
      • 扫描图像(str)-要扫描的图像。

安装

安装在Docker主机上:

$ pip install pypline-ci

$ docker run --rm -it \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v $PWD:/tmp \
    -w /tmp \
    registry.gitlab.com/christiantragesser/pypline-ci:latest /bin/sh
$ docker run --rm -it \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v $PWD:/tmp \
    -w /tmp \
    registry.gitlab.com/christiantragesser/pypline-ci:3 /bin/sh

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java OnResizeListener或OnDrawListener或类似的东西   java Orika映射嵌套子列表   保存时java Heroku请求超时代码H12   数据库在Java中出现socket读取超时异常的原因是什么?   java如何更改来自Sqlite数据库的特定数据在Listview中的行颜色   java JAXB解组器无法正确处理XML中的列表   java Android日期时区让我抓狂   java不透明属性在Swing中如何工作?   eclipse从JavaEE代码生成流程图   java如何在Hibernate中从相关表中获取计数   java Glassfish部署了项目的依赖项库   java使内容适合JavaFx中的WebView   java不满意的链接错误libcrypto。所以1.0.0   循环中java数组的使用   java找出哪个包调用服务