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

Automatiser la recréation de l'image en vigueur #45

Open
thbar opened this issue May 23, 2022 · 4 comments
Open

Automatiser la recréation de l'image en vigueur #45

thbar opened this issue May 23, 2022 · 4 comments

Comments

@thbar
Copy link
Contributor

thbar commented May 23, 2022

L'image de départ utilisée en production est spécifiée ici:

https://github.com/etalab/transport-site/blob/b06638a7623718dfbca21cbee25c6d5f425bc375/Dockerfile#L1

Dans etalab/transport-site#2406, j'ai mis en place le scan de cette image via Trivy de façon hebdomadaire.

Nous pouvons ensuite aller à l'étape suivante, qui consiste à reconstruire cette même référence et à la re-publier.

Il faut pour cela:

  1. Déterminer la bonne façon de re-déclencher une construction (pas depuis master, mais depuis le bon point de référence qui a servi à créer la release)
  2. Avoir un processus automatisé de qualité suffisante pour pouvoir asserter que l'image sera fonctionnelle (car une fois que l'image est republiée sous la même référence, le prochain déploiement de l'application se fera dessus)

Sur le point 2., j'ai déjà implémenté des checks, qui seront potentiellement suffisants:

# NOTE: the following tests rely on grep exit code (0 if match found)
- name: Test that Node can start and has expected version
run: docker run --rm ${{ env.TEST_TAG }} /bin/bash -c 'node --version' | grep '${{ env.TEST_EXPECTED_NODE_OUTPUT }}'
- name: Test that Elixir can start and has expected version
run: docker run --rm ${{ env.TEST_TAG }} /bin/bash -c 'elixir --version' | grep '${{ env.TEST_EXPECTED_ELIXIR_OUTPUT }}'
- name: Test that Erlang can start and has expected version (major + minor + optional revision number)
run: docker run --rm ${{ env.TEST_TAG }} /bin/bash -c "erl -eval '{ok, Version} = file:read_file(filename:join([code:root_dir(), \"releases\", erlang:system_info(otp_release), \"OTP_VERSION\"])), io:fwrite(Version), halt().' -noshell" | grep '${{ env.TEST_EXPECTED_ERLANG_OUTPUT }}'

Je crée le ticket pour noter l'idée, et je vais aller mettre à jour autrement pour aujourd'hui, à savoir en créant une nouvelle image.

@thbar
Copy link
Contributor Author

thbar commented May 23, 2022

Notes supplémentaires pour la vérification automatisée :

  • la construction de l'image rapporte transport-tools au passage (
    FROM ghcr.io/etalab/transport-tools:v1.0.3 as transport-tools
    ) et si on automatise, il faudrait vérifier ce point dans la cible (ici)
  • les parties associées peuvent inclure des failles
  • de façon générale, on pourrait avoir un seuil de vulnérabilités à la publication également (scan Trivy préalable à publication)

@thbar
Copy link
Contributor Author

thbar commented Nov 10, 2022

Tests en cours avec le workflow_dispatch event trigger.

@thbar
Copy link
Contributor Author

thbar commented Nov 10, 2022

Ca fonctionne bien, j'ai pu reconstruire l'image, capturé vite fait en vidéo comme ça tout le monde pourra le faire:

rebuild-image.mp4

@thbar
Copy link
Contributor Author

thbar commented Nov 10, 2022

Prochaines étapes : s'inspirer de ça, trouver comment prendre "juste la latest" et redéclencher une fois par semaine pour avoir les patchs.

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

No branches or pull requests

1 participant