Bureau-Systeme-d-Information-BSI / civilsdeladefense

Gestion des recrutements
https://civilsdeladefense.fabnum.fr
GNU Affero General Public License v3.0
12 stars 9 forks source link

e-recrutement

Application de gestion de recrutements.

Application Ruby on Rails avec base de données PostgreSQL, assets compilés via esbuild et suite de tests utilisant RSpec.

Prérequis

Installation locale

Installation des dépendances

bundle install
yarn install

Créer un fichier .env à la racine du projet contenant les valeurs :

DEFAULT_FROM=hello@localhost
DEFAULT_HOST=http://localhost:3000
LOCKBOX_MASTER_KEY=

Optionnellement ce fichier .env peut contenir les variables suivantes pour configurer un Object Storage basé sur OSU/S3 :

OSC_AK=access_key
OSC_SK=secret_key
OSC_BUCKET=bucket_name
OSC_REGION=eu-west-2
OSC_ENDPOINT=https://osu.eu-west-2.outscale.com

Créer la base de données avec les données de seed :

bin/rails db:drop db:create db:schema:load db:seed

Pour démarrer l'application localement :

bin/dev

Workflow de développement

Le workflow de développement est basé sur le GitHub flow :

La bonne manière de créer une Pull Request est de :

Tests

Pour lancer les test RSpec :

bundle exec rspec

Style de code

Pour lancer l'outil d'analyse statique de formatage Rubocop :

bundle exec rubocop

Sécurité

Pour lancer l'outil d'analyse statique de vulnérabilités Brakeman :

bundle exec brakeman

Jobs asynchrones

Pour exécuter les jobs asynchrones :

bundle exec sidekiq

Déploiement en préproduction et production

Les branches master et production sont déployées automatiquement grâce à Scalingo.

Pour chaque Pull Request créée, une application de review est automatiquement démarrée par Scalingo.

Premier déploiement

Génération de la base de données

Avant de déployer le code, il faut définir la variable d'environnement DO_NOT_POSTDEPLOY=1. Ceci a pour effet de ne pas lancer automatiquement la tâche db:migrate dans la phase postdeploy. Il faudra supprimer la variable d'environnement après un premier déploiement en success.

Lancer le déploiement puis charger le schéma de données :

bin/rails db:schema:load

Supprimer la variable d'environnement DO_NOT_POSTDEPLOY.

Création des données initiales

Créer la première organisation

organization = Organization.create!(
  brand_name: "...",
  service_name: "...",
  prefix_article: "..."
)

Créer le premier compte admin

admin = Administrator.new(
  email: 'prenom.nom@domaine.com',
  first_name: 'Prénom',
  last_name: 'Nom',
  password: '12 caractères minimum (1 majuscule, 1 minuscule, 1 chiffre et 1 caractère spécial)',
  very_first_account: true,
  role: 'admin',
  organization: organization
)
admin.skip_confirmation_notification!
admin.save!
admin.confirm

Services externes