美文网首页
阿里云上的Devops实践

阿里云上的Devops实践

作者: 元家昕 | 来源:发表于2018-06-24 00:34 被阅读0次

敏捷开发少不了一个方便的持续交付环境。这些天在阿里云简单搭了一套开发环境,这里简单记录一下搭建过程。

先盗张图

Jenkins搭建

首先得有个Jenkins服务,在阿里云的容器里面搭jenkins很简单,基本上按照文档搞就行了,https://www.alibabacloud.com/help/zh/doc-detail/42988.htm。

流程大致是

1.申请ecs主机

2.创建swarm集群,绑定ECS主机作为节点

3.在集群中创建应用,选择Jenkins模板

4.访问Jenkins master,初始化配置,用户,安装插件

5.使用内网ip绑定Jenkins slave

过程中有几个点需要稍微注意的:

jenkins slave的账号密码是jenkins/jenkins

jenkins slave的Dockerfile可以在github中找到,https://github.com/AliyunContainerService/jenkins-slaves,有问题可以直接看配置

中间过程出现Error 403 No valid crumb was included in the request,可以在master上修改安全设置,取消“防止跨站点请求伪造”勾选

创建CI和CD任务

接下来我们就可以配置jenkins上的项目了,大体流程可以参见上文阿里云的文档。只是文档是以gitbub代理为例讲解,而我们的代码托管在coding上,配置过程稍有不同。

要让jenkins拉取coding的源码,需要在jenkins上部署相关证书。使用开发者所用证书,明显是一种不安全的做法,所幸coding跟gitlab一样可以设置专门的只读部署证书。

我们在jenkins master上生成ssh证书,把公钥配置到coding相应项目中,然后在jenkins中配置证书使用方式,done。

要使用coding格式的webhook,需要先要在jenkins上安装coding的插件,然后配置jenkins的插件和coding里面的webhook,过程参见https://open.coding.net/ci/jenkins/

实际过程里面踩了一个坑。我想要配置成develop分支有推送的时候自动触发构建和部署,试了好几种写法都不成功,最后发现只能写成这样

develop前面不能添加origin,remote,ref之类的任何前缀。  -_-||

不过过程中倒是让我掌握了一个调试的技巧,coding的webhook配置页面有提供重发的功能,不需要每次提交代码测试。那么jenkins端怎么调试呢?可以在系统配置中打开coding插件的日志

发现了这么类似这样的一个日志

谜题解开了。

集成日志服务

一个舒适的开发环境怎么能离开得了好的日志服务,阿里云集成日志服务同样很简单。

配置过程仍然可以参见阿里云文档https://www.alibabacloud.com/help/zh/doc-detail/26036.htm,这里同样只列出我踩过的坑。

为了对日志分析友好,我们选择了json格式的日志formatter,但是阿里云的容器日志默认会自动添加时间戳,破坏了日志的格式,我们修改一下默认配置

配置日志用json方式解析以后,可以看到这种结构化输出的日志

还可以对日志进行分析,比如说分析restful接口返回status的分布

我们服务端采用了golang,为了使docker镜像最小化,采用了scratch作为base,发现了一个问题,由于没有时区设置,日志打印时间总是跟我们的当地时间相差了8个小时,解决方法是在镜像中加入相关的配置文件。

获取应用版本

测试环境上,我们经常有这样的困扰,现在环境中部署的代码到底是对应哪个版本的呢。

解决方案就是在build docker镜像的时候在jenkins脚本中把commit-id作为ARG传入,设置到镜像的ENV中,通过一个特殊的后门接口返回。

jenkins脚本中写入,docker build --build-arg VERSION_ARG=$GIT_COMMIT -t ...

Dockerfile中写入

ARG VERSION_ARG=not_from_jenkins

ENV VERSION $VERSION_ARG

相关文章

  • 阿里云上的Devops实践

    敏捷开发少不了一个方便的持续交付环境。这些天在阿里云简单搭了一套开发环境,这里简单记录一下搭建过程。 先盗张图 J...

  • 在kubernetes上搭建的Jenkins如何自定义maven

    一、在kubernetes上搭建的Jenkins 参考阿里云devops最佳实践完成在k8s上部署Jenkins服...

  • 如何落地云原生DevOps?

    简介: 什么是云原生DevOps?在阿里内部有怎样的实践?企业又该如何落地?阿里云云效专家团队提出了下一代精益产品...

  • 从0到1,阿里云高级专家口中的DevOps

    内容来源:2017年4月23日,阿里云高级专家桑彦斌在“云时代下的运维管理实践”进行《什么是DevOps》演讲分享...

  • 2018-04-12

    Tig: text-mode interface for Git 阿里 DevOps 转型实践 MySQL 大表优...

  • 「DevOps 转型与实践」沙龙回顾第二讲

    背景介绍 本期分享内容为 《平台化 DevOps—云计算与云原生模式下 DevOps 的建设实践》。目前,DevO...

  • 阿里云安全管家使用教程

    阿里云安全管家服务是阿里云安全专家基于阿里云多年安全最佳实践经验为云上用户提供的全方位安全技术和咨询服务,为云上用...

  • 阿里云安全管家使用教程

    阿里云安全管家服务是阿里云安全专家基于阿里云多年安全最佳实践经验为云上用户提供的全方位安全技术和咨询服务,为云上用...

  • 阿里云专家解读:DevOps

    2017运维/DevOps在线技术峰会上,阿里云平台研发高级专家连铭带来DevOps的相关演讲。本文主要从什么是D...

  • 阿里技术专家理解下的DevOps

    2017运维/DevOps在线技术峰会上,阿里云平台研发高级专家连铭带来DevOps的相关演讲。本文主要从什么是D...

网友评论

      本文标题:阿里云上的Devops实践

      本文链接:https://www.haomeiwen.com/subject/sllaeftx.html