如何利用Travis-CI在线构建yumrepo镜像

栏目: 服务器 · 发布时间: 6年前

内容简介:最近睿云智合开源的Kubernetes图形化离线部署工具- Breeze 引起了社区广泛关注,并收到了一些用户的好评。部分深入技术细节的朋友开始向我们咨询工具所使用的Docker镜像的制作方法,在这里我们以yum-repo这个功能模块为例向大家解析如何利用在线CI工具Travis结合Github及DockerHub来自动构建项目所需的镜像。首先,我们需要将Breeze的yum-repo子项目fork到自己的Github账号,访问

前言

最近睿云智合开源的Kubernetes图形化离线部署工具- Breeze 引起了社区广泛关注,并收到了一些用户的好评。部分深入技术细节的朋友开始向我们咨询 工具 所使用的 Docker 镜像的制作方法,在这里我们以yum-repo这个功能模块为例向大家解析如何利用在线CI工具Travis结合Github及DockerHub来自动构建项目所需的镜像。

如何利用Travis-CI在线构建yumrepo镜像

操作解析

首先,我们需要将Breeze的yum-repo子项目fork到自己的Github账号,访问 https://github.com/wise2c-devops 点击Fork按钮,选择自己Github账号:

如何利用Travis-CI在线构建yumrepo镜像

如何利用Travis-CI在线构建yumrepo镜像

在这个项目里,我们有一个关键文件 .travis.yaml它是我们Travis的工程文件,打开它,其内容如下:

sudo: 

required



        services:

        - docker



        before_install:

        - docker   pull centos:7.4.1708



        script:

        - >

          docker run -t --rm -v ${PWD}/rpms:/rpms -v   ${PWD}/kubernetes.repo:/etc/yum.repos.d/kubernetes.repo centos:7.4.1708

          bash -c

          "yum install -y   https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm   &&

          yum install -y   https://download.ceph.com/rpm-luminous/el7/noarch/ceph-release-1-1.el7.noarch.rpm   &&

          mkdir -p /rpms &&

          yum remove -y python-chardet &&

          yum -y install --downloadonly --downloaddir=/rpms docker docker-python   docker-compose python-chardet python-requests &&

          yum -y install --downloadonly --downloaddir=/rpms audit rsync jq git   tcpdump nc bind-utils net-tools &&

          yum -y install --downloadonly --downloaddir=/rpms ceph-deploy ceph   ceph-radosgw rbd-nbd rbd-mirror open-vm-tools    nfs-utils &&

          yum -y install --downloadonly --downloaddir=/rpms kubernetes-cni-0.6.0   kubectl-1.10.3 kubelet-1.10.3 kubeadm-1.10.3 &&

          yum install -y createrepo &&

          yum clean all &&

          createrepo /rpms"

        - sudo   chmod -R 755 ${PWD}/rpms

        - docker   build -t alanpeng/yum-repo:$TRAVIS_BRANCH .

        - docker   login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD

        - docker   push alanpeng/yum-repo:$TRAVIS_BRANCH

内容理解并不困难,其功能也就是在Travis-CI平台启动docker环境,并下载一个centos:7.4.1708的容器镜像,通过dockerrun命令拉起改容器,并做好相应的文件挂载(挂载的是用于安装Kubernetes所用到的rpm包的yumrepo定义文件,该文件就在Github项目里,另外再将容器内的/rpms目录挂载出来用于后续阶段构建新的容器镜像)。然后开始了一系列的yum下载包的操作,也就是将希望的rpm包都下载到容器内的/rpms目录,该目录被挂载出来用于后续阶段的镜像构建。

createrepo命令即我们所熟悉的制作yumrepo仓库的命令,最后的dockerbuild命令构建镜像时使用了变量$TRAVIS_BRANCH,也即是Github项目的版本分支,这是因为Travis-CI和我们的Github项目关联时会将Github项目的Branch作为自己CI项目的Branch。

最后我们将生成的镜像推送至DockerHub,注意这里您就应该修正DockerHub账号名为您自己的用户名了。例如这里:

- docker   build -t alanpeng/yum-repo:$TRAVIS_BRANCH .

- docker   login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD

- docker   push alanpeng/yum-repo:$TRAVIS_BRANCH

如果该Github项目为私有项目,那么您可以直接在这里把$DOCKER_USERNAME和 $DOCKER_PASSWORD改为您实际的账号及密码。如果该Github项目希望是公开被访问的,那么您可以将此处保留为变量方式。改变量的具体赋值应当在Travis-CI平台里进行定义,这样您可以公开该Github项目而无需担心密码泄露。而Travis-CI平台里定义的环境变量是只有使用您Travis账号登录后才能查看的。以这样的方式既便于源码项目的公开也便于每个人构建出自己的镜像版本。

下面我们来看看最核心的步骤,如何登录Travis-CI平台并管理我们的Github项目进行自动构建任务。

先使用您的Github账号登录Github站点;然后登录网站 https://www.travis-ci.org 并点击SigninwithGithub,此时会出现关联登录许可,同意即可:

如何利用Travis-CI在线构建yumrepo镜像

如何利用Travis-CI在线构建yumrepo镜像

点击 +号关联前面所Fork过来的新项目

如何利用Travis-CI在线构建yumrepo镜像

打开开关,并点击Settings按钮:

如何利用Travis-CI在线构建yumrepo镜像

如何利用Travis-CI在线构建yumrepo镜像

添加环境变量,用户名可以勾选在构建日志中显示:

如何利用Travis-CI在线构建yumrepo镜像

密码当然就别打开这个开关了:

如何利用Travis-CI在线构建yumrepo镜像

环境变量输入完毕后是这样的:

如何利用Travis-CI在线构建yumrepo镜像

接下来的工作当然需要在DockerHub上创建您自己的一个镜像项目了:

如何利用Travis-CI在线构建yumrepo镜像

然后去提交一次项目代码变更吧,Travis-CI就会自动开启构建过程了,我们可以在Github项目的branch里查看Travis构建状态了(小圆点颜色为绿色表示构建通过,这里可以直接点击小圆点跳转到Travis页面查看构建日志细节)

如何利用Travis-CI在线构建yumrepo镜像

如何利用Travis-CI在线构建yumrepo镜像

如何利用Travis-CI在线构建yumrepo镜像

如何利用Travis-CI在线构建yumrepo镜像

如何利用Travis-CI在线构建yumrepo镜像

现在我们就可以在任意地方通过docker pull alanpeng/yum-repo:master这样的方式来下载镜像了。进一步,如果我们在Github项目里创建出不同版本分支或Release,这可以得到不同tag的镜像了。例如 alanpeng/yum-repo:v1.9.8和具体某个k8s版本对应。


以上所述就是小编给大家介绍的《如何利用Travis-CI在线构建yumrepo镜像》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Haskell School of Expression

The Haskell School of Expression

Paul Hudak / Cambridge University Press / 2000-01 / USD 95.00

Functional programming is a style of programming that emphasizes the use of functions (in contrast to object-oriented programming, which emphasizes the use of objects). It has become popular in recen......一起来看看 《The Haskell School of Expression》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具