From 6a0ab4c85bfd211352d420937f9f5398591d22df Mon Sep 17 00:00:00 2001 From: eileen-xue Date: Thu, 9 Jul 2026 11:34:32 +1000 Subject: [PATCH 1/6] Update shelley installation & validation --- README.md | 2 +- build/ansible/build-bioshell.yml | 2 +- build/ansible/roles/common/tasks/main.yml | 14 +- build/ansible/roles/nextflow/tasks/main.yml | 18 ++- .../ansible/roles/shelley-bio/tasks/main.yml | 122 ------------------ build/ansible/roles/shelley/tasks/main.yml | 42 ++++++ .../roles/validate_shelley-bio/tasks/main.yml | 37 ------ .../roles/validate_shelley/tasks/main.yml | 47 +++++++ build/ansible/test-bioshell.yml | 2 +- build/ansible/vars/tool-versions.yml | 15 ++- 10 files changed, 121 insertions(+), 180 deletions(-) delete mode 100644 build/ansible/roles/shelley-bio/tasks/main.yml create mode 100644 build/ansible/roles/shelley/tasks/main.yml delete mode 100644 build/ansible/roles/validate_shelley-bio/tasks/main.yml create mode 100644 build/ansible/roles/validate_shelley/tasks/main.yml diff --git a/README.md b/README.md index f201b92..bed6fa4 100644 --- a/README.md +++ b/README.md @@ -204,7 +204,7 @@ packer init . ### Step 2: Prepare Packer build configuration -Before running the build, review and update `[platform_name].pkrvars.hcl` to ensure the values match your OpenStack environment. If using a prepared config skip to step 3. +Before running the build, review and update `[platform_name].pkrvars.hcl` in [`packer vars`](build/packer-vars) to ensure the values match your OpenStack environment. If using a prepared config skip to step 3. **Note: Example working configurations for [Nectar](build/packer-vars/nectar.pkrvars.hcl) and [Nirin](build/packer-vars/nirin.pkrvars.hcl) are included and were last successfully tested on 2 February 2026. The Nirin configuration requires you to add your project [network](#network-cloud-dependant).** diff --git a/build/ansible/build-bioshell.yml b/build/ansible/build-bioshell.yml index ce7561d..b743f70 100644 --- a/build/ansible/build-bioshell.yml +++ b/build/ansible/build-bioshell.yml @@ -13,4 +13,4 @@ - nextflow - rstudio - cvmfs - - shelley-bio \ No newline at end of file + - shelley \ No newline at end of file diff --git a/build/ansible/roles/common/tasks/main.yml b/build/ansible/roles/common/tasks/main.yml index f435581..5a163f1 100644 --- a/build/ansible/roles/common/tasks/main.yml +++ b/build/ansible/roles/common/tasks/main.yml @@ -158,11 +158,11 @@ - name: Create ansible modulefile copy: - dest: "/apps/Modules/modulefiles/ansible/{{ ansible_version.string }}" + dest: "/apps/Modules/modulefiles/ansible/{{ ansible_target_version }}" content: | #%Module1.0 - prepend-path PATH "/apps/ansible/{{ ansible_version.string }}/bin" + prepend-path PATH "/apps/ansible/{{ ansible_target_version }}/bin" - name: Ensure motd.d directory exists file: @@ -193,9 +193,9 @@ # (_ \/ \_, # # `uu----uu' # # Basic commands: # - # shelley-bio find # - # shelley-bio search "" # - # shelley-bio versions # - # shelley-bio build # - # shelley-bio interactive # + # shelley find # + # shelley search "" # + # shelley versions # + # shelley build # + # shelley interactive # ################################################################## diff --git a/build/ansible/roles/nextflow/tasks/main.yml b/build/ansible/roles/nextflow/tasks/main.yml index 103ce93..eb27d91 100644 --- a/build/ansible/roles/nextflow/tasks/main.yml +++ b/build/ansible/roles/nextflow/tasks/main.yml @@ -5,10 +5,20 @@ state: present when: ansible_os_family == "Debian" -- name: Set Java {{ java_version }} as default - alternatives: - name: java - path: /usr/lib/jvm/java-{{ java_version }}-openjdk-amd64/bin/java +- name: Register Java {{ java_version }} as an alternative + command: > + update-alternatives --install /usr/bin/java java + /usr/lib/jvm/java-{{ java_version }}-openjdk-amd64/bin/java 1 + args: + creates: /etc/alternatives/java + when: ansible_os_family == "Debian" + +- name: Set Java {{ java_version }} as the active alternative + command: > + update-alternatives --set java + /usr/lib/jvm/java-{{ java_version }}-openjdk-amd64/bin/java + register: java_alt_set + changed_when: "'link currently' not in java_alt_set.stdout" when: ansible_os_family == "Debian" - name: Create Nextflow directories diff --git a/build/ansible/roles/shelley-bio/tasks/main.yml b/build/ansible/roles/shelley-bio/tasks/main.yml deleted file mode 100644 index feb65b6..0000000 --- a/build/ansible/roles/shelley-bio/tasks/main.yml +++ /dev/null @@ -1,122 +0,0 @@ ---- -- name: Ensure Python 3 and pip are installed - apt: - name: - - python3 - - python3-pip - - python3-venv - state: present - update_cache: yes - -- name: Ensure Git is installed - apt: - name: git - state: present - - -- name: Create installation directory - file: - path: /opt/shelley-bio - state: directory - owner: root - group: root - mode: '0755' - recurse: yes - -- name: Clone Shelley Bio repository - git: - repo: https://github.com/Sydney-Informatics-Hub/shelley-bio.git - dest: /opt/shelley-bio - version: main - force: yes - depth: 1 - -- name: Create Shelley Bio virtual environment - command: python3 -m venv /opt/shelley-bio-env - args: - creates: /opt/shelley-bio-env/bin/activate - -- name: Upgrade pip setuptools and wheel in venv - pip: - name: - - pip - - setuptools - - wheel - state: latest - virtualenv: /opt/shelley-bio-env - -- name: Install Shelley Bio dependencies into venv - pip: - requirements: /opt/shelley-bio/requirements.txt - state: present - virtualenv: /opt/shelley-bio-env - -- name: Install Shelley Bio package into venv - pip: - name: /opt/shelley-bio - editable: yes - state: present - virtualenv: /opt/shelley-bio-env - -- name: Fix shelley-bio entry point to use asyncio.run - copy: - dest: /opt/shelley-bio-env/bin/shelley-bio - owner: root - group: root - mode: '0755' - content: | - #!/opt/shelley-bio-env/bin/python3 - import sys - from shelley_bio.client.cli import main - if __name__ == "__main__": - sys.argv[0] = sys.argv[0].removesuffix(".exe") - sys.exit(main()) - -- name: Find toolfinder_meta.yaml in source - command: find /opt/shelley-bio -name "toolfinder_meta.yaml" - register: yaml_find - changed_when: false - -- name: Find galaxy_singularity_cache.json.gz in source - command: find /opt/shelley-bio -name "galaxy_singularity_cache.json.gz" - register: cache_find - changed_when: false - -- name: Symlink toolfinder_meta.yaml to venv site-packages - file: - src: "{{ yaml_find.stdout }}" - dest: /opt/shelley-bio-env/lib/python3.12/site-packages/toolfinder_meta.yaml - state: link - force: yes - -- name: Symlink galaxy_singularity_cache.json.gz to venv site-packages - file: - src: "{{ cache_find.stdout }}" - dest: /opt/shelley-bio-env/lib/python3.12/site-packages/galaxy_singularity_cache.json.gz - state: link - force: yes - -- name: Add shelley-bio venv to system PATH - lineinfile: - path: /etc/environment - regexp: '^PATH=' - line: 'PATH="{{ updated_path }}"' - state: present - vars: - current_path: "{{ ansible_env.PATH }}" - updated_path: "/opt/shelley-bio-env/bin:{{ current_path }}" - -- name: Remove redundant wrapper script - file: - path: /usr/local/bin/shelley-bio - state: absent - -- name: Create system-wide launcher script - copy: - dest: /usr/local/bin/shelley-bio - owner: root - group: root - mode: '0755' - content: | - #!/usr/bin/env bash - exec /opt/shelley-bio-env/bin/shelley-bio "$@" diff --git a/build/ansible/roles/shelley/tasks/main.yml b/build/ansible/roles/shelley/tasks/main.yml new file mode 100644 index 0000000..b26e0bf --- /dev/null +++ b/build/ansible/roles/shelley/tasks/main.yml @@ -0,0 +1,42 @@ +--- +- name: Ensure prerequisites are installed (python3, curl, git) + apt: + name: + - python3 + - curl + - git + state: present + update_cache: yes + +- name: Create /opt/uv directory + file: + path: /opt/uv + state: directory + owner: root + group: root + mode: '0755' + +- name: Check if uv is already installed + stat: + path: /opt/uv/uv + register: uv_binary + +- name: Install uv system-wide into /opt/uv + shell: curl -LsSf https://astral.sh/uv/install.sh | env UV_INSTALL_DIR=/opt/uv sh + args: + executable: /bin/bash + when: not uv_binary.stat.exists + +- name: Verify uv installation + command: /opt/uv/uv --version + register: uv_version + changed_when: false + +- name: Install shelley into system tool location, linked onto PATH + command: > + /opt/uv/uv tool install git+https://github.com/Sydney-Informatics-Hub/shelley + environment: + UV_TOOL_DIR: /opt/uv/tools + UV_TOOL_BIN_DIR: /usr/local/bin + args: + creates: /usr/local/bin/shelley \ No newline at end of file diff --git a/build/ansible/roles/validate_shelley-bio/tasks/main.yml b/build/ansible/roles/validate_shelley-bio/tasks/main.yml deleted file mode 100644 index ef36a2b..0000000 --- a/build/ansible/roles/validate_shelley-bio/tasks/main.yml +++ /dev/null @@ -1,37 +0,0 @@ ---- -- name: Check launcher script exists - stat: - path: /usr/local/bin/shelley-bio - register: shelley_bin - failed_when: not shelley_bin.stat.exists - -- name: Check launcher is executable - stat: - path: /usr/local/bin/shelley-bio - register: shelley_exec - failed_when: not shelley_exec.stat.executable - -- name: Run shelley-bio CLI test - command: shelley-bio search "quality control" - changed_when: false - register: shelley_test - failed_when: false - -- name: Report CLI test result - debug: - msg: "{{ 'OK' if shelley_test.rc == 0 else 'WARNING: shelley-bio search CLI test failed' }}" - -- name: Check MOTD exists - stat: - path: /etc/motd.d/bioshell - register: motd_file - -- name: Assert MOTD exists - assert: - that: - - motd_file.stat is defined - - motd_file.stat.exists - -- name: Check MOTD contains BioShell marker - command: grep -q "BioShell" /etc/motd.d/bioshell - changed_when: false diff --git a/build/ansible/roles/validate_shelley/tasks/main.yml b/build/ansible/roles/validate_shelley/tasks/main.yml new file mode 100644 index 0000000..2091021 --- /dev/null +++ b/build/ansible/roles/validate_shelley/tasks/main.yml @@ -0,0 +1,47 @@ +--- +- name: Check shelley executable exists + stat: + path: /usr/local/bin/shelley + register: shelley_bin + failed_when: not shelley_bin.stat.exists + +- name: Check shelley executable is executable + failed_when: not shelley_bin.stat.executable + assert: + that: + - shelley_bin.stat.executable + +- name: Run shelley --help as a smoke test + command: shelley --help + changed_when: false + register: shelley_help + failed_when: false + +- name: Report shelley --help result + debug: + msg: "{{ 'OK' if shelley_help.rc == 0 else 'WARNING: shelley --help failed' }}" + +- name: Run shelley --version as a smoke test + command: shelley --version + changed_when: false + register: shelley_version + failed_when: false + +- name: Report shelley --version result + debug: + msg: "{{ 'OK' if shelley_version.rc == 0 else 'WARNING: shelley --version failed' }}" + +- name: Check MOTD exists + stat: + path: /etc/motd.d/bioshell + register: motd_file + +- name: Assert MOTD exists + assert: + that: + - motd_file.stat is defined + - motd_file.stat.exists + +- name: Check MOTD contains BioShell marker + command: grep -q "BioShell" /etc/motd.d/bioshell + changed_when: false \ No newline at end of file diff --git a/build/ansible/test-bioshell.yml b/build/ansible/test-bioshell.yml index 9bdc600..77af173 100644 --- a/build/ansible/test-bioshell.yml +++ b/build/ansible/test-bioshell.yml @@ -11,4 +11,4 @@ - validate_nextflow - validate_jupyter - validate_rstudio - - validate_shelley-bio \ No newline at end of file + - validate_shelley \ No newline at end of file diff --git a/build/ansible/vars/tool-versions.yml b/build/ansible/vars/tool-versions.yml index 0354704..f9c3ee7 100644 --- a/build/ansible/vars/tool-versions.yml +++ b/build/ansible/vars/tool-versions.yml @@ -1,22 +1,23 @@ # ============================================================ # Tool versions — update here, everything else follows # ============================================================ -singularity_version: "4.4.1" +singularity_version: "4.5.0" singularity_prefix: "/opt/singularity" shpc_version: "0.1.33" -go_version: "1.26.1" +go_version: "1.26.4" os: "linux" arch: "amd64" +ansible_target_version: "2.16.3" java_version: "21" -nextflow_version: "25.10.4" -nfcore_version: "3.5.2" +nextflow_version: "26.04.4" +nfcore_version: "4.0.2" -rstudio_version_full: "2023.12.1-402" -rstudio_version: "2023.12.1" +rstudio_version_full: "2026.06.0-242" +rstudio_version: "2026.06.0" # Each platform file overrides this proxy variable cvmfs_quota_limit: 4096 @@ -31,4 +32,4 @@ module_base_opt: "/opt/Modules/modulefiles" # Common tools snakemake_version: "7.32.4" r_version: "4.3.3" -jupyter_version: "2026.04" \ No newline at end of file +jupyter_version: "2026.07" \ No newline at end of file From 31dd4227eaea56b1ae0bae98e727cc3930704992 Mon Sep 17 00:00:00 2001 From: eileen-xue Date: Thu, 9 Jul 2026 12:11:30 +1000 Subject: [PATCH 2/6] Update files --- CHANGELOG.md | 7 +++++++ README.md | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index faa2668..e7330ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,3 +11,10 @@ See [docs/MAINTENANCE.md](docs/MAINTENANCE.md) for the versioning policy and rel ### Added - GitHub Action (`update-tool-versions`) that checks pinned tool versions against upstream on a schedule (1 January and 1 July) and opens a pull request with any updates. See [docs/MAINTENANCE.md](docs/MAINTENANCE.md#5-github-actions-automation). + +### Fixed +- Update tools to the latest version [PR #13](https://github.com/AustralianBioCommons/BioShell/pull/13). +- Updated README based on review feedback [Issue #14](https://github.com/AustralianBioCommons/BioShell/issues/14). + +### Changed +- Renamed Shelley and updated installation to use `uv`. diff --git a/README.md b/README.md index bed6fa4..b5acde3 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ NOTE: Do not select an external/public network here In the Security Groups tab, ensure the following are listed under Allocated by clicking the up arrow in the Avialable groups: - **default** that allows outbound traffic and internal communication -- **SSH-access security group** that allows inbound TCP port 22 from your IP or network +- **SSH-access security group** that allows inbound TCP port 22 from your IP or network. Follow the [guide](https://tutorials.rc.nectar.org.au/sec-groups-101/03-create) to create one if you don't already have one. SSH access is required to log in to the instance. From a19b477e50c44bdb97fb2dcd980bd54b6db50f2c Mon Sep 17 00:00:00 2001 From: eileen-xue Date: Thu, 9 Jul 2026 12:29:23 +1000 Subject: [PATCH 3/6] Update changelog --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e7330ef..0058058 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ See [docs/MAINTENANCE.md](docs/MAINTENANCE.md) for the versioning policy and rel ### Fixed - Update tools to the latest version [PR #13](https://github.com/AustralianBioCommons/BioShell/pull/13). -- Updated README based on review feedback [Issue #14](https://github.com/AustralianBioCommons/BioShell/issues/14). +- Update README based on feedback [Issue #14](https://github.com/AustralianBioCommons/BioShell/issues/14). ### Changed -- Renamed Shelley and updated installation to use `uv`. +- Rename Shelley and update installation to use `uv`. From 1dd013c2fce99427f11533c2c5530a44f78bc0e6 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Fri, 10 Jul 2026 02:50:07 +0000 Subject: [PATCH 4/6] put uv on path, autoload singularity --- build/ansible/roles/shelley/tasks/main.yml | 7 +++++++ build/ansible/roles/singularity/tasks/main.yml | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/build/ansible/roles/shelley/tasks/main.yml b/build/ansible/roles/shelley/tasks/main.yml index b26e0bf..a57c40a 100644 --- a/build/ansible/roles/shelley/tasks/main.yml +++ b/build/ansible/roles/shelley/tasks/main.yml @@ -32,6 +32,13 @@ register: uv_version changed_when: false +- name: Symlink uv onto PATH + file: + src: /opt/uv/uv + dest: /usr/local/bin/uv + state: link + force: yes + - name: Install shelley into system tool location, linked onto PATH command: > /opt/uv/uv tool install git+https://github.com/Sydney-Informatics-Hub/shelley diff --git a/build/ansible/roles/singularity/tasks/main.yml b/build/ansible/roles/singularity/tasks/main.yml index b9325d8..1498730 100644 --- a/build/ansible/roles/singularity/tasks/main.yml +++ b/build/ansible/roles/singularity/tasks/main.yml @@ -93,6 +93,13 @@ module-whatis "Sets up the Singularity system in your environment" prepend-path PATH "{{ singularity_prefix }}/{{ singularity_version }}/bin" +- name: Auto-load the singularity module for every login shell + lineinfile: + path: /etc/environment + regexp: '^LMOD_SYSTEM_DEFAULT_MODULES=' + line: 'LMOD_SYSTEM_DEFAULT_MODULES="singularity"' + state: present + - name: Install shpc shell: | mkdir -p /opt/shpc/bin From 3639dc43c4b006f3e95234379874bde08a219b06 Mon Sep 17 00:00:00 2001 From: Mitchell O'Brien Date: Fri, 10 Jul 2026 02:54:12 +0000 Subject: [PATCH 5/6] fix typo add github --- build/ansible/roles/common/tasks/main.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build/ansible/roles/common/tasks/main.yml b/build/ansible/roles/common/tasks/main.yml index 5a163f1..ba09cfc 100644 --- a/build/ansible/roles/common/tasks/main.yml +++ b/build/ansible/roles/common/tasks/main.yml @@ -181,6 +181,9 @@ # # # Welcome to BioShell! # # # + # To learn how BioShell is built, visit: # + # https://github.com/AustralianBioCommons/BioShell # + # # # A range of commonly used bioinformatics software is available # # via CVMFS. # # # @@ -188,7 +191,7 @@ # cvmfs_config probe # # # # If you need help finding and installing software, # - # ask Shelley-Bio # + # ask Shelley. # # _ .----. # # (_ \/ \_, # # `uu----uu' # From f7d01b82a8f017dfd0ad2947915815df4e8a92d4 Mon Sep 17 00:00:00 2001 From: Mitchell O'Brien Date: Fri, 10 Jul 2026 03:55:52 +0000 Subject: [PATCH 6/6] Add link to documentation --- build/ansible/roles/common/tasks/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build/ansible/roles/common/tasks/main.yml b/build/ansible/roles/common/tasks/main.yml index ba09cfc..b69fe6a 100644 --- a/build/ansible/roles/common/tasks/main.yml +++ b/build/ansible/roles/common/tasks/main.yml @@ -184,6 +184,9 @@ # To learn how BioShell is built, visit: # # https://github.com/AustralianBioCommons/BioShell # # # + # Documentation is also available at: # + # https://sih.tools/bioshell-guide # + # # # A range of commonly used bioinformatics software is available # # via CVMFS. # # #