使用阿里云容器服务Jenkins 2.0实现持续集成之the tag you want篇(updated on 2017.09.06)-阿里云开发者社区

开发者社区> 阿里云容器服务 ACK> 正文

使用阿里云容器服务Jenkins 2.0实现持续集成之the tag you want篇(updated on 2017.09.06)

简介: 为了简洁起见,本文将上述两种能力在一个持续集成场景中进行运用。整个场景是,在代码中增加环境变量配置文件,代码变更触发自动构建,打包代码,构建镜像(用git SHA和构建时间tag image),推送镜像,使用环境变量文件和compose模板来部署应用到阿里云容器服务。

最近收到很多有关于持续集成场景中image tag的反馈,例如,每次image build的时候希望“Jenkins”能够给image标上不一样的tag,部署应用到阿里云容器服务希望Aliyun-Container-Service-Deploy插件能够实现不是每次以固定的tag发布。本文在原来的持续集成场景中增加这样的两种能力:根据git SHA和构建时间来给image打tag,支持环境变量和compose模板配合部署应用。
为了简洁起见,本文将上述两种能力在一个持续集成场景中进行运用。整个场景是,在代码中增加环境变量配置文件,代码变更触发自动构建,打包代码,构建镜像(用git SHA和构建时间tag image),推送镜像,使用环境变量文件和compose模板来部署应用到阿里云容器服务。值得说明的是,真实的业务场景都是复杂的,需要大家根据自己的业务需求量体裁衣。

Prerequiste

Jenkins插件:

  • Environment Injector Plugin
  • CloudBees Docker Build and Publish plugin
  • Aliyun-Container-Service-Deploy v0.1.2 (暂时未更新到Jenkins社区插件仓库,只能通过下载hpi文件手工安装,(下载地址)

本文使用Java作为示例代码,地址:https://github.com/qinyujia/java-demo-spring-boot.git

源码管理

Repository URL 中填入代码仓库地址
Credentials 中填入对应的账号密码
Branch Specifier (blank for 'any') 中填入代码分支

code

构建

打包代码

增加构建步骤,选择Execute Shell类型,在对话框中输入下面的脚本。
代码根目录下的env.properties用来存储部署应用要用到的所有环境变量,我们的image tag(IMAGE_TAG)也是模板中要替换的变量之一。为了兼容shell环境变量,采用“key=value”保存,每行仅存储一对key/value,不要添加无意义的空格。


set -e
mvn package -DskipTests

echo the tag you want ...
GIT_SHA=`git rev-parse --short HEAD || echo "GitNotFound"`
VERSION=0.1
TIME=`date +%Y%m%d%H%M%S`
IMAGE_TAG=$VERSION-$GIT_SHA-$TIME
echo IMAGE_TAG=$VERSION-$GIT_SHA-$TIME >> env.properties

cat env.properties

shell

构建镜像

增加构建步骤,选择Inject environment variables类型,在Properties File Path中输入环境变量文件env.properties。

injectEnv

增加构建步骤,选择Docker Build and Publish类型。
Repository Name 中填写image repo,eg,qinyujia-test/spring-boot-demo
Tag中填写$IMAGE_TAG,前文shell脚本中写入env.properties文件的image tag。
Docker Host URI和Server credentials缺省则表示使用当前Job执行环境的docker engine。
Docker registry URL中填写https://registry.cn-hangzhou.aliyuncs.com/v2/
Registry credentials中填写registry的账号密码。

dockerBuild

部署应用

增加构建步骤,选择Aliyun Container Service Deploy类型。
ApplicationName对话框中输入应用名称。
ComposeTemplate对话框输入编排模板位置(代码中的相对路径)。
EnvFile中填写环境变量文件env.properties位置(代码中的相对路径)。
Publish Strategy对话框中选择需要的发布模式,支持标准发布和蓝绿发布。
Host Credentials中添加“Docker Host Certificate Authentication”类型的证书。

deploy

总结

本文的持续集成场景中,image tag包含了三种信息:version,应用版本;git SHA,用来追溯对应的代码变更;time,保存image build的时间,这样每次持续集成产出的artifact都是可以快速定位和归档。 Aliyun-Container-Service-Deploy插件整合了阿里云容器服务部署应用的能力,增加对环境变量的支持。

想查看阿里云容器服务提供了哪些slave节点,请访问 https://github.com/AliyunContainerService/jenkins-slaves
想了解更多容器服务内容,请访问 https://www.aliyun.com/product/containerservice

版权声明:本文中所有内容均属于阿里云开发者社区所有,任何媒体、网站或个人未经阿里云开发者社区协议授权不得转载、链接、转贴或以其他方式复制发布/发表。申请授权请邮件developerteam@list.alibaba-inc.com,已获得阿里云开发者社区协议授权的媒体、网站,在转载使用时必须注明"稿件来源:阿里云开发者社区,原文作者姓名",违者本社区将依法追究责任。 如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
阿里云容器服务 ACK
使用钉钉扫一扫加入圈子
+ 订阅

云端最佳容器应用运行环境,安全、稳定、极致弹性

官方博客
官网链接