自动构建安装过程

时间:2018-01-18 15:55:40

标签: linux unix scripting build-automation

我在我公司的基于SaaS的产品上工作,该产品托管在私有云上。因此,每当DEV团队提供新的BOM包时。在公共共享文件夹中,我们 - 测试团队在我们的应用程序服务器上安装构建(3个多节点服务器,其中一个是主服务器,另外两个是辅助服务器)。

构建安装完全是手动完成的。在三个应用服务器(linux机器)上,我们遵循的步骤如下所示

  1. 停止所有应用服务器
  2. 从代码存储库服务器复制最新版本(复制.zip构建文件)
  3. 如果文件夹位于appserver中的文件夹(使用unzip命令),则将内容解压缩
  4. 在所有三个文件夹上运行现有运行构建的备份(命令类似于 - ant -f primaryBackup.xml,ant-f secondary backup.xml)
  5. 然后在所有三个服务器上运行命令命令类似于 - ant -f primaryInstall.xml,ant -f secondaryInstall.xml)
  6. 然后重新启动所有服务器并检查是否已成功应用最新版本。
  7. 问题:我希望自动完成整个过程,这样我只需要安装最新的内部版本号,脚本就可以完成整个安装。

    目前我不明白如何做到这一点?我应该从哪里开始?这可行吗?整个过程的shell脚本是解决方案吗?

1 个答案:

答案 0 :(得分:0)

有许多构建自动化/持续部署工具可以帮助您获得自动化部署管道的解决方案。一些比较流行的配置自动化工具有puppet,chef,ansible和saltstack。我只有ansible和厨师的经验,但我的解释是厨师是更“用户友好”的选择。我会从那里开始......(厨师使用ruby语言,ansible使用python)。 我可以回答有关这方面的具体问题,但小时原始问题真的是开放式和广泛的。 免费教程:https://learn.chef.io/

编辑:我不建议使用bash脚本配置您的服务器/部署......这通常很麻烦,随着您的自动化程度的增长(可能会这样),您的代码将逐渐变得无法管理。使用像chef这样的东西,您可以设置定期检查存储库中的新代码,并在检测到新代码时(或在满足某些条件时)进行部署。你可以在ruby bock中编写strait bash代码,远程停止/启动这样的服务(例子):

bash 'Copying the conf file' do
    cwd "current/working/directory"
    user 'user_name'
    code <<-EOH
    nohup ./startservice.sh &
    sleep 2m
    nohup ./startservice.sh &
    sleep 3m
  EOH
end

从git复制代码例如...我在这个例子中假设github,因为我不知道你的代码所在的位置:

git "/opt/mysources/couch" do
  repository "git://git.apache.org/couchdb.git"
  reference "master"
  action :sync
  ssh_wrapper "/some/path/git_wrapper.sh"
end

让我们说你的代码在其他任何地方..例如竹子或詹金斯......有一个红宝石/厨师资源或某种方式使用海峡红宝石代码来调用它。

这是“你”和你的团队必须为...制定战略的事情。

您可以使用tar资源解压缩文件:

tar_package 'http://pgfoundry.org/frs/download.php/1446/pgpool-3.4.1.tar.gz' do
  prefix '/usr/local'
  creates '/usr/local/bin/pgpool'
end

或使用通用linux命令:

execute 'extract_some_tar' do
  command 'tar xzvf somefile.tar.gz'
  cwd '/directory/of/tar/here'
  not_if { File.exists?("/file/contained/in/tar/here") }
end

您可以按照我编写第一个代码块的方式启动服务器(假设它们是服务..如果您需要重新启动实际的服务器,那么您可以运行init 6或其他。< / p>

这只是这些实用程序提供的灵活性的一个例子