Suivre la documentation dédiée
Créez un nouveau repository en utilisant ce template
Clonez le nouveau repository locallement.
Récupérez manuellement les fichiers de git-lfs depuis le template
git lfs fetch https://github.com/mission-apprentissage/template-apprentissage.git
git lfs pull
Récupérez le vault depuis 1password (assurez vous d'etre connecter via op account get
)
.bin/mna vault:init
Vérifiez que vous pouvez déchiffrer le vault via gpg --list-packets .infra/vault/.vault-password.gpg
Si vous n'etes pas autorisé à déchiffrer le vault, il faudra se rapprocher des personnes habilitées afin d'avoir vos accès ajoutés.
Initialisation de l'envrionnement yarn setup
Vous pouvez lancer le projet locallement via yarn dev
Le setup va intialiser la base de donnée, il faut maintenant mettre à jour.
Vous pouvez maintenant lancer l'application locallement en suivant la documentation dédiée.
- TODO: GitGuardian, Shodan, Slack Webhook, Uptime
Pour une simplification de la procedure, nous allons supposer que vous souhaitez créer le produit nommé api
Il faut créer 1 projet pour l'UI et un pour le Server sur https://sentry.apprentissage.beta.gouv.fr/organizations/sentry/projects/new/
Créer 2 instances de MongoDB sur OVH pour recette & production.
Pour chaque instance créer 2 utilisateurs:
app
avec le roledbOwner
surapi
metabase
avec le roleread
surapi
Ajouter l'IP de votre server dans les IPs autorisées
Créer 2 instances de Postgres sur OVH pour recette et production.
Ajouter l'IP de votre server dans les IPs autorisées
Mettre à jour le fichier .infra/env.ini
product_name
: le nom du produitapi
repo_name
: le nom du repositoryapi-apprentissage
database_name
: le nom de la BDDapi
domain_name
: le nom du domaineapi
Mettre à jour le fichier .bin/product-meta.sh
avec les memes valeurs que le fichier .infra/env.ini
Mettre à jour le fichier .bin/zsh-completion
, remplacer mna-tmpl
par mna-api
Mise à jour du vault yarn vault:edit
Mettre à jour les secrets suivants:
SERVER_SENTRY_DSN
: le DSN du sentry serveurEMAIL
: addresse email utilisée pour envoyer des emails (créer un alias sur https://admin.alwaysdata.com/mailbox/). Utiliser une addresse de type[email protected]
METABASE_EMAIL_FROM_ADDRESS
: Utiliser la meme queEMAIL
METABASE_EMAIL_FROM_NAME
: Mettre à jourSEED_GPG_PASSPHRASE
: Générer un nouveau secretpwgen -s 120 1
MONGODB_KEYFILE
: Générer un nouveau secretpwgen -s 120 1
Pour chaque environnement:
PUBLIC_URL
: Le nom de domaine public. Pour la preview utiliser le format prédéfiniMONGODB_URI
: L'url de connexion de l'utilisateurapp
.- Pour
recette
&production
bien faire attention à la DB à utiliser dans la connection string et d'avoirauthSource=admin
- Pour
preview
remplacer simplement la stringTODO_REPLACE_BY_MONGOKEYFILE
par la valeurMONGODB_KEYFILE
- Pour
MONGODB_METABASE_URI
: L'url de connexion de l'utilisateurmetabase
. Pourpreview
laisser vide car il n'y a pas de previewAUTH_USER_JWT_SECRET
: Générer un nouveau secretpwgen -s 120 1
AUTH_PASSWORD_JWT_SECRET
: Générer un nouveau secretpwgen -s 120 1
SESSION_SECRET
: Générer un nouveau secretpwgen -s 120 1
SMTP_WEBHOOK_KEY
: Générer un nouveau secretpwgen -s 64 1
METABASE_ADMIN_EMAIL
: L'addresse email du compte admin. Pourpreview
laisser vide car il n'y a pas de previewMETABASE_ADMIN_PASS
: Générer un nouveau secretpwgen -s -y 64 1
. Pourpreview
laisser vide car il n'y a pas de previewMETABASE_DB_URI
: L'url de connexion à la Postgres.. Pourpreview
laisser vide car il n'y a pas de previewMETABASE_ENCRYPTION_SECRET_KEY
: Générer un nouveau secretpwgen -s 120 1
. Pourpreview
laisser vide car il n'y a pas de preview
Pour recette & preview uniquement:
SMTP_AUTH_USER
:user
SMTP_AUTH_PASS
: Générer un nouveau secretpwgen -s 120 1
, utilisez le MÊME password pour les deux environnements.
Mettre à jour le fichier ui/config.public.ts
sentry.dsn
: le DSN du sentry uihost
: Pour chaque environnement mettre le domaine associé
.infra/files/configs/metabase/setup-metabase.sh
server/src/config.ts
: La valeur decookieName
server/.env.test
server/tests/globalSetup.ts
server/tests/routes/users.route.test.ts
shared/helpers/openapi/generateOpenapi.test.ts
shared/routes/core.routes.ts
ui/.env.test
Les environnements de recette & preview utilisent Mailpit. Il est nécessaire de créer le fichier d'authentification via la commande:
htpasswd -B .infra/files/configs/mailpit/auth user
Entrez le mot passe correpsondant à SMTP_AUTH_PASS
.
Revoir les pages:
/
/accessibilite
/cgu
/donnees-personnelles
/mentions-legales
/politique-confidentialite
Remplacer le fichier README.md
par PROJECT_README.md
Le seed doit etre regénéré avec votre nouvelle passphrase. Pour cela faire yarn seed:update
- Décommenter les github actions
.github/workflows
- Changer le nom des images docker dans
.github/workflows/release.yml
(mna_tmpl_server
&mna_tmpl_server
) - Créer le Github Repository Secret
SLACK_WEBHOOK
(https://api.slack.com/apps/A01JENR8874)
Autorisez votre repository à accéder aux secrets d'organisation depuis https://github.com/organizations/mission-apprentissage/settings/secrets/actions
- DEPLOY_PASS
- DEPLOY_SSH_PRIVATE_KEY
yarn test
Demander à l'équipe transverse de provisionner les environnements https://github.com/mission-apprentissage/infra/blob/main/docs/provisionning.md
Une fois les environnements provisionnés et les accès défini veuillez mettre à jour le vault via
yarn vault:edit
puis refermer directement.
Mettez à jour le fichier .infra/env.ini
avec les IPs des différents serveurs.
Une fois que les modification ci-dessus ont été réalisé, faites votre première PR et mergez la dans main.
La version 1.0.0
de votre projet sera créé par la Github Action Release.
Ajoutez votre projet dans le monitoring, pour cela vous référez à https://github.com/mission-apprentissage/monitoring/blob/main/README.md
Ajoutez votre projet sur Gitguardian https://dashboard.gitguardian.com/workspace/220324/settings/workspace/integrations/github
- General:
- Features:
Issues
only - Always suggest updating pull request branches:
on
- Allow auto-merge:
on
- Automatically delete head branches :
on
- Features:
- Branches:
main
branch protection- Require a pull request before merging:
- Require approvals:
on
- Require approvals:
- Require status checks to pass before merging
tests / Tests
- Require merge queue:
- Merge method:
Squash & merge
- Merge method:
- Require a pull request before merging:
- Code security and analysis
- Private vulnerability reporting:
on
- Dependency graph:
on
- Dependabot:
- Dependabot alerts:
on
- Dependabot security updates:
on
- Grouped security updates:
on
- Dependabot alerts:
- Code scanning:
- CodeQL analysis: Setup Default
- Secret scanning:
on
- Push protection:
on
- Push protection:
- Private vulnerability reporting:
Créez un compte Shodan en tant que Member
.
Ajoutez la config Slack Webhook pour recevoir les alertes.
Ajoutez vos urls à monitorer avec notification Slack:
- <product_name>.apprentissage.beta.gouv.fr
- <product_name>-recette.apprentissage.beta.gouv.fr
- <product_name>-preview.apprentissage.beta.gouv.fr