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