Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[doc] Move commands in DEVELOPMENT.md #214

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 127 additions & 0 deletions DEVELOPMENT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
# Development

## Prérequis

Infrastructure :

- Être membre du groupe EPFL `vra_p_svc0041`.
- Être membre de l'équipe Keybase `epfl_wpveritas`.

Tequila et rôles :

- Pour se connecter à l'application, il faut s'authentifier Tequila.
- Pour obtenir le rôle 'admin' il faut appartenir au groupe EPFL `wp-veritas-admins`.
- Pour obtenir le rôle 'editor' il faut appartenir au groupe EPFL `wp-veritas-editors`.

## Local

Lancer les commandes :

```sh
cd app/
meteor install i
cd ..
make meteor
```

Ensuite aller à l'adresse http://localhost:3000

Vous êtes alors redirigé sur une URL du type https://localhost:3000/?key=aop0wd1yo3abmhr0z5w1wbcz9sj6z9cc il suffit alors de supprimer le s de https://

Pour lancer les tests : `make test`.

## Docker

Afin de garantir que l'environnement node, meteor et mongodb soit similaire
pour tout les développeurs, et pour éviter la gestion de version de ces
environnements sur l'hôte, il est possible d'utiliser
[docker-compose-dev.yml](./docker-compose-dev.yml).

1. Construire l'image docker avec : `make dev-build`.
1. Lancer l'image docker avec : `make dev-up`.

Il est possible de rentrer dans le container avec : `make dev-exec`.

Il est possible de lancer des commandes directement dans le container,
par exemple :
`docker run -it --entrypoint bash --rm wp-veritas-app -c "meteor --version"`

Note: la spécification de l'utilisateur root n'est pas nécessaire, mais le
[docker-compose-dev.yml](./docker-compose-dev.yml) tente de faire matcher
un utilisateur du système avec celui dans le container. Il se peut que votre
utilisateur ait l'identificant 1000, ce qui correspond à l'utilisateur "node"
dans le container. Dans ce cas, les commandes "root" ne fonctionneront pas sans
spécifier l'utiliser à l'aide de l'option `--user root`.

L'application se trouve dans le dossier `/app` du container. Néanmoins, tous les
fichiers du projet sont également disponible dans le container, dans le dossier
`/src`. Cela permet par exemple de tester et d'utiliser `veritas-cli`. Pour ce
faire, se rendre dans `/src/cli` et suivre les indications ci-dessous.

Il est aussi possible de lancer l'image production avec :

```sh
docker compose build
docker compose up
```

## veritas-cli

Pour installer la CLI en local, il faut:

- Se placer dans le répetoire `cli/`.
- Faire un `npm i`.
- Faire un `npm i -g .`.

Lorsque la CLI est installé :

- Se placer à la racine du projet wp-veritas.
- On peut maintenant faire un `veritas-cli --help`.

Pour installer la CLI dans docker : `make dev-cli`.

```sh
veritas-cli --help
Usage: veritas-cli [options] [command]

Options:
-h, --help output usage information

Commands:
clean-all-documents Delete all documents from the local MongoDB
restore-test-db Restore the test MongoDB on local MongoDB
restore-prod-db Restore the production MongoDB on local MongoDB
restore-prod-db-on-dev Restore the production MongoDB on dev MongoDB
restore-prod-db-on-test Restore the production MongoDB on test MongoDB
load-tests-data-on-localhost-db Load tests data on localhost MongoDB
load-tests-data-on-dev-db Load tests data on dev MongoDB
load-tests-data-on-test-db Load tests data on test MongoDB
```

## Déploiement

Les instances sont accessibles ici :

- wp-veritas-test.epfl.ch
- wp-veritas.epfl.ch

On se place à la racine du projet :

1. Le plus simple est d'utiliser la commande `make version-major` ou
`make version-minor` ou `make version-patch`.
1. Pour cette nouvelle version, il faut créer un tag et publier une nouvelle
release dans GitHub. Une nouvelle image sera automatiquement créée et
poussée dans Quay.
1. Une fois le build terminé, lancer`./ansible/wpveritasible --prod`.
Automatiquement wp-veritas.epfl.ch redémarrera.

Lancer le déploiement va exécuter `updateRoles` qui supprime la collection
`roles` et qui supprime l'attribut roles dans chaque user. La collection est
re-créée par les fixtures.

## Notes

La mise à jour du paquet `alanning:roles` de la version 1 à la version 3 a
necessité des changements en DB. En effet, il faut supprimer la collection
`roles` et la re-créée via le fichier server/fixtures.js De plus, le user n'a
plus d'attributs roles mais une nouvelle collection `role-assignement`.
167 changes: 5 additions & 162 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,167 +3,10 @@
[![Test](https://github.com/epfl-si/wp-veritas/actions/workflows/test.yml/badge.svg?branch=master)](https://github.com/epfl-si/wp-veritas/actions/workflows/test.yml)
[![Build](https://github.com/epfl-si/wp-veritas/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/epfl-si/wp-veritas/actions/workflows/build.yml)

Cette application a pour but de stocker et permettre l'édition de la **source de vérité** des sites WordPress de l'EPFL :
Cette application a pour but de stocker et permettre l'édition de la
**source de vérité** des sites WordPress de l'EPFL :

- la liste des sites, avec leurs attributs techniques et fonctionnels;
- la liste des **environnements OpenShift**, des unités techniques d'allocation des ressources et de routage dans lesquelles se classent les sites,
- la liste des **environnements OpenShift**, des unités techniques d'allocation
des ressources et de routage dans lesquelles se classent les sites,
- et d'autres listes connexes (liste des professeurs, liste des *tags*).

<!-- TOC titleSize:2 tabSpaces:3 depthFrom:1 depthTo:6 withLinks:1 updateOnSave:1 orderedList:0 skip:1 title:1 charForUnorderedList:* -->
## Table of Contents
* [Local](#local)
* [Lancer l'application en local](#lancer-lapplication-en-local)
* [Lancer l'application via docker](#lancer-lapplication-via-docker)
* [Lancer l'application via docker pour le développment](#lancer-lapplication-via-docker-pour-le-développment)
* [Commandes et informations supplémentaires](#commandes-et-informations-supplémentaires)
* [veritas-cli](#veritas-cli)
* [Déploiement](#déploiement)
* [Déployer une nouvelle version OpenShift](#déployer-une-nouvelle-version-openshift)
* [Procédure de mise en prod](#procédure-de-mise-en-prod)
* [Référence sur Dockerhub](#référence-sur-dockerhub)
* [Manipulation des données](#manipulation-des-données)
* [Importer les informations de la source de vérité](#importer-les-informations-de-la-source-de-vérité)
* [Si vous avez besoin de supprimer tous les sites avant de relancer l'import des données](#si-vous-avez-besoin-de-supprimer-tous-les-sites-avant-de-relancer-limport-des-données)
* [Autentification Tequila et rôles](#autentification-tequila-et-rôles)
* [Notes](#notes)
* [Mise à jour de l'image](#mise-à-jour-de-limage)
* [Comment exécuter les tests](#comment-exécuter-les-tests)
* [Mise à jour de paquet alanning:roles](#mise-à-jour-de-paquet-alanningroles)
<!-- /TOC -->


# Local

## Lancer l'application en local

Se positionner dans le répertoire app/ et lancer la commande :

`cd app/`

`env WP_VERITAS_BOT_TOKEN=$WP_VERITAS_BOT_TOKEN_TEST WP_VERITAS_ALERTS_TELEGRAM_IDS=$WP_VERITAS_ALERTS_TELEGRAM_IDS_TEST meteor --settings meteor-settings.json`

Ensuite aller à l'adresse http://localhost:3000

Vous êtes alors redirigé sur une URL du type https://localhost:3000/?key=aop0wd1yo3abmhr0z5w1wbcz9sj6z9cc il suffit alors de supprimer le s de https://

## Lancer l'application via docker

Se positionner dans le répertoire racine et faire un : `docker-compose up`

Ensuite aller à l'adresse https://localhost

## Lancer l'application via docker pour le développment

Afin de garantir que l'environnement node, meteor et mongodb soit
similaire pour tout les développeurs, et pour éviter la gestion de
version de ces environnements sur l'hôte, il est possible d'utiliser
[docker-compose-dev.yml](./docker-compose-dev.yml).

1. Construire l'image docker avec :
`docker-compose -f docker-compose-dev.yml build`
1. Lancer l'image docker avec :
`docker-compose -f docker-compose-dev.yml up`

### Commandes et informations supplémentaires

Il est possible de lancer des commandes directement dans le container,
par exemple :
`docker run -it --entrypoint bash --rm wp-veritas_app -c "meteor --version"`

De même, il est possible de rentrer dans le container avec :
`docker exec -it --user root wp-veritas_meteor bash`

Note: la spécification de l'utilisateur root n'est pas nécessaire, mais le
[docker-compose-dev.yml](./docker-compose-dev.yml) tente de faire matcher
un utilisateur du système avec celui dans le container. Il se peut que votre
utilisateur ait l'identificant 1000, ce qui correspond à l'utilisateur "node"
dans le container. Dans ce cas, les commandes "root" ne fonctionneront pas sans
spécifier l'utiliser à l'aide de l'option `--user root`.

L'application se trouve dans le dossier `/app` du container. Néanmoins, tous les
fichiers du projet sont également disponible dans le container, dans le dossier
`/src`. Cela permet par exemple de tester et d'utiliser `veritas-cli`. Pour ce
faire, se rendre dans `/src/cli` et suivre les indications ci-dessous.


# veritas-cli

Pour installer le CLI en local, il faut:
- Se placer dans le répetoire `cli/`
- Faire un `npm install`
- Faire un `npm install -g ./`

Lorsque le CLI est installé :
- Se placer à la racine du projet wp-veritas
- On peut maintenant faire un `veritas-cli --help`

```
greg@epfl:~/workspace-idevfsd/wp-veritas$ veritas-cli --help
Usage: veritas-cli [options] [command]

Options:
-h, --help output usage information

Commands:
clean-all-documents Delete all documents from the local MongoDB
restore-test-db Restore the test MongoDB on local MongoDB
restore-prod-db Restore the production MongoDB on local MongoDB
```


# Déploiement

## Déployer une nouvelle version OpenShift

Les instances sont accessibles ici :
- <wp-veritas-test.epfl.ch>
- <wp-veritas.epfl.ch>

On se place à la racine du projet :

1. Changer la version dans `package.json` (et lancer `npm i` pour mettre à jour `package-lock.json`). Le plus simple est d'utiliser la commande `make version-major`.
2. Une fois le commit effectué et pushé dans github, allez dans build de l'image sur l'environment de test et lancer le build.
3. Une fois le build terminé, promouvoire l'image en production avec `./ansible/wpveritasible -t promote --prod`. Automatiquement wp-veritas.epfl.ch redémarrera.

## Procédure de mise en prod
Lancer le déploiement => ce qui va exécuter `updateRoles` qui supprime la
collection `roles` et qui supprime l'attribut roles dans chaque user. La
collection est re-créée par les fixtures.

# Manipulation des données

## Importer les informations de la source de vérité

(Obsolète, utiliser veritas-cli)

Vous devez être positionné dans le répertoire app/ et avoir lancé l'application.

`meteor shell`

`importVeritas()`

## Si vous avez besoin de supprimer tous les sites avant de relancer l'import des données

Vous devez être positionné dans le répertoire app/ et avoir lancé l'application.

`meteor mongo`

`db.sites.deleteMany({})`

`docker push epflsi/wp-veritas:latest`

# Autentification Tequila et rôles

- Pour se connecter à l'application, il se faut s'authentifier Tequila.
- Pour obtenir le rôle 'admin' il faut appartenir au groupe 'wp-veritas-admins' de l'application groups.epfl.ch
- Pour obtenir le rôle 'editor' il faut appartenir au groupe 'wp-veritas-editors' de l'application groups.epfl.ch


# Notes

## Comment exécuter les tests
make test

## Mise à jour de paquet alanning:roles
La mise à jour du paquet `alanning:roles` de la version 1 à la version 3 a necessité des changements en DB.
En effet, il faut supprimer la collection `roles` et la re-créée via le fichier server/fixtures.js
De plus, le user n'a plus d'attributs roles mais une nouvelle collection `role-assignement`