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 pullRécupérez le vault depuis 1password (assurez vous d'etre connecter via op account get)
.bin/product vault:initVé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:
appavec le roledbOwnersurapimetabaseavec le rolereadsurapi
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 produitapirepo_name: le nom du repositoryapi-apprentissagedatabase_name: le nom de la BDDapidomain_name: le nom du domaineapi
Mettre à jour le fichier .bin/product-meta.sh avec les memes valeurs que le fichier .infra/env.ini
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 typenepasrepondre-api@apprentissage.beta.gouv.frMETABASE_EMAIL_FROM_ADDRESS: Utiliser la meme queEMAILMETABASE_EMAIL_FROM_NAME: Mettre à jourSEED_GPG_PASSPHRASE: Générer un nouveau secretpwgen -s 120 1MONGODB_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&productionbien faire attention à la DB à utiliser dans la connection string et d'avoirauthSource=admin - Pour
previewremplacer simplement la stringTODO_REPLACE_BY_MONGOKEYFILEpar la valeurMONGODB_KEYFILE
- Pour
MONGODB_METABASE_URI: L'url de connexion de l'utilisateurmetabase. Pourpreviewlaisser vide car il n'y a pas de previewAUTH_USER_JWT_SECRET: Générer un nouveau secretpwgen -s 120 1AUTH_PASSWORD_JWT_SECRET: Générer un nouveau secretpwgen -s 120 1SESSION_SECRET: Générer un nouveau secretpwgen -s 120 1SMTP_WEBHOOK_KEY: Générer un nouveau secretpwgen -s 64 1METABASE_ADMIN_EMAIL: L'addresse email du compte admin. Pourpreviewlaisser vide car il n'y a pas de previewMETABASE_ADMIN_PASS: Générer un nouveau secretpwgen -s -y 64 1. Pourpreviewlaisser vide car il n'y a pas de previewMETABASE_DB_URI: L'url de connexion à la Postgres.. Pourpreviewlaisser vide car il n'y a pas de previewMETABASE_ENCRYPTION_SECRET_KEY: Générer un nouveau secretpwgen -s 120 1. Pourpreviewlaisser vide car il n'y a pas de preview
Pour recette & preview uniquement:
SMTP_AUTH_USER:userSMTP_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.shserver/src/config.ts: La valeur decookieNameserver/.env.testserver/tests/globalSetup.tsserver/tests/routes/users.route.test.tsshared/helpers/openapi/generateOpenapi.test.tsshared/routes/core.routes.tsui/.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 userEntrez 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(tmpl_xx) - 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:editpuis 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:
Issuesonly - Always suggest updating pull request branches:
on - Allow auto-merge:
on - Automatically delete head branches :
on
- Features:
- Branches:
mainbranch 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