XiVO Package File Structure
Package naming
Let’s assume we want to organise the files for xivo-confd.
Git repo name:
xivo-confd
Binary file name:
xivo-confd
Python package name:
xivo_confd
xivo-confd
|-- bin
| `-- xivo-confd
|-- contribs
| `-- docker
| |-- ...
| `-- prod
| `-- ...
|-- debian
| `-- ...
|-- Dockerfile
|-- docs
| `-- ...
|-- etc
| `-- ...
|-- integration-tests
| `-- ...
|-- LICENSE
|-- README.md
|-- requirements.txt
|-- setup.cfg
|-- setup.py
|-- test-requirements.txt
|-- .travis.yml
`-- xivo_confd
`-- ...
Sources
etc/
Contains default configuration files.
docs/
Contains technical documentation for this package: API doc, architecture doc, diagrams, … Should be in RST format using Sphinx.
bin/
Contains the binaries. Not applicable for pure libraries.
integration-tests/
Contains the tests bigger than unit-tests. Tests should be runnable simply, e.g.
nosetests integration-tests
.README.md
Read me in markdown (Github flavor).
LICENSE
License (GPLv3)
.travis.yml
Travis CI configuration file
Python
Standard files:
setup.py
setup.cfg
requirements.txt
test-requirements.txt
xivo_confd/ (the main sources)
Debian
debian/
Contains the Debian packaging files (
control
,rules
, …)
Docker
Dockerfile
Used to build a docker image for a working production version
contribs/docker/prod/
Contains the files necessary for running xivo-confd inside a production Docker image
contribs/docker/other/
Contains the Dockerfile and other files to run xivo-confd inside Docker with specific configuration
File naming
PID file:
/var/run/xivo-confd/xivo-confd.pid
WSGI socket file:
/var/run/xivo-confd/xivo-confd.sock
Config file:
/etc/xivo-confd/config.yml
Log file:
/var/log/xivo-confd.log
Static data files:
/usr/share/xivo-confd
Storage data files:
/var/lib/xivo-confd