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

Restructure la configuration CircleCI #1650

Merged
merged 30 commits into from
Sep 1, 2021
Merged

Restructure la configuration CircleCI #1650

merged 30 commits into from
Sep 1, 2021

Conversation

HAEKADI
Copy link
Contributor

@HAEKADI HAEKADI commented Aug 18, 2021

Closes #1643

  • Amélioration technique.
  • Périodes concernées : toutes.
  • Zones impactées : .circleci/config.yml.
  • Détails :
    • Sépare les jobs test-python et test-yaml du build.
    • Regroupe les deux jobs lint_python_files et lint_yaml_files dans un seul job.
    • Rend le job check-version-and-changelog dépendant de tous les autres jobs.

@HAEKADI
Copy link
Contributor Author

HAEKADI commented Aug 18, 2021

Je pense qu'il faudra aussi changer les status-checks du merge vers master.

@HAEKADI HAEKADI self-assigned this Aug 18, 2021
@HAEKADI
Copy link
Contributor Author

HAEKADI commented Aug 18, 2021

Suite à un échange avec @MattiSG, je sépare le job install du job build.
Auparavant, l'installation des dépendances se faisait au niveau du job build avec le make build au lieu du make install.
Désormais, le job install se chargera du make install et le job build du make build.
Le linting dépendra de l'install et les tests dépendront du build.
Par contre, dans ce cas nous exécutons le pip install openfisca-core[web-api]deux fois.
@MattiSG doit-on remplacer le cache sauvegardé à l' install par celui du build ou sauvegarder les deux?

@MattiSG
Copy link
Member

MattiSG commented Aug 18, 2021

Par contre, dans ce cas nous exécutons le pip install openfisca-core[web-api]deux fois.

Je ne comprends pas pourquoi make build comprend pip install openfisca-core[web-api]. Éventuellement, je peux admettre que make build déclenche make install, mais ce doublon me gêne.
De même, je ne comprends pas pourquoi make build déclenche make deps, ni pourquoi make deps n'installe en réalité que des dépendances utiles pour le packaging.
@maukoquiroga as-tu des éléments de compréhension sur le sujet ?

En l'état, je suggèrerais de laisser tel quel pour ne pas modifier le comportement de make build sans le comprendre, et d'ouvrir une autre PR pour supprimer pip install openfisca-core[web-api] de make build.

Copy link
Member

@MattiSG MattiSG left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A priori pas encore prêt pour une revue au vu du dernier commentaire, merci de m'assigner pour la revue quand ce sera prêt :)

.circleci/config.yml Outdated Show resolved Hide resolved
@HAEKADI
Copy link
Contributor Author

HAEKADI commented Aug 19, 2021

@MattiSG Donc pour le moment, je ne sépare pas le job install du build?

@MattiSG
Copy link
Member

MattiSG commented Aug 19, 2021

Donc pour le moment, je ne sépare pas le job install du build?

Pardon, je me suis mal exprimé. Je pense que cette tâche est toujours pertinente. Je parlais simplement d'éclater dans une autre PR la modification du makefile pour retirer le doublon d'installation des dépendances 🙂

@HAEKADI
Copy link
Contributor Author

HAEKADI commented Aug 20, 2021

@MattiSG Je ne sais pas s'il faut re-sauvegarder un cache des dépendances (déjà sauvgardées à l'install) après le build ?

@HAEKADI HAEKADI force-pushed the config-ci branch 2 times, most recently from 0d30e27 to 293df2a Compare August 20, 2021 14:40
@MattiSG
Copy link
Member

MattiSG commented Aug 24, 2021

Je ne sais pas s'il faut re-sauvegarder un cache des dépendances (déjà sauvegardées à l'install) après le build ?

Vu que make build déclenche des appels à pip install, il me semble pertinent de re-sauvegarder le cache en effet !

Copy link
Member

@MattiSG MattiSG left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Waiting for the PR to not be ready for review for a deeper review 🙂

.circleci/lint-changed-python-files.sh Outdated Show resolved Hide resolved
.circleci/lint-changed-yaml-tests.sh Outdated Show resolved Hide resolved
.circleci/lint-changed-python-files.sh Outdated Show resolved Hide resolved
.circleci/lint-changed-yaml-tests.sh Outdated Show resolved Hide resolved
@HAEKADI HAEKADI marked this pull request as ready for review August 24, 2021 13:27
@HAEKADI HAEKADI requested a review from MattiSG August 24, 2021 13:28
Copy link
Member

@MattiSG MattiSG left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On y est presque ! 😃

(désolé pour les commentaires en anglais, j'ai oublié qu'on était sur France)

.circleci/config.yml Outdated Show resolved Hide resolved
.circleci/config.yml Outdated Show resolved Hide resolved
.circleci/config.yml Outdated Show resolved Hide resolved
.circleci/config.yml Outdated Show resolved Hide resolved
.circleci/config.yml Outdated Show resolved Hide resolved
.circleci/config.yml Outdated Show resolved Hide resolved
- test_python
- test_yaml
- test_api
- lint_files
- deploy:
requires:
- check_version_and_changelog
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move this downwards to align dependencies order with reading order.

I would be at ease with minimising the number of dependencies, knowing they are transitive: if check_version_and_changelog passes and it requires all the other jobs, we maybe don't need to list all of them explicitly. Do whatever feels safer to you though 🙂

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je trouve aussi que c'est redondant. Je les avais gardées pour des raisons de lisibilité du fichier de config. Mais vu que tu penses aussi qu'il y a une redondance, je les ai supprimées.

Copy link
Contributor Author

@HAEKADI HAEKADI Aug 24, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Donc pour le deploy, je ne garde que le check_version_and_changelog 🤔

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'ai l'impression… ça fait un peu peur, non ? 😅

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Un peu 😬 Mais le DAG montre clairement les dépendances, donc ça ira je pense 😅

@HAEKADI HAEKADI requested a review from MattiSG August 24, 2021 15:45
Copy link
Member

@MattiSG MattiSG left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C'est si beau 😭
Merci @HAEKADI !

Capture d’écran 2021-08-24 à 18 28 25

Capture d’écran 2021-08-24 à 18 29 49

.circleci/config.yml Outdated Show resolved Hide resolved
@MattiSG
Copy link
Member

MattiSG commented Aug 24, 2021

J'ai mis à jour les règles de protection de branche. Toutes les PR ouvertes devront donc faire un rebase.

@HAEKADI HAEKADI force-pushed the config-ci branch 2 times, most recently from 247d0e5 to 6a0747d Compare August 24, 2021 17:33
@HAEKADI
Copy link
Contributor Author

HAEKADI commented Aug 24, 2021

@MattiSG Je ne merge pas vu que test_python ne passe pas.
Je ne comprends pas du tout la source de l'erreur, sachant que je n'ai rien changé dans la config depuis cette exécution, sauf le bump de la version et le rebase, et que le test en question tests/test_metadata.pypasse en local sans aucun problème.
Ce qui m'amène à croire que l'erreur provient peut-être du cache 🤔

@HAEKADI
Copy link
Contributor Author

HAEKADI commented Aug 25, 2021

@sandcha a restitué les règles de protection de la master, pour ne pas bloquer les autres PRs, en attendant la résolution de ce bug.

@HAEKADI
Copy link
Contributor Author

HAEKADI commented Aug 25, 2021

Le problème provenait effectivement du cache.

En re-exécutant le job test_python avec SSH, après le commit du bump de la version, je ne retrouve plus Openfisca-France dans l'environnement, d'où l'échec du test test_metadata.py.

L'exécution de make install dans le job test_python résound le problème, ce qui confirme davantage que le cache ne fonctionne pas pour ce job.

La solution que j'ai pu retrouver est de sauvegarder le build dans un cache v2, séparé du cache de v1 l'install.

Je pense que ceci crée effectivement des redondances, mais pour le moment c'est la seule solution que j'ai pu trouver.
La restructuration du Makefile peut potentiellement remédier à ce problème.

J'ai lancé les tests plusieurs fois sur la CI pour être sûre.

@HAEKADI HAEKADI requested a review from MattiSG August 25, 2021 17:02
CHANGELOG.md Outdated Show resolved Hide resolved
CHANGELOG.md Outdated Show resolved Hide resolved
@HAEKADI
Copy link
Contributor Author

HAEKADI commented Sep 1, 2021

@MattiSG J'ai fait le rebase, mis à jour le changelog et le setup, et les tests passent. Est-ce que tu peux mettre à jour les règles de protection pour faire le merge, please?

@MattiSG
Copy link
Member

MattiSG commented Sep 1, 2021

J'ai désactivé l'obligation de passer les anciens tests lint, mais pas encore activé l'obligation de passer les nouveaux tests, afin de ne pas bloquer l'intégration de branches déjà validées et en attente d'intégration. La protection actuelle me semble adéquate car check_version_and_changelog est toujours obligatoire, et qu'une fois cette branche intégrée, cela impliquera que tous les tests passent.
On pourra toujours activer des obligations supplémentaires pour plus de lisibilité plus tard si le besoin s'en fait sentir 🙂

@bonjourmauko
Copy link
Member

Par contre, dans ce cas nous exécutons le pip install openfisca-core[web-api]deux fois.

Je ne comprends pas pourquoi make build comprend pip install openfisca-core[web-api]. Éventuellement, je peux admettre que make build déclenche make install, mais ce doublon me gêne.
De même, je ne comprends pas pourquoi make build déclenche make deps, ni pourquoi make deps n'installe en réalité que des dépendances utiles pour le packaging.
@maukoquiroga as-tu des éléments de compréhension sur le sujet ?

En l'état, je suggèrerais de laisser tel quel pour ne pas modifier le comportement de make build sans le comprendre, et d'ouvrir une autre PR pour supprimer pip install openfisca-core[web-api] de make build.

Hello @HAEKADI , si encore utile : je pense que make est particulièrement utile pour les tâches de test et de lint, et que pour la gestion de dépendances nous avons d'autres outils plus pertinentes, comme setuptools et poetry.

J'ai fait une proposition dans ce sens sur openfisca/openfisca-core#1015. Je te propose qu'on itère dessus, et qu'une fois qu'on arrive à un consensus on essaie de propager ça :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Restructurer la configuration CircleCI
3 participants