prerequis_prof.md 3.12 KB
Newer Older
Vincent-Xavier JUMEL's avatar
Vincent-Xavier JUMEL committed
1
2
3
4
5
6
### Prérequis professeur

#### Préparation du projet

  - utilisation de [Framagit](https://framagit.org) ou autre instance
  [Gitlab](https://gitlab.com)
7
8
9
10
    - utilisation régulière de git, éventuellement couplé à
    gitlab\/framagit\/[github](https://github.com)
  - ne pas hésiter à utiliser les groupes de gitlab ou à imposer un
  fonctionnement avec une branche par codeur
11
12
13
14
15

---

#### Automatisation

Vincent-Xavier JUMEL's avatar
Vincent-Xavier JUMEL committed
16
17
  - préparation du dépôt :
    - Rédaction d'un fichier [Gitlab CI](https://framagit.org/formation-nsi/projet-algo-du/raw/master/.gitlab-ci.yml)
18
19
      - 
      ```yaml
Vincent-Xavier JUMEL's avatar
Vincent-Xavier JUMEL committed
20
21
22
23
24
25
26
27
28
29
      test:
        script:
          - pip install pytest-cov
          - pytest --doctest-modules
          - pytest --cov-report term-missing --cov=src tests/
          - pip install coverage
      artifacts:
        paths:
          - .coverage
      ```
30
31
32
      install pytest avec coverage pour mesurer la couverture des tests,
      puis conserve le résultat de couverture

33
34
35
36
note: le mécanisme de gitlab CI/CD permet d'éxécuter des actions lors d'un
nouveau commit

la couverture des tests est la vérification que toutes les fonctions
37
38
39
40
41
sont bien testées par les tests unitaires. Ne pas hésiter à creuser pytest
et ses modules.

---

42
#### Éxécution du projet
Vincent-Xavier JUMEL's avatar
Vincent-Xavier JUMEL committed
43

44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
```yaml
run:
  script:
    - python setup.py bdist_wheel
    - pip install dist/*
    - src/main.py
    - mv resultat.txt graphe_initial.png graphe_petit.png public/
  artifacts:
    paths:
      - dist/*.whl
      - public/resultat.txt
      - public/graphe_initial.png
      - public/graphe_petit.png
```
On exécute ici le projet, en sauvegardant les fichiers qui devront être
publiés.

note: artifacts: paths permet de créer une archive sous Gitlab, qui peut
ensuite être téléchargé ou rendue publique via les gitlab pages (cf. sous
diapo suivante)

---

#### Génération des pages

```yaml
pages:
  stage: deploy
  script:
    - pip install covergae
    - pydoc -w src
    - pydoc -w src/main.py
    - coverage html -d public/pycov
77
    - mv *.html public/
78
79
80
81
82
83
84
85
86
87
88
89
  artifacts:
    paths:
      - public
  only:
    - master
```

  - Réinstallation de coverage pour exploiter le fichier `.coverage` de
  l'étape de test
  - Génération de la documentation
  - Déplacement des fichiers dans public

90
note: `only: master` indique que ces tâches là ne sont réalisées que sur la
91
92
branche principale. Il peut-être nécessaire de parler de branches git et du
traitement par gitlab.
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114

---

#### Le fichier de définition du programme

```python
#!/usr/bin/env python

from setuptools import setup

setup(name='sociogramme',
      version='0.2',
      description='Sociogramme pour un projet',
      install_requires=[
                        'networkx',
                        'matplotlib',
                        'numpy'
      ],
      )
```
c'est dans la [documentation](https://docs.python.org/3.7/distutils/setupscript.html), mais ça n'est pas un attendu du programme, donc
il est plus simple de le donner.
115
116
117
118
119
120
121

---

#### Les élements produits par le système de CI

  - [La couverture des tests](https://formation-nsi.frama.io/projet-algo-du/pycov/)
  - [La documentation](https://formation-nsi.frama.io/projet-algo-du/main.html)