qwert456 发表于 2018-11-14 18:25:21

如何利用Travis-CI在线构建yumrepo镜像-睿云智合技术漫谈

如何利用Travis-CI在线构建yumrepo镜像 前 言 最近睿云智合开源的Kubernetes图形化离线部署工具- Breeze 引起了社区广泛关注,并收到了一些用户的好评。部分深入技术细节的朋友开始向我们咨询工具所使用的Docker镜像的制作方法,在这里我们以yum-repo这个功能模块为例向大家解析如何利用在线CI工具Travis结合Github及DockerHub来自动构建项目所需的镜像。 操作解析 首先,我们需要将Breeze的yum-repo子项目fork到自己的Github账号,访问https://github.com/wise2c-devops 点击Fork按钮,选择自己Github账号: http://pan.xici.com/group5/M00/4A/92/rBABqFvip8yEHZEMAAAAANLDESY158.png/1010 http://pan.xici.com/group5/M00/4A/92/rBABqFvip9WEUf9nAAAAAAgQcIs387.png/1010 在这个项目里,我们有一个关键文件 .travis.yaml它是我们Travis的工程文件,打开它,其内容如下: http://pan.xici.com/group5/M01/4A/98/rBABqVvip-GEApLOAAAAAJQJraw010.png/1010 内容理解并不困难,其功能也就是在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账号名为您自己的用户名了。例如这里: http://pan.xici.com/group4/M00/47/5F/rBABplvip-uEKfvQAAAAAMCeVZA599.png/1010 如果该Github项目为私有项目,那么您可以直接在这里把$DOCKER_USERNAME和 $DOCKER_PASSWORD改为您实际的账号及密码。如果该Github项目希望是公开被访问的,那么您可以将此处保留为变量方式。改变量的具体赋值应当在Travis-CI平台里进行定义,这样您可以公开该Github项目而无需担心密码泄露。而Travis-CI平台里定义的环境变量是只有使用您Travis账号登录后才能查看的。以这样的方式既便于源码项目的公开也便于每个人构建出自己的镜像版本。 下面我们来看看最核心的步骤,如何登录Travis-CI平台并管理我们的Github项目进行自动构建任务。 先使用您的Github账号登录Github站点;然后登录网站 https://www.travis-ci.org 并点击SigninwithGithub,此时会出现关联登录许可,同意即可: http://pan.xici.com/group4/M00/47/5F/rBABplvip_SESRk6AAAAAPI4NYw054.png/1010 http://pan.xici.com/group4/M00/47/5F/rBABplvip_2EKJ2ZAAAAAMyU5yA017.png/1010 点击 +号关联前面所Fork过来的新项目 http://pan.xici.com/group4/M00/47/5F/rBABplviqAqEZdz9AAAAADDYsKI453.png/1010 打开开关,并点击Settings按钮: http://pan.xici.com/group4/M00/47/35/rBABp1viqBWEXAVnAAAAAKIG2mU452.png/1010 http://pan.xici.com/group5/M01/4A/98/rBABqVviqCSEXfYyAAAAACiodS4177.png/1010 添加环境变量,用户名可以勾选在构建日志中显示: http://pan.xici.com/group5/M01/4A/98/rBABqVviqDSEciXcAAAAAEEc9IY421.png/1010 密码当然就别打开这个开关了: http://pan.xici.com/group5/M01/4A/98/rBABqVviqEGEKJrLAAAAAO5n_EA524.png/1010 环境变量输入完毕后是这样的: http://pan.xici.com/group5/M01/4A/98/rBABqVviqF6EMZFbAAAAADLVnqs447.png/1010 接下来的工作当然需要在DockerHub上创建您自己的一个镜像项目了: http://pan.xici.com/group4/M03/47/5F/rBABplviqGyEMbhxAAAAADKmbaw175.png/1010
然后去提交一次项目代码变更吧,Travis-CI就会自动开启构建过程了,我们可以在Github项目的branch里查看Travis构建状态了(小圆点颜色为绿色表示构建通过,这里可以直接点击小圆点跳转到Travis页面查看构建日志细节) http://pan.xici.com/group4/M03/47/35/rBABp1viqJmEflRvAAAAAK6-QW4204.png/1010 http://pan.xici.com/group4/M03/47/35/rBABp1viqLWEd4ZtAAAAAElYwJY449.png/1010 http://pan.xici.com/group4/M03/47/5F/rBABplviqMGEBUEgAAAAAPZDu7Q501.png/1010 http://pan.xici.com/group4/M03/47/35/rBABp1viqMqEQYYSAAAAAGNXVUQ239.png/1010 http://pan.xici.com/group4/M03/47/5F/rBABplviqNSEfXbNAAAAALZ6a9U777.png/1010 现在我们就可以在任意地方通过docker pull alanpeng/yum-repo:master这样的方式来下载镜像了。进一步,如果我们在Github项目里创建出不同版本分支或Release,这可以得到不同tag的镜像了。例如 alanpeng/yum-repo:v1.9.8和具体某个k8s版本对应。
页: [1]
查看完整版本: 如何利用Travis-CI在线构建yumrepo镜像-睿云智合技术漫谈