Outline
Main topics
Git tutorial
- configuration
- basic commands
- branchs
- Merge, rebase
Git branching strategies
- Show example of usual programming pipeline in software companies => TDD, ... !! select only the most adapted to scientific soft -> ask Tru
- Git flow
- GitHub flow
- Gitlab flow
- Trunk based development (best for CD ??)
Gitlab project organisation
- Use case with gitlab: developing, make presentation, ...
- Agile/ scrum ??? -> check
- Issue definition -> Bug tracker, feature or research proposal
- Issue creation & templates using markdown
- Issue labels (team/group level) to filter the list of issues
- Issues board in order to follow your progress/research ??
- Merges request/rebase
- Tags
- gitlab pages for hosting static files like documentation
- snippets for sharing or save small pieces of code
Testing/ continuous integration
- Best practices python testing
- Container & Docker configuration in gitlab
- Code quality badges
Documentation (python)
- Sphinx config
- Sphinx usage
Python packaging
- setuptools -> find guidelines for automatic tags from git or propose the one in ariaec/version.py
- Best practices
- CHANGELOG/README/COPYRIGHT
- pip ? conda ? other tool for installation ? Using the gitlab repository ?
- gitlab docker or singularity for submitting the package/notebooks
Examples
1 Bioinformatic software development
- Research/feature proposal on the issue list
- Scripting phase (e.g. jupyter notebook, ...)
- Define a task list on the related issue & develop the new issue on the corresponding branch
- Feature integration in the soft using branching strategy
- Testing phase/CI
- Merge request/rebase
- release branch/tags
2 Web interface/serveur development
- Django configuration CD
Useful tools for python
-
Pycharm/intellij IDE (list features related to the lecture)
- Code inspection
- VCS
- debugging tools
- concurrency diagram
- future lib
Tools/Tips for the slides
- asciinema in order to show terminal commands as gifs
- Show gitlab & terminal gifs at the same time
- Links to cheatsheets
- Host slides using gitlab pages ?? Or do similar thing as loic gouarin tuto ?
Sources
- http://nvie.com/posts/a-successful-git-branching-model/
- https://earth.bsc.es/wiki/lib/exe/fetch.php?media=working_groups:ces:201622_git_branching_strategies.pdf
- https://about.gitlab.com/2016/07/27/the-11-rules-of-gitlab-flow/
- https://mybinder.org/v2/gh/gouarin/python_packaging_2017/master
- https://github.com/gouarin/splinart
- https://mybinder.org/v2/gh/gouarin/splinart/master
- https://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0ahUKEwj21JWl1v_YAhXFSBQKHZ9qAyoQFgg2MAE&url=http%3A%2F%2Ffredhutchio.github.io%2Fintro-bioinformatics%2F04-git.html&usg=AOvVaw2Z3fR8ZmK78cKXn676lg57
- https://blog.nathanaelcherrier.com/2016/07/11/gitflow-la-methodologie-et-la-pratique/
- https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5383938/
- https://packaging.python.org/guides/tool-recommendations/
- https://trunkbaseddevelopment.com/
- https://forum.gitlab.com/t/best-practices-for-ci-with-gitlab/5169/8
- https://github.com/timstaley/sphinx-example