如果想从jenkins直接生成docker镜像,并推送到harbor中,最简单的脚本如何实现?

如果不考虑意外,

第一版最简单的构思如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import getopt, sys
import subprocess
import os

site_name = app_name = dep_version = war_name = ""
docker_harbor_ip = "x.x.x.x"
docker_login_name = "boss"
docker_login_password = "client"

#参数用法
def usage():
    print "./docker.py -s site -a app -d dev --war=war_name"
    sys.exit()

#获取参数
def get_opt():
    try:
        opts, args = getopt.getopt(sys.argv[1:], "hs:a:d:", ["help", "war="])
    except getopt.GetoptError:
        print "getopt function has error.."
        usage()
    for o, a in opts:
        if o in ("-h", "--help"):
            usage()
        if o in ("-s"):
            site_name = a
        if o in ("-a"):
            app_name = a
        if o in ("-d"):
            dep_version = a
        if o in ("--war"):
            war_name = a
    return site_name, app_name, dep_version, war_name

#执行shell命令
def docker_cmd(cmd):
    return_code = subprocess.call(cmd, shell=True)
    if  return_code != 0:
        print "command === %s === error" % (cmd)
        usage()
    return return_code

def main():
    site_name, app_name, dep_version, war_name = get_opt()

    if "" in [site_name, app_name, dep_version, war_name]:
    print "args have empty value..."
        usage()

    docker_login = 'docker  login -u %s -p %s http://%s' % (docker_login_name, docker_login_password, docker_harbor_ip )
    docker_tag = 'docker build -t %s/%s/%s:%s .' % (docker_harbor_ip , site_name.lower(), app_name.lower(), dep_version)
    docker_push = 'docker push %s/%s/%s:%s' % (docker_harbor_ip , site_name.lower(), app_name.lower(),dep_version)

    for cmd in [docker_login, docker_tag, docker_push]:
        docker_cmd(cmd)
    print "docker cmd is run..."

if __name__ =='__main__':
    main()

 

时间: 2024-11-10 11:03:16

如果想从jenkins直接生成docker镜像,并推送到harbor中,最简单的脚本如何实现?的相关文章

php7 安装yar 生成docker镜像

Docker包含三个概念: (1)远程仓库即远程镜像库所有镜像的聚集地(不可进入操作). (2)本地镜像即从远程仓库拉取过来的镜像 (3)运行起来的本地镜像叫做容器(分层的可操作) Docker使用: 1.首先通过第三方镜像库(c.163.com)拉取相应的信息比如centos,ubuntu,tomcat等作为基础镜像. Docker pull xxxx 2.运行下载好的镜像. Docker run -dt -p 宿主机端口:镜像端口 --name起一个名字 镜像id/镜像名字 bash -d

想精准营销?神策分析无缝集成推送平台

创业者窘境:"纳不起"新客 据某第三方平台近期调研结果显示,在金融创业领域,2013年一家互联网金融创业公司的投资获客成本区间为300-500元,而2016年则涨为1000-3000元:在电商领域,新用户的获取成本,是维护一个老用户的3倍到10倍-- 如今,高居不下的获客成本让互联网.移动互联网创业者们遭遇新的"天花板",甚至陷入"纳不起"新客的窘境.而花费极高成本所获取的客户,可能仅打开一次APP.或完成一次交易,就白白流失.随着市场饱和度上升

使用阿里云容器服务Jenkins实现持续集成和Docker镜像构建(updated on 2017.3.3)

持续集成作为敏捷开发重要的一步,其目的在于让产品快速迭代的同时,尽可能保持高质量.每一次代码更新,都要通过自动化测试来检测代码和功能的正确性,只有通过自动测试的代码才能进行后续的交付和部署.本文主要介绍如何将时下最流行的持续集成工具之一的Jenkins结合阿里云容器服务,实现自动测试和镜像构建推送. 接下来的演示是如何通过阿里云容器服务Jenkins实现自动测试和Docker镜像构建,实现高质量的持续集成.具体场景:每次代码提交到GitHub上的nodejs的项目中,阿里云容器服务Jenkins

容器镜像服务 Docker镜像的基本使用

容器镜像服务 Docker镜像的基本使用 快速开始!前往:容器镜像服务控制台 前言 Docker的使用条件和基础不再复述 Docker安装和Docker镜像下载的加速器文档在下方的"相关链接"中已经给出 Docker的镜像存储中心通常被称为Registry. 当您需要获取Docker镜像的时候,首先需要登录Registry,然后拉取镜像.在您修改过镜像之后,您可以再次将镜像推送到Registry中去. Docker的镜像地址是什么?我们来看一个完整的例子.(以容器服务的公共镜像为例)r

Docker镜像的存储机制

近几年 Docker 风靡技术圈,不少从业人员都或多或少使用过,也了解如何通过 Dockerfile 构建镜像,从远程镜像仓库拉取自己所需镜像,推送构建好的镜像至远程仓库,根据镜像运行容器等.这个过程十分简单,只需执行 docker build.docker pull.docker push.docker run 等操作即可.但大家是否想过镜像在本地到底是如何存储的?容器又是如何根据镜像启动的?推送镜像至远程镜像仓库时,服务器又是如何存储的呢?下面我们就来简单聊一聊. Docker 镜像本地存储

五个基于Java的Docker镜像

[原文编者的话]Java 语言长期占据编程语言前三甲的位置,其受欢迎程度与重要性不言而喻.在容器化技术大潮中,Java 可扬容器化之长,避自身"臃肿"之短,取得更高成就.本文选择了5个有代表性的 Java 镜像进行了介绍,并指出了其现存的一些问题和解决方案,供相关人员参考. 尽管 Java 看起来不是很"时髦",但仍是一门在移动市场.开源界及企业中占据主导地位的非常受欢迎的重要的语言.举个例子,你可知道在 Apache 软件基金会中63%的项目是用 Java 写的么

docker镜像

国外的docker镜像网站就不说了,国内的,可以用灵雀云. 网址如下: https://hub.alauda.cn/ docker的原理,就是在你电脑上,启动容器,来管理这些服务,比如,mysql,tomcat,等等,这些服务,就是从镜像中启动的. docker,需要下载这些镜像,然后启动服务. 只要是你需要的服务,应该都能在网上找到对应的镜像. docker下载镜像的命令,很简单. docker pull index.alauda.cn/alauda/mysql      在后面,可以加  :

使用Docker镜像构建RPM包

本文讲的是使用Docker镜像构建RPM包,[编者的话]RPM(Red Hat Package Manager)是用于 Linux 分发版的最常见的软件包管理器.因为它允许分发已编译的软件,所以用户只用一个命令就可以安装软件.而RPM包的构建相当繁琐,并且对环境的要求比较高,本文作者介绍了如何借助Docker来构建可以适用多个平台的RPM包. 在一个内部项目中,我一直在思考如何通过非CI工具/流程生成RPM包,我想手动生成RPM包,这样我可以测试它们是否能正常安装,并用于正常的冒烟测试(译者注:

【转载】Docker 镜像优化与最佳实践

阿里云高级研发工程师御坂在云栖TechDay41期的线下沙龙活动中分享了Docker镜像优化与最佳实践.本文为沙龙内容回顾. 从Docker镜像存储的原理开始,针对镜像的存储.网络传输,介绍如何在构建中对这些关键点进行优化.并介绍Docker最新的多阶段构建的功能,以解决构建依赖的中间产物问题. 镜像概念 镜像是什么? 从一个比较具体的角度去看,镜像就是一个多层存储的文件,相较于普通的ISO系统镜像来说,分层存储会带来两个优点: 一个是分层存储的镜像比较容易扩展,比如我们可以基于一个Ubuntu