Unnamed Skill

Maintain and upgrade the bgruening/docker-galaxy project: bump Galaxy/Ubuntu versions, update Ansible roles and scheduler support, adjust startup/CI/tests, and manage CVMFS.

$ 설치

git clone https://github.com/bgruening/docker-galaxy /tmp/docker-galaxy && cp -r /tmp/docker-galaxy/skills/galaxy-docker ~/.claude/skills/docker-galaxy

// tip: Run this command in your terminal to install the skill


name: galaxy-docker description: Maintain and upgrade the bgruening/docker-galaxy project: bump Galaxy/Ubuntu versions, update Ansible roles and scheduler support, adjust startup/CI/tests, and manage CVMFS.

Galaxy Docker skill

Use this skill when working in the bgruening/docker-galaxy repo to upgrade Galaxy releases or refresh runtime, scheduler, CVMFS, and CI behavior.

Quick start workflow

  1. Define targets: Galaxy release, Ubuntu base, scheduler expectations (Slurm/HTCondor), and CI scope.
  2. Update build: galaxy/Dockerfile (release ARGs, build stages, slurm-drmaa, uv usage, npm cleanup).
  3. Update Ansible: galaxy/ansible/requirements.yml and playbooks (rabbitmq.yml, condor.yml, slurm.yml, nginx.yml, proftpd.yml).
  4. Update runtime: galaxy/startup.sh, galaxy/startup2.sh, and galaxy/ansible/templates/export_user_files.py.j2.
  5. CVMFS changes: cvmfs/ sidecar + galaxy/docker-compose.yaml + resolver config.
  6. Tests/CI: test/ scripts and .github/workflows/ (buildx caches, test orchestration).
  7. Run tests: Use both --privileged and non-privileged runs where relevant.

Repo map (files to touch)

  • Build: galaxy/Dockerfile
  • Startup: galaxy/startup.sh, galaxy/startup2.sh
  • Galaxy config export: galaxy/ansible/templates/export_user_files.py.j2
  • Ansible roles: galaxy/ansible/requirements.yml
  • Services: galaxy/ansible/rabbitmq.yml, galaxy/ansible/condor.yml, galaxy/ansible/slurm.yml, galaxy/ansible/nginx.yml, galaxy/ansible/proftpd.yml
  • Slurm config template: galaxy/ansible/templates/configure_slurm.py.j2
  • Container resolvers: galaxy/ansible/templates/container_resolvers_conf.yml.j2
  • CVMFS sidecar: cvmfs/ and galaxy/docker-compose.yaml
  • Tests: test/bioblend/, test/slurm/, test/gridengine/, test/cvmfs/, test/container_resolvers_conf.ci.yml
  • CI: .github/workflows/*.yml and .github/workflows/single.sh

Guardrails and expectations

  • Keep Python installs on uv (build and runtime). Avoid pip install directly.
  • Prefer buildx cache mounts in Dockerfiles and cache-to/cache-from in GitHub Actions.
  • Use --rm for test containers and clean up by name to avoid conflicts.
  • If /tmp fills up on CI, use TMPDIR=/var/tmp for heavy Docker tests.
  • Use startup2 for richer diagnostics; keep startup.sh minimal.

CVMFS

  • Privileged runs use full CVMFS client + autofs.
  • Sidecar is optional via compose profile (cvmfs/ image).
  • Container resolver config should include cached mulled paths on both CVMFS and /export.
  • See references/upgrade-25.1.md for the exact sidecar design and tests.

Slurm

  • Ensure Slurm works in containers without systemd/cgroup v2 requirements.
  • configure_slurm.py.j2 writes cgroup.conf with CgroupPlugin=disabled.
  • Slurm-DRMAA is built from source when ABI mismatches exist (documented in references).

Tests (typical order)

  • test/slurm/test.sh (set GALAXY_IMAGE=galaxy:test if needed)
  • test/gridengine/test.sh (uses ephemeris container for wait)
  • test/bioblend/test.sh
  • test/cvmfs/test.sh (sidecar + mount propagation)
  • startup2 sanity: docker run --rm --privileged ... /usr/bin/startup2

References

  • references/upgrade-25.1.md for 25.1 upgrade decisions, pins, and pitfalls.