-
Notifications
You must be signed in to change notification settings - Fork 101
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
Passage de CircleCI vers GitHub Actions #1663
Conversation
18f9e1a
to
4ac48b2
Compare
J'ai corrigé le point suivant en éditant la description : cette PR ne va pas fermer openfisca/openfisca-core#1030, car elle vient simplement traiter le cas d'OpenFisca-France, pas de Core. On pourra considérer que openfisca/openfisca-core#1030 est fermée quand Core, Country-Template et Extension-Template auront migré 🙂 |
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.
C'est un super début, merci @HAEKADI ! 😃
Il faudra supprimer toute la configuration CircleCI, et privilégier le dossier .github
pour les scripts, plutôt que de rendre visible le dossier ci-scripts
, car la majorité des contributeurs n'ont pas connaissance de cette machinerie.
Il pourrait être utile qu'on ait un échange synchrone pour déterminer la stratégie : il m'aurait semblé pertinent de commencer par le Country Template 🙂
if ! changes=$(git diff-index --name-only --diff-filter=ACMR --exit-code $last_tagged_commit -- "*.py") | ||
then | ||
echo "Linting the following Python files:" | ||
echo $changes | ||
flake8 $changes | ||
else echo "No changed Python files to lint" | ||
fi |
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.
Est-ce qu'on ne pourrait pas migrer cette logique (qui au final n'est que du passage de paramètre à flake8
) dans le Makefile, sur la base du travail fait par @maukoquiroga dans openfisca/openfisca-core#1036 ?
Je trouverais bienvenu de consolider l'exécution du lint dans une seule commande, avec seulement un passage de paramètre différent en CI, où l'on va se focaliser sur les fichiers modifiés.
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.
En fait au sujet du lint j'ai envisagé l'utilisation de super-linter directement 🤔
ci-scripts/split-tests.sh
Outdated
fi | ||
done | ||
|
||
openfisca test $final_list |
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.
Si les tests sont exécutés, alors le script fait plus que split-tests
🙂
Je crois préférable qu'il se contente de donner une liste de tests à exécuter, et que openfisca test
soit appelé indépendamment.
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.
Hello ! Il existe pytest-split qui facilite le split de tests par durations, et l'auteur donne un example avec Github Actions.
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.
Hello! Merci @maukoquiroga :) Le problème est que j'utilise openfisca test tests/**/*.py
pour exécuter les tests Python et non pas la commande pytest
. D'après ce que j'ai compris il n'y a pas de consensus sur les commandes à utiliser sur la CI 🤔
L'idée que les fichiers dans |
@MattiSG Suite à notre dernier échange, j'ai supprimé le job |
I have been experimenting with Act for local execution, and it is unstable to say the least. Here are the details: One problem, that I encountered early on, was a cache problem. As it is not possible to save the build cache. One workaround was to add a The errors are random for the same code base and config file. The individual jobs succeed "sometimes" except for Sometimes the builds failed with a I have experimented with lowering the number of parallelism (and by consequence of containers), and it did not help. There is always a sub Looking at community discussions, some people have encountered similar issues but no solution, that I could find, was suggested. I tested with @sandcha, and she encountered similar issues as well. Also, one of the biggest issues, is how slow and time consuming it actually is. It takes a simple Giving the average run time of 2 min on I am not certain about the origin of the issue (Docker or Act), but the more I test it, the more unstable |
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.
🚀 😃
J'ai testé la publication du package du job J'avais deux options pour sauvegarder le répértoire J'ai testé les deux et finalement j'ai choisi le |
La clé SSH qui permet le déploiement de l'API France est disponible dans le secret |
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.
Awesome, I think we're finally ready to ship! 😃
Please just make sure to add back the condition on deployment to deploy only on master
😉
setup.py
Outdated
@@ -5,7 +5,7 @@ | |||
|
|||
setup( | |||
name = "OpenFisca-France", | |||
version = "74.1.1-beta.1", | |||
version = "74.1.1-beta.4", |
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.
Do we really need to publish a new tagged version if we only change CI stuff? 🤔
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.
I am not sure. We did when we restructured the CircleCI config file.
Oui, comme c'est une prerelease elle n'est pas installée comme |
Co-authored-by: Matti Schneider <matti.schneider@beta.gouv.fr>
Co-authored-by: Matti Schneider <matti.schneider@beta.gouv.fr>
Super ! On a un juste un souci : la mise à jour de l'API a échoué 😕 J'ai bien suivi le déroulé du déploiement, qui a fonctionné correctement, à ceci près que Je m'inquiète donc que le problème provienne de la rapidité d'exécution sur GitHub Actions : peut-être que le délai entre la publication sur Pypi et l'installation n'est pas suffisant ? Je propose que nous ajoutions un test automatisé pour vérifier que la version de l'API déployée est bien celle que nous venons de publier. Cela nous permettra a minima d'être informés rapidement si le problème arrive à nouveau ! |
Dans la mesure où la configuration CircleCI a été supprimée, je vais :
|
@MattiSG On peut tester de suspendre l'exécution quelque temps entre la publication sur Pypi et le déploiement de l'api ? |
Ça sera en dernier recours. Déjà, vérifions à quelle fréquence le problème apparaît 😉 |
A priori le problème continue à apparaître régulièrement. À première vue, je serais d'avis d'attendre que openfisca/openfisca-ops#95 soit finalisée, et que le déploiement se fasse automatiquement à la publication sur Pypi. Ainsi, ça ne serait plus la CI qui déploierait l'instance de France sur openfisca.org, elle se contenterait de publier sur Pypi, et un autre dispositif effectuerait la mise à jour, comme n'importe quel autre client. Cela permettra d'augmenter le dogfooding et de tester de bout en bout la procédure d'installation proposée aux tiers 🙂 |
Ok. Donc en attendant, quelqu'un doit se charger de la mise à jour manuelle en cas de problème 🤔 |
Je ne pense pas que ça soit vraiment nécessaire : en l'état, on aura au pire une version de retard, de manière imprévisible. Or, nous n'avons aucune promesse sur le déploiement de cette API. Je ne pense donc pas que la situation actuelle soit problématique 🙂 |
Related to #1030
Related to #1027
GitHub Actions
J'ai dupliqué le même schéma du workflow que celui-ci #1650.
J'ai testé le workflow sur plusieurs versions de Python la
3.7
,3.8
et la3.9
. Tous les jobs passent à l'exception dutest-api
pourPython 3.9
qui tourne sans arrêt.Ce qu'il reste à faire:
PYPI_PASSWORD
à GitHub Secretsdeploy
CircleCI
une fois la PR validée