README.md 4.37 KB
Newer Older
Ivan Gabriele's avatar
Ivan Gabriele committed
1 2
# Back-office du code du travail numérique

3 4 5 6
[![Travis CI Status][img-travis]][link-travis]
[![Gitlab CI Status][img-gitlab]][link-gitlab]
[![Codecov Code Coverage][img-codecov]][link-codecov]
[![Codacy Code Quality][img-codacy]][link-codacy]
Ivan Gabriele's avatar
Ivan Gabriele committed
7

8 9
Ce dépôt regroupe les applications d'administration des données du
[code du travail numérique][link-cdtn].
Ivan Gabriele's avatar
Ivan Gabriele committed
10

Ivan Gabriele's avatar
Ivan Gabriele committed
11
## Contribuer au projet
Ivan Gabriele's avatar
Ivan Gabriele committed
12

Ivan Gabriele's avatar
Ivan Gabriele committed
13 14 15 16 17 18 19 20 21 22 23 24 25
### Pré-requis

- Node v10+
- Docker v18+
- Docker Compose v1.17+
- Yarn (`npm i -g yarn`)

### Installation

```bash
git clone https://github.com/SocialGouv/code-du-travail-backoffice.git
cd code-du-travail-backoffice
yarn
26 27 28 29 30 31 32 33 34 35
# Install all the packages dependencies (since it's a monorepo):
yarn lerna bootstrap
# Generates the .env file with pre-filled dev/test values:
yarn setup --env-only
docker-compose up -d db
yarn db:migrate
# Seed the databse with dev/test dummy data:
yarn db:seed
docker-compose up -d api
yarn dev
Ivan Gabriele's avatar
Ivan Gabriele committed
36 37
```

Ivan Gabriele's avatar
Ivan Gabriele committed
38 39
> **Note**<br>
> Si vous ne pouvez exécuter `docker-compose` qu'avec `sudo`, vous devez
40 41 42 43 44 45 46
> remplacer tous les `docker-compose` par `sudo docker-compose`.

Le site devrait être accessible à l'adresse http://localhost:3100.

2 utilisateurs ont été générés par défaut pendant l'installation :

- Administrateur:
47 48
    - Email: `administrator@example.com`
    - Mot de passe: `Azerty123`
49
- Contributeur:
50 51
    - Email: `contributor@example.com`
    - Mot de passe: `Azerty123`
Ivan Gabriele's avatar
Ivan Gabriele committed
52

Ivan Gabriele's avatar
Ivan Gabriele committed
53 54
### Démarrer le site localement

55 56
Un fois installé, vous pouvez simplement faire tourner le site avec ces deux
commandes :
Ivan Gabriele's avatar
Ivan Gabriele committed
57

Ivan Gabriele's avatar
Ivan Gabriele committed
58
```bash
59 60
docker-compose up -d api
yarn dev
Ivan Gabriele's avatar
Ivan Gabriele committed
61 62
```

63 64
Le site devrait être accessible à l'adresse
[http://localhost:3100](http://localhost:3100).
65 66 67 68 69 70 71

### Tester le code

#### Test unitaires

Pendant le développement, vous pouvez soit tester manuellement :

Ivan Gabriele's avatar
Ivan Gabriele committed
72
```bash
73 74 75 76 77 78 79 80
yarn test:unit
```

ou faire tourner les tests unitaires en continu (ajouter `--coverage` pour
afficher l'état de couverture des tests) :

```bash
yarn test:watch
Ivan Gabriele's avatar
Ivan Gabriele committed
81 82
```

83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
#### Analyse statique

Vous pouvez éxecuter l'analyse statique du code en exécutant :

```bash
yarn test:lint
```

#### Tests de bout en bout

Vous pouvez éxecuter les tests de bout en bout du code en exécutant (votre site
doit alors touner localement) :

```bash
yarn test:e2e
```

ou vous pouvez simuler l'exécution des tests bout en bout tels qu'ils sont
exécutés par la CI (en mode production et entièrement docker-isés):

```bash
yarn ci:test:e2e
```

> **Attention**<br>
> La deuxième méthode va effacer toutes les données de votre base de données
> contenues dans votre volume Docker local (cf. `docker-compose.yml`).
Ivan Gabriele's avatar
Ivan Gabriele committed
110

Ivan Gabriele's avatar
Ivan Gabriele committed
111 112
### Problèmes connus	

Ivan Gabriele's avatar
Ivan Gabriele committed
113 114 115
#### Docker Compose

Sous Ubuntu, si vous rencontrez l'erreur `double free or corruption (out)`, la
116 117
[solution actuelle][link-issue-1] consiste à forcer la désinstallation de la
dépendance concernée :
Ivan Gabriele's avatar
Ivan Gabriele committed
118 119 120 121 122 123 124

```bash
dpkg -r --force-depends golang-docker-credential-helpers
```

#### Jest Watch

125 126 127
Sous Ubuntu, si vous rencontrez l'erreur	`Error: ENOSPC: System limit for
number of file watchers reached`, la [solution	actuelle][link-issue-2] consiste
à augmenter le nombre de watchers du système de fichiers en exécutant :	
Ivan Gabriele's avatar
Ivan Gabriele committed
128 129 130 131 132

```bash
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p	
```

133 134 135 136
### Licence

Le code source de ce dépôt est distribué sous la
[licence Apache 2.0][link-license].
Ivan Gabriele's avatar
Ivan Gabriele committed
137

138
[link-cdtn]: https://codedutravail.num.social.gouv.fr
Ivan Gabriele's avatar
Ivan Gabriele committed
139

140
[img-codacy]: https://img.shields.io/codacy/grade/4c5aebc238b94d3795371b49fa6041de.svg?style=flat-square
141 142
[img-codecov]: https://img.shields.io/codecov/c/github/SocialGouv/code-du-travail-backoffice/dev.svg?style=flat-square
[img-gitlab]: https://gitlab.factory.social.gouv.fr/SocialGouv/code-du-travail-backoffice/badges/dev/pipeline.svg?style=flat-square
143 144
[img-travis]: https://img.shields.io/travis/SocialGouv/code-du-travail-backoffice/dev.svg?style=flat-square
[link-codacy]: https://app.codacy.com/project/SocialGouv/code-du-travail-backoffice/dashboard
Ivan Gabriele's avatar
Ivan Gabriele committed
145 146
[link-codecov]: https://codecov.io/gh/SocialGouv/code-du-travail-backoffice
[link-license]: https://github.com/SocialGouv/code-du-travail-backoffice/blob/master/LICENSE
Ivan Gabriele's avatar
Ivan Gabriele committed
147
[link-gitlab]: https://gitlab.factory.social.gouv.fr/SocialGouv/code-du-travail-backoffice/pipelines
148 149 150 151
[link-travis]: https://travis-ci.com/SocialGouv/code-du-travail-backoffice

[link-issue-1]: https://github.com/docker/docker-credential-helpers/issues/103#issuecomment-421822269
[link-issue-2]: https://github.com/facebook/jest/issues/3254#issuecomment-297214395