# template_project_escape
[](https://doi.org/10.5281/zenodo.4923992)
[](
https://gitlab.in2p3.fr/escape2020/wp3/template_project_escape/-/commits/master)
[](https://opensource.org/licenses/MIT)
[](
https://mybinder.org/v2/gh/https%3A%2F%2Fgitlab.in2p3.fr%2Fescape2020%2Fwp3%2Ftemplate_project_escape/HEAD)
# Content
- [About this project](#about-this-project)
- [Licensing](#license)
- [Contribute to the ESCAPE OSSR](#contribute-to-the-escape-ossr)
- [Install](#install)
- [Report an issue or ask a question](#report-an-issue--ask-a-question)
- [Contact](#contact)
- [Citing this project](#citing)
- [Examples contained in this project](#examples-contained-in-the-project)
- [Automatise building Singularity images using CI/CD](#1-how-to-automatise-the-building-of-a-singularity-image-and-upload-it-to-zenodo-using-the-gitlab-ci)
- [Automatise building Docker containers using CI/CD](#2-how-to-automatise-the-building-of-a-docker-container-and-upload-it-to-the-gitlab-container-registry)
# About this project
A simple template project to provide software to ESCAPE.
This repository shows the **basic content** that should be included in a project (following the
[opensource guide](https://opensource.guide/starting-a-project/)):
* An [open source](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/licensing-a-repository#where-does-the-license-live-on-my-repository)
**license**.
* A [**README** file](https://help.github.com/en/github/getting-started-with-github/create-a-repo#commit-your-first-change),
similar to this one.
* Contributing guidelines.
- See below the general guidelines for the ESCAPE repository.
* A [code of conduct](https://opensource.guide/code-of-conduct/).
- Check why is a good idea to add one.
* The repository itself.
It would be highly suitable to include too:
- A setup file as well as the basic commands to install the library (see below).
- A `.gitignore` file.
- Unitary and integration tests, and ideally a CI pipeline.
**Please feel free to clone / fork / template this project!** (For example, look to left of the
`Clone or download` button in the [GitHub](https://github.com/garciagenrique/template_project_escape) site).
- For a detailed explanation of how to submit a contribution to a project / repository (Fork, create a branch, make
a pull request...), you can have a look to the [opensource guide](https://opensource.guide/how-to-contribute/#how-to-submit-a-contribution)
and/or the [git's documentation](https://git-scm.com/doc).
- Not that if you have login GitLab by using the `[Shibbolenth]` service (eduGAIN, Fédération d'Identités
RENATER), you will need to [add a SSH key](https://gitlab.in2p3.fr/help/ssh/README#generating-a-new-ssh-key-pair) to
your GitLab profile if you want to 'push' your changes to the server.
# License
Portions of this code are based on the `GitLab-CI` project ([repository link](https://gitlab.com/singularityhub/gitlab-ci),
[Zenodo link and DOI](https://zenodo.org/record/3834833)) held by a
[`BSD 3-Clause License`](https://opensource.org/licenses/BSD-3-Clause). You can check the complete license text
[here](https://gitlab.com/singularityhub/gitlab-ci/-/blob/master/LICENSE).
## License of the `template_project_repository`:
The `template_project_repository` contains code from a third party project. This 'mixing' can be done because:
- Both 'parent' projects are Open Source.
- None of the original licenses are copy-left.
- Both `BSD 3-Clause` and `MIT`, are permissive licenses. This means that source code distributed with
a BSD 3-Clause license can be included in a project with a MIT license and be re-distributed under `MIT`:
- Note however, that the **original licenses** must be included in the resulting project and mentioned in the
LICENSE/documentation files.
**PLEASE TAKE THE TIME TO CHECK AND VERIFY LICENSES AND THEIR COMPATIBILITIES**
# Contribute to the ESCAPE OSSR
If you want to provide software to the ESCAPE repository:
- Check the [ESCAPE OSSR guidelines](https://escape2020.pages.in2p3.fr/wp3/ossr-pages/page/contribute/contribute_ossr/).
- For ESCAPE members, follow the steps detailed in [the onboarding project](https://gitlab.in2p3.fr/escape2020/wp3/onboarding)
to finalise your contribution and the same onboarding process.
- All the code provided should be uploaded to the [Zenodo ESCAPE community](https://zenodo.org/communities/escape2020/).
- Check the following [tutorial on how to publish content in Zenodo](https://escape2020.pages.in2p3.fr/wp3/ossr-pages/page/contribute/publish_tutorial/),
and how to automatise the upload of each new release of your project.
# Install
Example of how to show installing instructions (and indeed the way to install this project).
```sh
$ git clone https://gitlab.in2p3.fr/escape2020/wp3/template_project_escape.git
$ cd template_project_escape
$ pip install .
```
# Report an issue / Ask a question
Use the [GitLab repository Issues](https://gitlab.in2p3.fr/escape2020/wp3/template_project_escape/-/issues).
# Contact
Email to vuillaume [at] lapp.in2p3.fr / garcia [at] lapp.in2p3.fr.
# Citing
Example of citing (as well as the DOI to cite this project),
In case of citing this repository, use the following DOI:
- v2.2 [](https://doi.org/10.5281/zenodo.4923992)
- v2.1 [](https://doi.org/10.5281/zenodo.4790629)
- v2.0 [](https://doi.org/10.5281/zenodo.3884963)
- v1.1 [](https://doi.org/10.5281/zenodo.3743490)
- v1.0 [](https://doi.org/10.5281/zenodo.3572655)
Do not forget to include your code / container into the [Zenodo ESCAPE community](https://zenodo.org/communities/escape2020/).
- ***Note that*** a DOI will be assigned in the moment create a new record/entry in Zenodo.
# Examples contained in this project
## 1. How to automatise the building of a Singularity image and upload it to Zenodo using the GitLab-CI
A working example of how to automatise the GitLab-CI to;
1. create a Singularity image / container of your code,
2. make it available as a downloadable artifact within your project and
3. upload it to the [ESCAPE OSSR](https://zenodo.org/communities/escape2020),
can be found in the `.singularityci`, and `Singularity` directories and in the `.gitlab-ci.yml` file - the
`build_singularity_image` stage. Please read carefully all the README files.
For an easy example of how to create a Singularity receipt from scratch (and its corresponding container when executed),
please have a look to the `singularity_utils` directory.
## 2. How to automatise the building of a Docker container and upload it to the GitLab Container Registry
An example can be found in the `Docker` directory and in the `.gitlab-ci.yml` file - the
`build_docker_image` stage.