Skip to content

Commit ad9ee0a

Browse files
Merge pull request #57 from Consensys/besu-latest-version
Support for Besu latest version
2 parents 857d4a8 + 97e4841 commit ad9ee0a

File tree

6 files changed

+35
-5
lines changed

6 files changed

+35
-5
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ All variables which can be overridden are stored in [defaults/main.yml](defaults
3131
| Name | Default Value | Description |
3232
| -------------- | ------------- | -----------------------------------|
3333
| `besu_build_from_source` | ___unset___ | When set to `true`, Besu is build from git sources. See also `besu_git_repo` and `besu_git_commit` |
34-
| `besu_version` | ___unset___ | __REQUIRED__ if `besu_build_from_source` is false. Version of Besu to install and run. All available versions are listed on our Besu [solutions](https://github.com/hyperledger/besu/releases) page |
34+
| `besu_version` | ___unset___ | __REQUIRED__ if `besu_build_from_source` is false. Version of Besu to install and run. All available versions are listed on our Besu [solutions](https://github.com/hyperledger/besu/releases) page. Can use `latest` to install the latest released version |
3535
| `besu_git_repo` | https://github.com/hyperledger/besu.git | The URL to use when cloning besu sources. Only necessary when `besu_build_from_source` is `true`. |
3636
| `besu_git_commit` | master | The git commit to use when building Besu from source. Can be a branchname, commit hash, or anything that's legal to be used as an argument to `git checkout`. Only used if `besu_build_from_source` is `true`. |
3737
| `besu_user` | besu | Besu user |

defaults/main.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ besu_user: besu
55
besu_group: "{{ besu_user }}"
66

77
# Version to install
8-
besu_download_url: "https://github.com/hyperledger/besu/releases/download/{{ besu_version }}/besu-{{ besu_version }}.tar.gz"
8+
besu_download_url: "https://github.com/hyperledger/besu/releases/download/{{ _besu_version }}/besu-{{ _besu_version }}.tar.gz"
9+
besu_latest_version_url: "https://api.github.com/repos/hyperledger/besu/releases/latest"
910

1011
# Building from source
1112
besu_build_from_source: false
@@ -14,7 +15,7 @@ besu_git_commit: "master"
1415

1516
# Directory paths
1617
besu_base_dir: "/opt/besu"
17-
besu_install_dir: "{{ besu_base_dir }}/besu-{{ besu_version }}"
18+
besu_install_dir: "{{ besu_base_dir }}/besu-{{ _besu_version }}"
1819
besu_current_dir: "{{ besu_base_dir }}/current"
1920
besu_node_private_key_file: ""
2021
besu_config_dir: "/etc/besu"

tasks/compile.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,4 @@
3939

4040
- name: Set Besu Version Fact
4141
set_fact:
42-
besu_version: "{{ besu_version_cmd.stdout }}"
42+
_besu_version: "{{ besu_version_cmd.stdout }}"

tasks/install.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444

4545
- name: Extract Besu source to install directory
4646
unarchive:
47-
src: "{{ '/tmp/besu/build/distributions/besu-' + besu_version + '.tar.gz' if besu_build_from_source else besu_download_url }}"
47+
src: "{{ '/tmp/besu/build/distributions/besu-' + _besu_version + '.tar.gz' if besu_build_from_source else besu_download_url }}"
4848
remote_src: yes
4949
dest: "{{ besu_install_dir }}"
5050
owner: "{{ besu_user }}"

tasks/latest.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
- name: Get the version response
2+
ansible.builtin.uri:
3+
url: "{{ besu_latest_version_url }}"
4+
method: GET
5+
status_code: 200
6+
register: _besu_latest_response
7+
8+
- name: Extract the Besu version
9+
ansible.builtin.set_fact:
10+
_besu_version: "{{ _besu_latest_response.json.tag_name }}"
11+
12+
- name: Validate the Besu version
13+
ansible.builtin.assert:
14+
that: _besu_version is search("^[0-9]+\.[0-9]+\.[0-9]+(-RC[0-9])?$")
15+
fail_msg: "Retrieved version [{{ _besu_version }}] is not a valid"
16+
17+
- name: Information
18+
debug:
19+
msg: "Latest Besu version is {{ _besu_version }}"

tasks/main.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,16 @@
1313
( besu_privacy_public_key_file != "" ) and
1414
( besu_sync_mode == "FAST" )
1515

16+
# Using internal variable _besu_version which allows override using set_fact
17+
- name: Set fact for Besu version
18+
ansible.builtin.set_fact:
19+
_besu_version: "{{ besu_version }}"
20+
21+
# Retrive latest version when besu_version == 'latest'
22+
- name: Include task to retrieve latest version
23+
ansible.builtin.include_tasks: "latest.yml"
24+
when: besu_version == 'latest'
25+
1626
- name: Include OS and distribution specific variables
1727
include_vars: "{{ item }}"
1828
with_first_found:

0 commit comments

Comments
 (0)