第四节:持续集成与部署

DevOps与Continuous Delivery

DevOps:Development和Operations的组合,开发、测试和运维三个部分紧密联系,加强合作,是一个“整体合作”的概念。

CD:continuous integration,实现DevOps的方法。

  • 三个重点:自动化、持续、有效的反馈。
  • 解决的问题:开发人员之间环境的不一致;版本管理问题;快速响应(发布、回滚)问题。

将生成的mybank镜像推push到阿里云仓库

#刷新docker
systemctl restart docker

#1)本地镜像贴标签
docker tag mybank:1.0 registry.cn-hangzhou.aliyuncs.com/ivyfan/mybank:0.8

#2)网页中申请namespace、并创建镜像仓库(选择本地仓库)
例如:registry.cn-hangzhou.aliyuncs.com/acs/agent:0.8
registry.cn-hangzhou.aliyuncs.com 叫做 "Registry域名"。
acs 叫做 "命名空间"。
agent 叫做 "仓库名称"。
0.8 叫做 "Tag"、"镜像标签"(非必须,默认latest)。 将这个几个完全独立的概念组合一下,还有几个术语。
registry.cn-hangzhou.aliyuncs.com/acs/agent 称为 "仓库坐标"。
acs/agent 称为 "仓库全名"(通常在API中使用)。

#3)terminal中登录docker,username是阿里云的登录名称
docker login --username=ivyfan_ali registry.cn-hangzhou.aliyuncs.com

#4)push镜像(查看dockerimage,与里面的要push的镜像进行对应)
docker push registry.cn-hangzhou.aliyuncs.com/ivyfan/mybank:0.8

>>The push refers to a repository [registry.cn-hangzhou.aliyuncs.com/ivyfan/mybank]
435ea9c7a748: Pushed 
4070610ad6a6: Pushed 
104544937081: Pushed 
8013db90d765: Pushed 
fb98c08a3432: Pushed 
6afd54c80453: Pushed 
87deae939d42: Pushed 
b0f743408169: Pushed 
5bef08742407: Pushed 
0.8: digest: sha256:b177e4f3ffb493db781df286d2f555bad57ab7372ddf63ad2af97dea02a039ea size: 2206

#5)pull 已经生成的镜像
docker pull registry.cn-hangzhou.aliyuncs.com/ivyfan/mybank:0.8

错误:unauthorized: authentication required
注意:docker login --username=ivyfan_ali registry.aliyuncs.com是否是push的地址

目的:通过Jenkins页面触发自动build

#1)部署Jenkins服务,先新建一个project,添加jenkins的模板(非永久存储)
oc create -f https://raw.githubusercontent.com/openshift/origin/v1.3.0/examples/jenkins/jenkins-ephemeral-template.json

#2)查看已经导入的模板
oc get template

#3)添加用户权限,
oc policy add-role-to-user edit -z default
>> role "edit" added: "default"

#4)
oc new-app --template=jenkins-ephemeral --param=JENKINS_PASSWORD=welcome

--> Deploying template "ci2/jenkins-ephemeral" to project ci2

     jenkins-ephemeral
     ---------
     Jenkins service, without persistent storage.
     WARNING: Any data stored will be lost upon pod destruction. Only use this template for testing

     A Jenkins service has been created in your project.  The username/password are admin/welcom.  The tutorial at https://github.com/openshift/origin/blob/master/examples/jenkins/README.md contains more information about using this template.

     * With parameters:
        * Jenkins Service Name=jenkins
        * Jenkins JNLP Service Name=jenkins-jnlp
        * Jenkins Password=welcom
        * Memory Limit=512Mi
        * Jenkins ImageStream Namespace=openshift
        * Jenkins ImageStreamTag=jenkins:latest

--> Creating resources ...
    route "jenkins" created
    deploymentconfig "jenkins" created
    serviceaccount "jenkins" created
    rolebinding "jenkins_edit" created
    service "jenkins-jnlp" created
    service "jenkins" created
--> Success
    Run 'oc status' to view your app.

构建部署流水线

1.创新开发测试环境项目

#1)新项目
oc new-project mybank-dev --display-name="fxw:Mybank-dev" --description="mybank开发环境"

#2)添加镜像以widfly为编译的centos环境
oc new-app openshift/widfly-100-centos7~https://github.com/nichochen/mybank-demo-maven

你可能感兴趣的:(第四节:持续集成与部署)