EIC Deployment Area Overview
This document describes the directory structure used under /eic/opt/ for managing the deployment, testing, and operational releases of software. This layout supports multiple release areas (development, commissioning, operational), fallback mechanisms, and separate areas for scripts, binaries, and configurations.
It is intended to provide a clean, standardized, and intuitive foundation for managing executable applications, including C++ binaries, Java applications, Python applications bundled using Shiv and Shell scripts.
📁 Directory Structure
::
/eic/opt/
├── releases/
│ ├── development/
│ │ ├── bin/
│ │ ├── scripts/
│ │ ├── config/
│ │ └── fallback/
│ ├── commissioning/
│ │ ├── bin/
│ │ ├── scripts/
│ │ └── config/
│ ├── operational/
│ │ ├── bin/
│ │ ├── scripts/
│ │ ├── config/
│ │ └── fallback/
│ └── shared_env/
├── packages/
├── tools/
│ ├── promote_release.sh
│ └── validate_symlinks.py
├── docs/
│ ├── README.md
│ ├── release_checklist.md
│ ├── promotion_policy.md
│ └── rollback_procedure.md
🔁 Release Promotion Workflow
Development: Software is staged in
development/bin, tested by developers.Commissioning: Once stable, contents are promoted to
commissioning/binfor broader user testing.Operational: Approved versions are promoted to
operational/binfor production use.Fallback: Previous versions of
developmentandoperationalversions are archived in their respectivefallback/directories.
Symlinks (e.g., MyApp -> MyApp-1.2.3.shiv) may be used in bin/ to abstract version-specific files.
📚 Documentation & Source of Truth
Full documentation is hosted on ReadTheDocs:
🔗 https://eic.readthedocs.io/en/latest/eic-development-guidelines/release_procedure.html
This directory (/eic/opt/docs/) includes essential local documentation for operators and system maintainers, especially useful in offline or emergency scenarios.
🛠 Notes
Only
developmentandoperationalenvironments maintain afallback/directory.scripts/should only contain executable scripts (e.g.,.sh,.pywith shebangs).Non-executable support logic (e.g., libraries or templates) should live in
config/.
For questions or contributions to this structure, please refer to docs/contacts.md