# Source code GitLab is used to host all the CSI projects under different groups based on the use case. ## ICS Control System Infrastructure group The [ics-infrastructure group] is the default group for the CSI team. This is where a project should go except if it fits in one of the following groups. ### rpms [Subgroup](https://gitlab.esss.lu.se/ics-infrastructure/rpms) to gather projects to build RPMs. Mostly used for kernel modules. See [How to install kernel modules or introduce a new kernel module](https://confluence.esss.lu.se/display/ID/How+to+install+kernel+modules+or+introduce+a+new+kernel+module). ## ICS Ansible Galaxy The [ics-ansible-galaxy group] shall be used for all Ansible roles and playbooks. A [webhook](https://gitlab.esss.lu.se/groups/ics-ansible-galaxy/-/hooks) is defined at the group level to watch changes in that group and send events to the [galaxy-bot]. ## ICS Cookiecutter The [ics-cookiecutter group] isn't CSI specific. Gathering all cookiecutter templates under the same group makes them easier to discover. This group includes the templates for Ansible [roles](https://gitlab.esss.lu.se/ics-cookiecutter/cookiecutter-ics-ans-role) and [playbooks](https://gitlab.esss.lu.se/ics-cookiecutter/cookiecutter-ics-ans-playbook). ## ICS Docker The [ics-docker group] shall be used for generic docker images. GitLab is used as a container registry. Having repositories under that group allows to use the same path for all generic images: `registry.esss.lu.se/ics-docker/`. For example: - registry.esss.lu.se/ics-docker/awx - registry.esss.lu.se/ics-docker/centos-systemd - registry.esss.lu.se/ics-docker/miniconda New projects can be created using the [ICS docker cookiecutter template](https://gitlab.esss.lu.se/ics-cookiecutter/cookiecutter-ics-docker). It includes the following `.gitlab-ci.yml`: ```yaml --- include: - remote: "https://gitlab.esss.lu.se/ics-infrastructure/gitlab-ci-yml/raw/master/Docker.gitlab-ci.yml" ``` When pushing changes, the image is built and pushed with the branch name as tag. When pushing a git tag, it is used as image tag and `latest` is updated to point to it. See the [Docker.gitlab-ci.yml template](https://gitlab.esss.lu.se/ics-infrastructure/gitlab-ci-yml/-/blob/master/Docker.gitlab-ci.yml) for details. ```{note} If you are developing an application, like CSEntry, this project should be under the [ics-infrastructure group] instead, even if it includes a docker image. ``` ## ICS RPMs The [ics-rpms group] was moved under the [ics-infrastructure group] and renamed [rpms](https://gitlab.esss.lu.se/ics-infrastructure/rpms). ## Ansible inventory The [ansible-inventory group] is used to store Ansible inventories in GitLab, like the [cceco-inventory](https://gitlab.esss.lu.se/ansible-inventory/cceco-inventory) used to deploy CCECO applications. CSEntry is our main inventory. There are some use cases where having the inventory in GitLab makes sense. ## Conda Recipes The [conda-recipes group] gathers various conda recipes, like [p4p-recipe](https://gitlab.esss.lu.se/conda-recipes/p4p-recipe) or [ca-gateway](https://gitlab.esss.lu.se/conda-recipes/ca-gateway). It also includes recipes used by E3, but not specific to E3, like [libusb-recipe](https://gitlab.esss.lu.se/conda-recipes/libusb-recipe). ## E3 recipes The [e3-recipes group] gathers all conda recipes for E3. The [epics-base-recipe](https://gitlab.esss.lu.se/e3-recipes/epics-base-recipe) isn't only used for E3. It's used to build and deploy the CA Gateway and PVA Gateway. A [webhook](https://gitlab.esss.lu.se/groups/e3-recipes/-/hooks) is defined at the group level to watch changes in that group and send events to the [conda-bot]. Note that another [webhook](https://gitlab.esss.lu.se/groups/epics-modules/-/hooks) is defined in the [epics-modules group] to trigger MR in the corresponding conda recipe when pushing a tag to a module. ## Conda EEE recipes The [conda-eee-recipes group] was used to test conda packaging for EEE. It's not used anymore. ## Jupyter The [jupyter group] gathers Jupyter Notebooks that can be accessed from JupyterHub via the [jupyterlab-gitlab](https://gitlab.com/beenje/jupyterlab-gitlab) extension. [ics-infrastructure group]: https://gitlab.esss.lu.se/ics-infrastructure [ics-ansible-galaxy group]: https://gitlab.esss.lu.se/ics-ansible-galaxy [ics-cookiecutter group]: https://gitlab.esss.lu.se/ics-cookiecutter [ics-docker group]: https://gitlab.esss.lu.se/ics-docker [ics-rpms group]: https://gitlab.esss.lu.se/ics-rpms [ansible-inventory group]: https://gitlab.esss.lu.se/ansible-inventory [conda-recipes group]: https://gitlab.esss.lu.se/conda-recipes [e3-recipes group]: https://gitlab.esss.lu.se/e3-recipes [conda-eee-recipes group]: https://gitlab.esss.lu.se/conda-eee-recipes [epics-modules group]: https://gitlab.esss.lu.se/epics-modules [jupyter group]: https://gitlab.esss.lu.se/jupyter [galaxy-bot]: https://gitlab.esss.lu.se/ics-infrastructure/galaxy-bot [conda-bot]: https://gitlab.esss.lu.se/ics-infrastructure/conda-bot