From 80ef93890cf30fcf1c40d95a048453da1b2e4796 Mon Sep 17 00:00:00 2001 From: Mikhail Bautin Date: Fri, 22 Mar 2019 14:55:03 -0700 Subject: [PATCH 1/5] Update sbt version and download link --- vars/main.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/vars/main.yml b/vars/main.yml index 9daddbb..3c9f6fe 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -1,10 +1,9 @@ --- sbt_playbook_version: "0.2.0" -sbt_version: "0.13.7" +sbt_version: "0.13.18" sbt_archive_name: "sbt-{{sbt_version}}" sbt_archive_file: "{{sbt_archive_name}}.tgz" -sbt_download_url: "https://dl.bintray.com/sbt/native-packages/sbt/{{sbt_version}}/{{sbt_archive_file}}" - +sbt_download_url: "https://piccolo.link/{{sbt_archive_file}}" sbt_lib_path: "/usr/share/sbt" sbt_lib_path_target: "{{sbt_lib_path}}/{{sbt_version}}" -sbt_link_target: "/usr/bin/sbt" \ No newline at end of file +sbt_link_target: "/usr/bin/sbt" From 25ec6488fba1b6f74778447ca03993a1eee85e2b Mon Sep 17 00:00:00 2001 From: Mikhail Bautin Date: Fri, 20 Sep 2019 15:23:29 -0700 Subject: [PATCH 2/5] Install sbt in /usr/local --- vars/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vars/main.yml b/vars/main.yml index 3c9f6fe..4ecf39f 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -4,6 +4,6 @@ sbt_version: "0.13.18" sbt_archive_name: "sbt-{{sbt_version}}" sbt_archive_file: "{{sbt_archive_name}}.tgz" sbt_download_url: "https://piccolo.link/{{sbt_archive_file}}" -sbt_lib_path: "/usr/share/sbt" +sbt_lib_path: "/usr/local/share/sbt" sbt_lib_path_target: "{{sbt_lib_path}}/{{sbt_version}}" -sbt_link_target: "/usr/bin/sbt" +sbt_link_target: "/usr/local/bin/sbt" From 72906203699e257cf72ce74a0ac58675680765c2 Mon Sep 17 00:00:00 2001 From: Mikhail Bautin Date: Wed, 4 Dec 2019 11:40:08 -0800 Subject: [PATCH 3/5] Don't re-download sbt if the correct version is already installed. Validate installed version. --- tasks/main.yml | 72 +++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 63 insertions(+), 9 deletions(-) diff --git a/tasks/main.yml b/tasks/main.yml index 075a013..31bf025 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -2,15 +2,69 @@ - name: Create /opt/src file: path=/opt/src state=directory recurse=yes -- name: Create lib dir - file: path={{sbt_lib_path_target}} state=directory recurse=yes +- name: Check installed sbt version + command: "'{{ sbt_link_target }}' -no-colors sbtVersion" + ignore_errors: yes + args: + strip_empty_ends: yes + register: sbt_version_check_result -- name: Download sbt v{{sbt_version}} - get_url: url={{sbt_download_url}} - dest=/opt/src/{{sbt_archive_file}} +- set_fact: + installed_sbt_version: "" -- name: Unpack sbt - unarchive: src=/opt/src/{{sbt_archive_file}} dest={{sbt_lib_path_target}} copy=no +- debug: + msg: "sbt_version_check_result.stdout={{ sbt_version_check_result.stdout }}" + when: sbt_version_check_result.rc == 0 -- name: Link sbt - file: state=link src={{sbt_lib_path_target}}/sbt/bin/sbt dest={{sbt_link_target}} +- set_fact: + installed_sbt_version: "{{ sbt_version_check_result.stdout | regex_search('(?<= )[0-9]+[.][0-9]+[.][0-9]+$') }}" + when: sbt_version_check_result.rc == 0 + +- set_fact: + correct_version_of_sbt_already_installed: "{{ installed_sbt_version == sbt_version }}" + +- debug: + msg: + - "installed_sbt_version={{ installed_sbt_version }}" + - "sbt version we want to install: {{ sbt_version }}" + - "correct_version_of_sbt_already_installed={{ correct_version_of_sbt_already_installed }}" + +- block: + - name: Create lib dir + file: + path: "{{sbt_lib_path_target}}" + state: directory + recurse: yes + + - name: Download sbt v{{sbt_version}} + get_url: + url: "{{sbt_download_url}} " + dest: "/opt/src/{{sbt_archive_file}}" + + - name: Unpack sbt + unarchive: + src: "/opt/src/{{sbt_archive_file}}" + dest: "{{sbt_lib_path_target}}" + copy: no + + - name: Link sbt + file: + state: link + src: "{{sbt_lib_path_target}}/sbt/bin/sbt" + dest: "{{sbt_link_target}}" + + - name: Validate installed sbt version + command: "'{{ sbt_link_target }}' -no-colors sbtVersion" + register: sbt_version_validation + + - set_fact: + finally_installed_sbt_version: "{{ sbt_version_validation.stdout | regex_search('(?<= )[0-9]+[.][0-9]+[.][0-9]+$') }}" + + - debug: + msg: "finally_installed_sbt_version={{ finally_installed_sbt_version }}" + + - assert: + that: + - finally_installed_sbt_version == sbt_version + + when: not correct_version_of_sbt_already_installed From f5ae0af909282e071416a8bd81f2ee16175542c6 Mon Sep 17 00:00:00 2001 From: Mikhail Bautin Date: Fri, 10 Jan 2020 08:49:10 -0800 Subject: [PATCH 4/5] Add retries to the sbt version validation task which frequently fails --- tasks/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tasks/main.yml b/tasks/main.yml index 31bf025..37c32db 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -56,6 +56,9 @@ - name: Validate installed sbt version command: "'{{ sbt_link_target }}' -no-colors sbtVersion" register: sbt_version_validation + retries: 5 + delay: 10 + until: sbt_version_validation is not failed - set_fact: finally_installed_sbt_version: "{{ sbt_version_validation.stdout | regex_search('(?<= )[0-9]+[.][0-9]+[.][0-9]+$') }}" From c2c7ee5176e55e94a158e1728d1078214d507054 Mon Sep 17 00:00:00 2001 From: Mikhail Bautin Date: Thu, 12 Nov 2020 22:15:02 -0600 Subject: [PATCH 5/5] Switch download URL to GitHub; verify downloaded archive's checksum. --- tasks/main.yml | 1 + vars/main.yml | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/tasks/main.yml b/tasks/main.yml index 37c32db..01551b1 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -40,6 +40,7 @@ get_url: url: "{{sbt_download_url}} " dest: "/opt/src/{{sbt_archive_file}}" + checksum: "{{ sbt_archive_checksum }}" - name: Unpack sbt unarchive: diff --git a/vars/main.yml b/vars/main.yml index 4ecf39f..b8c25f6 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -3,7 +3,10 @@ sbt_playbook_version: "0.2.0" sbt_version: "0.13.18" sbt_archive_name: "sbt-{{sbt_version}}" sbt_archive_file: "{{sbt_archive_name}}.tgz" -sbt_download_url: "https://piccolo.link/{{sbt_archive_file}}" -sbt_lib_path: "/usr/local/share/sbt" +sbt_url_prefix: "https://github.com/sbt/sbt/releases/download" +sbt_download_url: "{{ sbt_url_prefix }}/v{{ sbt_version }}/{{ sbt_archive_file }}" +sbt_archive_checksum: "sha256:afe82322ca8e63e6f1e10fc1eb515eb7dc6c3e5a7f543048814072a03d83b331" +sbt_install_prefix: /usr/local +sbt_lib_path: "{{ sbt_install_prefix }}/share/sbt" sbt_lib_path_target: "{{sbt_lib_path}}/{{sbt_version}}" -sbt_link_target: "/usr/local/bin/sbt" +sbt_link_target: "{{ sbt_install_prefix }}/bin/sbt"