ruby - Chef 传递修订变量以部署资源

标签 ruby git deployment chef-infra

我正在尝试将要部署的 git 分支传递给 Chef 部署资源,但它不起作用,我猜这是因为资源是单独编译然后才执行的?但我对 Ruby 的理解可能是有限的。

所以我正在尝试这样做:

ruby_block 'revision' do
  block do
    # Some code determines the branch to be deployed
    branch = 'master'

    node.run_state['branch'] = branch

  end
end

deploy "#{node['path']['web']}" do
  action :deploy
  repository "#{node['git']['repository']}"
  revision "#{node.run_state['branch']}"
end

但是,部署资源并未通过该变量。

这是解决此问题的正确方法吗?有更好的方法吗?

提前致谢!

最佳答案

目前 chef 编译你的 deploy 资源 ruby_block 资源还没有运行,所以 node.run_state['branch'] 没有设置。您必须将您的deploy 资源移动到ruby_block 并动态定义它。

ruby_block 'revision' do
  block do
    # Some code determines the branch to be deployed
    branch = 'master'

    node.run_state['branch'] = branch

    depl = Chef::Resource::Deploy.new node['path']['web'], run_context
    depl.repository node['git']['repository']
    depl.revision node.run_state['branch']
    depl.run_action :deploy
  end
end

关于ruby - Chef 传递修订变量以部署资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13019925/

相关文章:

arrays - Ruby 内部展平(数组的数组)

ruby-on-rails - Rails 5 使用已在 PostgreSQL 中创建的用户表生成设计

Git、Github、修复提交历史记录

远程存储库分支上的 GIT 符号引用(别名)?

deployment - 如何使用 rpm 更新/替换现有文件?

ruby - Ruby 哈希值的频率

ruby - Rake 依赖不执行但调用有效

python - 如何使用 pipfile 在自定义 git 分支的 pipfile 包中指定?

java - 如何在 Java Web 应用程序中同时使用 http 服务器和应用程序服务器

java - Maven 安装后出现问题 - mvn install 尝试下载无法访问的文件