自动化部署任务管理(实践篇)

自动化部署项目分析

  1. 分析业务,将强关联业务放入到一组。常用分组方式有按业务分组、按开发团队分组。
  2. 分析业务,获得该业务组下包含的所有服务。
  3. 获得业务服务属性,包括源代码SCM路径、编译方法、目标文件、部署方式、服务启停、配置文件等。
  4. 分析完成后,可获得一个物理架构图

Jenkins任务建立

  1. 使用SCM用户登录Jenkins。
  2. 点击左侧『新建』(New Item),在『 项目名称』(Enter an item name)中填入项目代称。必须英文名,便于源代码管理和项目管理等。
  3. 项目类型中选择『文件夹』(Folder), 点击OK保存。系统将自动跳转至文件夹的信息完善页面

  4. 在『显示名称』(Display Name)中,填入项目中文名。 点击Save,保存。系统将自动跳转至文件夹查看页面。

  5. 点击左上角『新建』(New Item),建立builds子文件夹,『显示名称』留空,点击OK保存。

  6. 在builds文件夹的查看页面,点击左上角『新建』,建立编译工程。『 项目名称』中填入任务的英文代称,一般可使用SCM中的目录命名。

  7. 如果项目编译为Maven项目,在『复制项目』Copy From填入/openpay/builds/opm。从以往的已经完成的配置中复制配置过来, 以便减少配置的复杂性和统一配置。 然后点击保存,自动进入任务信息完善页面。

  8. 在『源码管理』 中,修改SCM设置,填入SVM类型和代码路径。修改『构建后操作』/『用于存档的文件』的文件路径 。

  9. 根据需要可修改其他的设置, 如构建设置的邮件通知等。然后保存。完成编译任务的建立

  10. 回到项目文件夹,左上角点击『新建』,准备建立发布任务
  11. 在『 项目名称』中填入: $SERVICE_publisher 。$SERVICE为第6步使用的英文代称。

  12. 当项目的编译方法为Jar时,可在『复制项目』填入 /dspay/api_publisher,以便减少配置工作量。点击OK,进入任务信息完善页面。

  13. 在『高级项目选项』(Advanced Project Options)中点击『高级』展开选项, 在『显示名称』填入中文名称,如『点刷支付 API(BIZ) 发布』。

  14. 在 Properties Content 中设置以下值。

    PROJECT_NAME=dspay #为项目名称。
    SERVICE_NAME=api   #为服务名称>
    BUILD_JOB=${PROJECT_NAME}/builds/api_all   #为编译工作。
    TARGET_FILE=ds-biz-1.0.tar.gz              #为编译工作内的用于存档的文件的目标文件。
    PLAYBOOK=${PROJECT_NAME}/${SERVICE_NAME}   #为上线的playbook脚本,存储在rhasta项目中。一般不改。 Playbook的新增和维护工作由运维部负责。
  15. 点击保存。然后测试build job 和publish job。

Jenkins权限分配

完成项目的任务建立和测试工作后,即可将项目交付给测试人员、开发人员进行使用。

  1. 使用admin用户登录Jenkins
  2. 通过系统管理 =》管理和分配角色 =》 管理角色, 进入项目角色管理页面 http://jenkins:8080/role-strategy/manage-roles。
  3. 在 『项目角色』(Project roles) –『添加角色』(Role to add) 填入项目代称, 在 Pattern 填入  ^项目代称.*。 这里的项目代称与『Jenkins任务建立』流程的第6步的代称一致。
  4. 点击保存,完成项目角色的创建。
  5. 通过系统管理 =》管理和分配角色 =》 分配角色,进入角色分配页面,在『项目角色』(Project roles)表中,将刚建立的项目角色分配给需要的用户。
  6. 如果用户不存在,先参考『自动化部署用户及权限(实践篇)』创建用户,并在 『项目角色』中通过『添加用户组』(User/group to add)将用户增加到项目角色表。
  7. 最终点击保存,使权限配置生效。

Jenkins部署流程图

 

  1. 开发者发起任务,一般开发者指QA, 也包括test,scm人员
  2. Jenkins根据任务配置,调用构建工作,Builder编译节点将进行检出代码、执行构建工作。
  3. 同时,Builder节点也进行一些静态的代码检查,包括单元测试、代码风格检查等。
  4. 构建及静态检查通过后,将获得存档目标文件,返回给Jenkins。
  5. Jenkins将文件发送至Ansible服务器
  6. Ansible服务器通过部署脚本、根据环境配置,对测试环境进行部署工作
  7. 测试人员针对测试环境进行功能测试等各类测试,并反馈测试结果。
  8. 根据测试环境的测试结果,重复5,6,7过程,完成准生产环境、生产环境的部署工作。

最佳实践补充

  1. jenkins本身的配置、项目及任务都应该被代码管理,保障JOBS和Jenkins配置的更新历史。因此可将Jenkins Home提交到git,并定期登录到Jenkins服务器执行 git commit 和 git push工作

  2. 这一过程也可通过Jenkins Plugin:SCM Sync Configuration Plugin 自动完成

发表评论

电子邮件地址不会被公开。 必填项已用*标注