开发者社区> billy.lb> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

云上持续交付实践系列5 --- Ruby 篇

简介: 本系列的ruby篇终于完成,欢迎ruby爱好者来使用我们的产品,同时欢迎拍砖!
+关注继续查看

本文会演示如何在CRP上编译并部署一个Ruby应用。

相关技术栈和用到的网站

本文将以ruby-china为例,使用CRP平台实现该项目的编译、测试和最终部署。

    1. Rails作为Web框架
    1. Postgres作为数据库存储
    1. Memcached作为分布式内存对象缓存系统
    1. Redis作为Key-Value数据库
    1. Elasticsearch则作为一个简单的搜索引擎

本次实践中为了更好地使用代码库服务,我们将ruby-china的代码迁移到了阿里云Code中,在Gemfile里面使用速度和稳定性更好的https://ruby.taobao.org代替了原官方源(国内使用,迫不得已,你懂的)。有兴趣的可以直接clone或者fork: 地址

部署环境

本例中,使用一台有公网IP且开放了22端口的ecs作为部署目标:

  • 120.xx.xx.137

CRP具备的能力和还需要做的准备工作

CRP在3月份针对不同的语言添加了相应的编译/测试插件,[CRP 3月产品更新日志]多语言持续交付的支持。针对ruby语言,CRP提供了2.1,2.2和2.3三个版本,并预装了rails框架。然而,对于Postgres、Memcached等,还需要我们手动安装。
CRP上配置工作流的基本操作,可以参考云上持续交付实践系列1 --- java 篇

编译/测试命令及相关配置

在编译/测试插件里面,我们将填入以下命令:

  • 安装所依赖的Postgres,Memcached,redis-server、elasticsearch(依赖于java)和nodejs(coffeejs需要)
apt-get update && apt-get install -y postgresql memcached redis-server
apt-get install -y openjdk-7-jre nodejs
curl -L -O https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.2/elasticsearch-2.3.2.tar.gz
tar -xvf elasticsearch-2.3.2.tar.gz && ./elasticsearch-2.3.2/bin/elasticsearch -Des.insecure.allow.root=true -d
  • 后台运行刚刚安装的依赖
redis-server --daemonize yes
/etc/init.d/memcached start
/etc/init.d/elasticsearch start
sed -i 's/local   all             postgres                                peer/local   all             postgres                                trust/g' /etc/postgresql/9.3/main/pg_hba.conf
/etc/init.d/postgresql restart
  • 准备测试所需的数据库database及相应的配置文件
psql -c "CREATE USER \"root\" WITH CREATEDB PASSWORD 'root';" -U postgres
psql -c "create database \"ruby-china-test\" WITH OWNER=\"root\";" -U postgres
cp config/config.yml.default config/config.yml
cp config/database.yml.default config/database.yml
cp config/redis.yml.default config/redis.yml
cp config/elasticsearch.yml.default config/elasticsearch.yml
cp config/secrets.yml.default config/secrets.yml
sed -i "s/SETUP_REDIS_HOST/127.0.0.1/g" config/redis.yml
sed -i "s/SETUP_REDIS_PORT/6379/g" config/redis.yml
  • 安装项目依赖的库,执行数据库数据迁移,并执行测试
bundle install
RAILS_ENV=test bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake

ruby-china作为相对成熟的ruby项目,其测试代码还是相当完备的,这也使得尽管我们采用了淘宝的ruby源,但编译/测试任务运行时间还是较长,实测时长为27分钟


_2016_05_05_8_21_55

部署命令及相关配置

首先在部署的目标机器上装好Ruby,Postgres等,同时创建出数据库并完成数据迁移。部署命令相对简单(因为本台机器已经安装了ruby 2.3.1,且用于其他场景,所以在启动前手动修改Gemfile中ruby 的版本):

cd /root/ruby-china
tar -xvf package.tgz
sed -i 's/2.3.0/2.3.1/g' Gemfile 
puma --daemon

最后我们可以看到ruby-china已经部署成功!


_2016_05_06_8_50_06


_2016_05_05_10_16_19

目前存在的问题

可以看到,因为目前提供的语言插件只是安装了语言相关的组建,跑集成测试需要的数据库、redis等都需要用户自主安装,一方面略显繁琐另一方面也延长了所需的时间。CRP团队正在努力改进,相信不久的将来,更加如丝般顺滑的编译/测试功能将呈现在大家面前!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ruby打开文件并返回所有行
irb(main):020:0> f=File.open("/home/dongjichao/c/3_1.c")=> #irb(main):021:0> f.each do |line|irb(main):022:1*    puts lineirb(main):023:1> end#include...
309 0
云上持续交付实践系列3 --- Python 篇
云上持续交付实践系列3 --- Python 篇 阿里云持续交付平台CRP(Continuous Release Platform)作为一款开发人员手里的居家旅行,杀人越货的利器,必然有其广泛的应用场景。本文将会演示如何在如何使用阿里云持续交付平台部署一个Python应用。Python作为一种脚本
3673 0
CodePipeline 持续集成/持续交付快速入门-- Node.js篇
本文演示如何使用Codepipeline构建一个Node.js项目并部署到ECS。
1673 0
《Python自动化运维:技术与最佳实践》一导读
由于Python具有脚本语言的特点,学习资源多,社区非常活跃,且在Linux平台默认已安装等优势。Python已经是当今运维领域最流行程的开发语言之一
2502 0
云上持续交付实践系列2--- go篇
本文通过一个开源的web项目演示了如果在阿里云持续交付平台上编译并部署go语言项目。go 语言在阿里云持续交付平台上已经得到了很好的支持,本篇文章主要讲的编译过程的一些技巧和注意点,采用的项目是github 开源的go版本的代码托管服务gogs。
3909 0
N个技巧,编写更高效 Dockerfile|云效工程师指北
云原生时代下软件的构建和部署离不开容器技术。提到容器,几乎大家下意识都会联想到 Docker 。而 Docker 中有两个非常重要的概念,一个是Image(镜像),一个是Container(容器)。前者是一个静态视图,打包了应用的目录结构、运行环境等;后者是一个动态视图(进程),展示的是程序的运行状态(cpu、memory、storage)等信息。接下来的文章主要分享的是如何编写能使 Dockerfile 构建过程更快速、构建镜像更小的技巧。
0 0
go程序基于阿里云CodePipeline的一次devops实践
背景 最近朋友有个项目代码托管用的码云,测试服务器(阿里云ECS)只有一台,三四个人开发,于是想基于阿里云的CodePipeline快速打造一套自动化cicd的流程,使用docker来进行多套环境部署。
928 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
如何打造易用的DevOps工具链
立即下载
《基于阿里云的 Nodejs 稳定性实践》
立即下载
灵雀云持续集成和持续交付功能实践
立即下载