читать контрольную сумму из артефакта с учетом URL артефакта - PullRequest
0 голосов
/ 27 сентября 2019

Я хочу прочитать контрольную сумму из артефакта по заданному URL-адресу артефакта и добавить его к атрибуту.Я пытался искать примеры, но люди жестко запрограммировали значение контрольной суммы, как показано ниже.Если я жестко закодирую значение, мне придется обновить его, когда у меня будет новый артефакт.Я не хочу этого делать.Пожалуйста, дайте мне знать, если так или иначе можно получить это значение из артефакта.У меня есть код для вычисления контрольной суммы в коде моего шеф-повара с использованием дайджеста.Я сравню контрольную сумму из артефакта и контрольную сумму, которую я вычислил в рецепте.

  source 'http://www.example.com/tempfiles/testfile'
  mode '0755'
  checksum '3a7dac00b1' # A SHA256 (or portion thereof) of the file.
end

To compare the computed checksum with the local checksum, I have seen people hardcoding local checksum value. Instead I want to read it from artifactory through chef. ex: 

```computed_checksum = Digest::SHA2.file(temp.path).hexdigest Artifactory_checksum = Read from artifactory ? 

if Artifactory_checksum != computed_chceksum throws error.....''''

1 Ответ

0 голосов
/ 27 сентября 2019
require 'open-uri'
require 'tempfile'

jar_file = 'https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.17/mysql-connector-java-8.0.17.jar'

temp = Tempfile.new
temp << open(jar_file).read
temp.flush

actual_sha1 = Digest::SHA1.file(temp.path).hexdigest

sha1_file = 'https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.17/mysql-connector-java-8.0.17.jar.sha1'

expected_sha1 = open(sha1_file).read.strip

p actual_sha1 == expected_sha1

...