-
Notifications
You must be signed in to change notification settings - Fork 2
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
Fusion de dora-back et dora-front en un monorepo dora #8
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- ajout d'une vue absente référencée par un tableau de bord (a du sauter quelque part dans l'historique git) - modification du script de génération et d'imports des dumps pour les tables / vues / questions spécifiques Metabase
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 21.2.0 to 22.0.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/benoitc/gunicorn/releases">gunicorn's releases</a>.</em></p> <blockquote> <h2>Gunicorn 22.0 has been released</h2> <p><strong>Gunicorn 22.0.0 has been released.</strong> This version fix the numerous security vulnerabilities. You're invited to upgrade asap your own installation.</p> <p>Changes:</p> <pre><code>22.0.0 - 2024-04-17 =================== <ul> <li>use <code>utime</code> to notify workers liveness</li> <li>migrate setup to pyproject.toml</li> <li>fix numerous security vulnerabilities in HTTP parser (closing some request smuggling vectors)</li> <li>parsing additional requests is no longer attempted past unsupported request framing</li> <li>on HTTP versions < 1.1 support for chunked transfer is refused (only used in exploits)</li> <li>requests conflicting configured or passed SCRIPT_NAME now produce a verbose error</li> <li>Trailer fields are no longer inspected for headers indicating secure scheme</li> <li>support Python 3.12</li> </ul> <p>** Breaking changes **</p> <ul> <li>minimum version is Python 3.7</li> <li>the limitations on valid characters in the HTTP method have been bounded to Internet Standards</li> <li>requests specifying unsupported transfer coding (order) are refused by default (rare)</li> <li>HTTP methods are no longer casefolded by default (IANA method registry contains none affected)</li> <li>HTTP methods containing the number sign (#) are no longer accepted by default (rare)</li> <li>HTTP versions < 1.0 or >= 2.0 are no longer accepted by default (rare, only HTTP/1.1 is supported)</li> <li>HTTP versions consisting of multiple digits or containing a prefix/suffix are no longer accepted</li> <li>HTTP header field names Gunicorn cannot safely map to variables are silently dropped, as in other software</li> <li>HTTP headers with empty field name are refused by default (no legitimate use cases, used in exploits)</li> <li>requests with both Transfer-Encoding and Content-Length are refused by default (such a message might indicate an attempt to perform request smuggling)</li> <li>empty transfer codings are no longer permitted (reportedly seen with really old & broken proxies)</li> </ul> <p>** SECURITY **</p> <ul> <li>fix CVE-2024-1135 </code></pre></li> </ul> <ol> <li>Documentation is available there: <a href="https://docs.gunicorn.org/en/stable/news.html">https://docs.gunicorn.org/en/stable/news.html</a></li> <li>Packages: <a href="https://pypi.org/project/gunicorn/">https://pypi.org/project/gunicorn/</a></li> </ol> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/benoitc/gunicorn/commit/f63d59e4d73a8ee28748d2c700fb81c8780bc419"><code>f63d59e</code></a> bump to 22.0</li> <li><a href="https://github.com/benoitc/gunicorn/commit/4ac81e0a1037ba5b570323be7430e09caa233e38"><code>4ac81e0</code></a> Merge pull request <a href="https://redirect.github.com/benoitc/gunicorn/issues/3175">#3175</a> from e-kwsm/typo</li> <li><a href="https://github.com/benoitc/gunicorn/commit/401cecfaed85d79236c7a9a1f7d8946b01c466fc"><code>401cecf</code></a> Merge pull request <a href="https://redirect.github.com/benoitc/gunicorn/issues/3179">#3179</a> from dhdaines/exclude-eventlet-0360</li> <li><a href="https://github.com/benoitc/gunicorn/commit/0243ec39ef4fc1b479ff4e1659e165f0b980b571"><code>0243ec3</code></a> fix(deps): exclude eventlet 0.36.0</li> <li><a href="https://github.com/benoitc/gunicorn/commit/628a0bcb61ef3a211d67dfd68ad1ba161cccb3b8"><code>628a0bc</code></a> chore: fix typos</li> <li><a href="https://github.com/benoitc/gunicorn/commit/88fc4a43152039c28096c8ba3eeadb3fbaa4aff9"><code>88fc4a4</code></a> Merge pull request <a href="https://redirect.github.com/benoitc/gunicorn/issues/3131">#3131</a> from pajod/patch-py12-rebased</li> <li><a href="https://github.com/benoitc/gunicorn/commit/deae2fc4c5f93bfce59be5363055d4cd4ab1b0b6"><code>deae2fc</code></a> CI: back off the agressive timeout</li> <li><a href="https://github.com/benoitc/gunicorn/commit/f4703824c323fe6867dce0e2f11013b8de319353"><code>f470382</code></a> docs: promise 3.12 compat</li> <li><a href="https://github.com/benoitc/gunicorn/commit/5e30bfa6b1a3e1f2bde7feb514d1734d28f39231"><code>5e30bfa</code></a> add changelog to project.urls (updated for PEP621)</li> <li><a href="https://github.com/benoitc/gunicorn/commit/481c3f9522edc58806a3efc5b49be4f202cc7700"><code>481c3f9</code></a> remove setup.cfg - overridden by pyproject.toml</li> <li>Additional commits viewable in <a href="https://github.com/benoitc/gunicorn/compare/21.2.0...22.0.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=gunicorn&package-manager=pip&previous-version=21.2.0&new-version=22.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/gip-inclusion/dora-back/network/alerts). </details> Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Ajout de la DR Clermont-Ferrand 63074
Le runtime actuel est en 3.11.4 - un patch de sécu, et une info qui remonte dans les build - je teste en 3.12 pendant quelque temps avant de valider la MaJ - les tests passent - Ruff qui posait des pb en 3.11 semble ok aussi
### Logger Python DB connexe à : https://trello.com/c/cb5cz7xo/35-tdb-suivi-des-notifications Permet d'utiliser le logger `dora.logs.core` qui stocke les enregistrements en base. Les éléments de base du log (niveau, message) sont inclus en tant que champs du modèle. L'objet `ActionLog` peut aussi contenir tout autre élément JSON valide complémentaire (via les `args` du logger). Sera utile pour logger par ex. certaines actions sensibles (AIPD) ou plus finement l'évolution du volume au cours du temps des notifications. Un champ `legal` du modèle sert à marquer ce genre d'enregistrement, il peut être ajouté dans le `payload`. Le logger est automatiquement chargé dans un contexte Django. #### Exemple d'utilisation (dans un contexte Django) ``` import logging dblog = logging.getLogger("dora.logs.core") dblog.error("Message d'erreur", {"details": "Mais aussi des champs optionnels en dict", "legal":True} ... ```
Cause encore non déterminée. Voir les commentaires dans le code de la vue de recherche. Une sous-requête de l'ORM ne se comporte pas de la même manière sur environnement de dev et celui de production.
Le niveau de log de Django en production est 'WARNING'. Celui de debug/dev (DEBUG=True_ est 'INFO'. Le niveau du logger 'dora.logs.core' est désormais 'INFO'.
Pour effectuer un suivi cumulatif des envois de notifications et tracer les suppressions d'utilisateurs. Ah oui, ça dépends de : gip-inclusion/dora-back#275
…on de filtres (#395)
L'exploitation sur Metabase est ... compliquée sans valeur numérique pour les chiffres ...
Une mauvaise gestion du cas où `formsInfo` vaut `null` causait le formulaire d'orientation à ne pas s'afficher pour certains services.
assorti du tracking (considéré comme une MeR)
Les UUIDs ne sont pas sérialisés directement (dumb)
fiche structure: ajout d'un bouton pour visualiser les infos de contact
Exemples : Recherche "Toulouse" sans thématique et sans besoin : On passe de **1560** requêtes en **3.7825s** à **24** requêtes en **1.1775s** Recherche "Toulouse" avec une thématique et deux besoins : On passe de **208** requêtes en **0.6408s** à **24** requêtes en **0.5969s**
https://trello.com/c/upyz8C4m Une PR dont je revais depuis longtemps… Au lieu de maintenir de notre coté les listes de valeurs définies par le schema d·i, on interroge directement le schema. Voici un premier test, sur le champ `typology` des structures, qui est une simple FK, donc assez simple à remplacer. Les M2M seront plus complexes. Il y a des gains de performances sans doute non négligeables à la clé, avec pas mal de jointures en moins, et les échanges avec l’API d·i dans les deux sens sont également simplifiés. Il restera le problème de savoir comment gérer les montées de version de schema d·i ; à voir dans quelle mesure c’est automatisable, ou si on continue de le faire à la main. @vmttn je veux bien ton avis sur l’approche !
Pytest lève souvent des avertissements de déprécation intéressants, en voici quelques uns de corrigés. voir : https://docs.pytest.org/en/stable/how-to/capture-warnings.html
Les structures obsolètes n'étaient pas filtrées.
ggounot
force-pushed
the
temp-branch
branch
11 times, most recently
from
October 22, 2024 16:18
c68c3bb
to
8585cc3
Compare
ggounot
changed the title
Merge de back et front
Fusion de dora-back et dora-front en un monorepo dora
Oct 22, 2024
jbuget
approved these changes
Oct 22, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We did it ! LGTM 🚀
This was referenced Oct 23, 2024
Merged
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🍣 Contexte / problème
Cette PR fusionne les dépôts dora-back et fora-front dans un seul dépôt unifié dora.
🍔 Solution / réalisation
🏁 TL;DR
back
et le contenu de dora-front dansfront
;post_compile
pour prendre en compte le sous-répertoireback
pour Scalingo ;release.sh
;README.md
.🏺 Import et fusion des entrepôts dora-back et dora-front
🔑 Nous avons utilisé la commande
git subtree
. Celle-ci permet d’ajouter le contenu d’un autre repository dans un sous-dossier sans perturber l’historique ni provoquer de conflits avec l’existence d’un dossier .git ou .gitignore.🤖 Dependabot
Nous avons repris la configuration Dependabot de dora-back, que nous avons enrichi au passage pour la partie front.
Il a suffit de déplacer le fichier
~/back/.github/dependabot.yml
pour le remonter à~/.github/dependabot.yml
en y ajoutant une section dédiée à npm (pour le front Sveltekit).🏭 CI / GitHub Actions
Nous avons décidé de créer 2 fichiers :
~/.github/workflows/back-ci.yml
pour le back~/.github/workflows/front-ci.yml
pour le frontLa plus gros de la manœuvre a été de préfixer certains chemins en fonction de l'app (
/front
ou/back
).Nous avons privilégié l'emploi de la propriété
working-directory
plutôt que l'emploi de la commandecd [back|front]
.🔥 Nous avons rencontré un souci d'exécution des workflows. Cela tenait au fait que l'option "Allow only organisation actions to execute" était coché. Nous avons opté pour l'option "Allow organisation and GitHub actions to execute".
⚙️ Scalingo
Côté Scalingo, il a suffi, dans un premier temps, d'ajouter aux 2 applications staging la variable d'environnement
PROJECT_DIR
spécifiant le répertoire concerné (back
oufront
) :dora-back-staging
:PROJECT_DIR=back
dora-front-staging
:PROJECT_DIR=front
Nous avons rencontré une grosse résistance pour l'application back, car il y avait un script
bin/post_compile
(étape post compile dans le buildpack lifecycle).La solution était toute simple : il suffisait d'indiquer le sous-répertoire
/back
dans le script.Nous en avons profité pour améliorer un tantinet ledit script pour coller un peu plus aux bonnes pratiques de rédaction d'un script shell.
🎁 Script de release
La modification du script a été assez simple. Nous avons simplement supprimé les paramètres possibles et nous sommes contentés d'appeler la méthode
deploy_repo()
avec le paramètre"dora"
.🧹 Issues et Pull requests
Par chance, les issues n'étaient pas utilisées sur les dépôts dora-back et dora-front.
Pour ce qui est des pull requests, dans la mesure où il y en avait peu, nous avons pris le parti de les refaire à la main, en réimportant les branches associées.
Cette commande crée un commit de merge. Nous avons cherché à nous en passer, mais ça semblait compliqué ou bancal. Nous avons sacrifié la perfection de l'historique Git sur l'hôtel du pragmatisme opérationnel.
Les descriptions et discussions ont été recopiées manuellement, avec mention des PR originales.
⏰ Organisation
Nous avons décidé de ne pas nous précipiter et fusionner / livrer le tout, tout de suite. Nous avons préféré attendre le lendemain midi, frais et requinquer, avant d'intégrer et pousser en prod ce gros changement.
🍻 Post-merge (23/10/2024)
Pour mettre en production la nouvelle organisation de code, nous avons :
PROJECT_DIR
aux applications de production sur Scalingodora/releases