基于Jenkins+OOS+OSS的自动化部署

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000 次 1年
对象存储OSS,敏感数据保护2.0 200GB 1年
简介: 通过Jenkins、OOS、OOS快速实现自动化部署。

基于Jenkins+OOS+OSS的自动化部署


通过Jenkins、OOS、OOS快速实现自动化部署。
本文以wordpress博客系统为例,来构建基于Jenkins + OOS的自动化部署最佳实践,示例涉及如下产品。

  • wordpress github地址
  • OOS 运维编排服务,阿里云的自动化运维服务,用于管理软件版本和分批发布。
  • OSS 对象存储, 用于存储构建的软件包。
  • Jenkins 自动化构建,并触发更新OSS和OOS的软件包。
  • ROS 资源编排服务,阿里云提供的云资源的自动化部署服务,可以帮忙您一键部署系统所依赖的云资源(ECS,RDS,SLB等)。

环境准备

WordPress云上服务器

如下步骤为通过ROS,创建了一套包含ECS和RDS的WordPress环境。

  1. 登录ROS(资源编排)控制台
  2. 单击模板示例->模板->基于ECS和RDS创建WordPress环境->创建资源栈
  3. 输入密码和实例类型等相关参数,然后单击创建,等待片刻后,若环境创建成功,资源栈的输出结果样式如下。
  4. 其中输出的WordPressUrl值是单机版wordpress地址,通过浏览器访问可以看到网站已经部署好。


安装并配置阿里云CLI

本文以Mac-os为例,其他系统安装可参考阿里云CLI

  1. 首先为阿里云CLI创建一个RAM用户来获取AK,详细操作请参考创建RAM用户
  2. 安装阿里云CLI。
brew install aliyun-cli
  1. 配置CLI。
aliyun configure
  1. 验证CLI可用,若可用,可在终端看到输出当前支持的多个地域。
aliyun ecs DescribeRegions

安装并配置Jenkins

本文示例为Mac-OS,其他系统可参考Jenkins安装

  1. 安装最新版本
brew install jenkins
  1. 安装 LTS 版本
brew install jenkins-lts
  1. 启动Jinkens
brew services start jenkins-lts
  1. 在本机浏览器打开localhost:8080。
  2. 根据提供的目录复制并填入密码,单击继续。
  3. 安装插件,选择默认插件。
  4. 设置用户名和密码后登录。

Jenkins更新应用包

  1. 单击Newitems。
  2. 选择Freestyle project 并输入项目名
  3. 单击Source Code Managerment,选择Git地址并配置。
https://github.com/WordPress/WordPress.git
  1. Build内选择Add build step,添加Execute Shell步骤,配置Command贴入如下脚本,脚本功能(将wordpress master的数据打包并拷贝到oss://wordpress-test-oos路径下,然后在OOS创建名为wordpress的软件包。)
version=`date +%s`
# 打包命令
tar -cvf wordpress_$version.tar `find .|grep -v wp-config-sample.php|grep -v targets|grep -v .git|grep -v ^\.$`
# 拷贝到OSS上
/usr/local/bin/aliyun oss cp wordpress_$version.tar oss://wordpress-test-oos/wordpress_$version.tar
templateName=wordpress
# templateContent指定Location地址 并配置安装时候执行的脚本
# {
#   "FormatVersion": "OOS-2020-01-01-Package",
#   "Description": "",
#   "Packages": [{
#       "Name": "wordpress_$version.tar",
#       "Location": "oss://wordpress-test-oos/wordpress_$version.tar",
#       "InstallScript": "test -e wordpress || mkdir wordpress && cd wordpress && mv ../wordpress_$version.tar . && tar xvf wordpress_$version.tar > /dev/null && rm wordpress_$version.tar && cp -rf * /var/www/html/",
#       "UninstallScript": "echo uninstall",
#       "Targets": [{
#           "PlatForm": "centos",
#           "Architect": "x86_64"
#       }]
#   }]
# }
templateContent="{\"FormatVersion\":\"OOS-2020-01-01-Package\",\"Description\":\"\",\"Packages\":[{\"Name\":\"wordpress_$version.tar\",\"Location\":\"oss://wordpress-test-oos/wordpress_$version.tar\",\"InstallScript\":\"test -e wordpress || mkdir wordpress && cd wordpress && mv ../wordpress_$version.tar . && tar xvf wordpress_$version.tar > /dev/null && rm wordpress_$version.tar && cp -rf * /var/www/html/\",\"UninstallScript\":\"echo uninstall\",\"Targets\":[{\"PlatForm\":\"centos\",\"Architect\":\"x86_64\"}]}]}"
# 更新OOS上的软件包
/usr/local/bin/aliyun oos CreateTemplate --TemplateName=$templateName --Content "$templateContent" || /usr/local/bin/aliyun oos UpdateTemplate --TemplateName=$templateName --Content "$templateContent"
# 清理打包临时文件
rm wordpress_$version.tar
  1. 单击Save。
  2. 配置好后单击Build Now触发部署流程,然后单击Build History可查看部署情况。
  3. 在Console Output里我们可以看到本次部署的日志,整个过程包括从git拉取代码,执行tar打包,将包拷贝到OSS上,以及在OOS上创建(更新)一个名为wordpress的软件包,软件包在OOS控制台我的软件(注意切换地域)可查看到。
  4. 单击详情可查看软件的详情,包名、存储位置、安装脚本、卸载脚本,以及历史版本。


OOS部署软件

  1. 登录OOS控制台,单击我的软件>wordpress,单击安装软件,选择要安装在的目标实例(本示例选择上文ROS创建得到的实例id)。
  2. 我们发现选择实例按钮是灰色的,这个时候需要给实例配置一个角色,OOS会使用这个角色来获取软件包信息以及下载oss的权限,单击授权。

  3. 这时候我们跳到了添加角色的界面。

    • 若有已准备好的RAM角色(应被授予AliyunOOSReadOnlyAccess及AliyunOSSReadOnlyAccess的系统权限,且信任服务为ecs云服务器),单击执行,执行列表里可以看到执行成功。
    • 若无已准备好的RAM角色,参照如下步骤,创建角色。

      1. 登录RAM控制台,单击创建角色,授信服务选择云服务器。
      2. 为新建角色授予AliyunOOSReadOnlyAccess和AliyunOSSReadOnlyAccess。
      3. 回到为批量操作实例-实例操作-添加角色,完成实例的角色授予。
  4. 实例配置好角色后,回到我的软件执行安装软件,选择已授予instanceRole的实例,配置完后,单击立即执行。
  5. 最后我们看到执行结果成功了,并且机器上的wordpress /var/www/html里的内容也变成了最新的,在执行详情可查看具体信息。

总结

以上我们完成了基于OOS+Jenkins的CICD流程,通过OOS我的软件功能,可以进行软件版本的管理和应用分批部署,在Jenkins中,也支持设置为直接调用OOS我的软件自动安装,以此来完成部署的全自动化,后续我们还将介绍如何用OOS+Jenkins自动更新镜像。

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
XML jenkins 机器人
JMeter+Ant+Jenkins实现接口自动化测试持续集成
本文介绍了如何使用Ant生成JMeter接口测试报告,并集成到Jenkins中实现自动化测试。内容涵盖Ant与JMeter环境配置、build.xml文件设置、测试执行及报告生成,同时包括Jenkins插件安装、项目配置和钉钉消息通知的集成,帮助实现持续测试与结果可视化。
468 0
|
24天前
|
jenkins Java 持续交付
使用 Jenkins 和 Spring Cloud 自动化微服务部署
随着单体应用逐渐被微服务架构取代,企业对快速发布、可扩展性和高可用性的需求日益增长。Jenkins 作为领先的持续集成与部署工具,结合 Spring Cloud 提供的云原生解决方案,能够有效简化微服务的开发、测试与部署流程。本文介绍了如何通过 Jenkins 实现微服务的自动化构建与部署,并结合 Spring Cloud 的配置管理、服务发现等功能,打造高效、稳定的微服务交付流程。
108 0
使用 Jenkins 和 Spring Cloud 自动化微服务部署
|
3月前
|
机器人 API
使用OOS实现RAM权限审批流授权及自动化撤销授权的概念验证
本方案通过阿里云OOS与ROS联动,实现RAM账户授权自动化。用户申请后由审批人确认,系统自动授予指定策略,并在预设时间后自动撤销权限,提升安全性与管理效率。
|
jenkins 持续交付 开发者
自动化部署:使用Jenkins和Docker实现持续集成与交付
【8月更文挑战第31天】本文旨在为读者揭示如何通过Jenkins和Docker实现自动化部署,从而加速软件开发流程。我们将从基础概念讲起,逐步深入到实际操作,确保即使是初学者也能跟上步伐。文章将提供详细的步骤说明和代码示例,帮助读者理解并应用这些工具来优化他们的工作流程。
|
8月前
|
监控 jenkins 测试技术
Ansible与Jenkins:自动化工具的对比
Ansible和Jenkins是自动化领域的两大巨头。Ansible专注于配置管理和任务自动化,采用无代理架构,使用YAML定义配置,具有幂等性和可扩展性。Jenkins则擅长持续集成和持续交付(CI/CD),支持丰富的插件生态系统,适用于自动化构建、测试和部署。两者各有优势,Ansible适合配置管理与大规模部署,Jenkins则在CI/CD方面表现出色。结合使用可创建更强大的自动化工作流,提升团队生产力和软件质量。选择工具时应根据具体需求决定。
|
10月前
|
运维 jenkins Java
Jenkins 自动化局域网管控软件构建与部署流程
在企业局域网管理中,Jenkins 作为自动化工具,通过配置源码管理、构建及部署步骤,实现了高效、稳定的软件开发与部署流程,显著提升局域网管控软件的开发与运维效率。
181 5
|
12月前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
12月前
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。
|
12月前
|
运维 监控 jenkins
运维自动化实践:利用Jenkins实现高效CI/CD流程
【10月更文挑战第18天】运维自动化实践:利用Jenkins实现高效CI/CD流程
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
256 1

热门文章

最新文章

推荐镜像

更多