У меня есть ресурс шеф-повара, который должен вернуть версию. Я искал и финансировал лучший способ опубликовать его как атрибут узла. Вот код ресурса (dj_artifactory_version):создать атрибут узла/возвращаемое значение в пользовательском ресурсе для шеф-повара
require "open-uri"
require "json"
def whyrun_supported?
true
end
def get_version(name, user, pass, type, organization, art_module, repos, version)
if (type.match(/snapshot$/i) and version.match(/latest$/i))
string_object = open("https://artifactory.io/artifactory/api/search/versions?g=#{organization}&v=*.*.*&a=#{art_module}&repos=#{repos}", :http_basic_authentication=>["#{user}", "#{pass}"], :ssl_verify_mode=>OpenSSL::SSL::VERIFY_NONE)
json_file = JSON.parse(string_object.read)
version_array = Array.new
json_file["results"].each do |version|
version_array.push(version["version"])
end
unique_versions=(version_array.uniq).max
node.set['artifact']['snapshot']['latest'] = unique_versions
Теперь я использую этот шеф-ресурс в моем рецепте, чтобы получить версию:
dj_artifactory_version "test" do
type "snapshot" # options - snapshot/release
organization "djcm.billing.api.admin" # layout.organization in artifactory properties.
modules "paypal" # layout.properties in artifactory properties.
repos "djcm-zip-local" # repository name in artifactory
version "latest" #latest/oldest
end
p "#node{['artifact']['snapshot']['latest']}"
я создаю по умолчанию [ «артефакт»] [ «снимок»] ['latest'] в default.rb со значением, но здесь даже после запуска моего рецепта старое значение не изменяется. Интересно, когда я печатаю то же самое в своем ресурсе, он печатает узел с новым значением.
Что я делаю неправильно, и есть ли лучший способ опубликовать значение, используя свой собственный ресурс?
Это сработало. Это была просто проблема слияния и компиляции. Поскольку я устанавливаю атрибут узла во время схождения, его можно получить с помощью ленивого {} – Scooby