• [^] # Re: La faille entre la chaise et le clavier

    Posté par . En réponse au lien Dependency Confusion: How I Hacked Into Apple, Microsoft and Dozens of Other Companies. Évalué à 10.

    Attention quand même à ne pas basculer dans la situation inverse.

    La CI/CD existe et marche très bien sans ces gestionnaires de paquets drogués à la version latest.

    Dans ma boîte, j'ai un Jenkins qui recompile tous nos logiciels, qu'ils soient en C++ ou en Python. Et on a même plusieurs environnements, SuSE 10, SuSE 11, CentOS 7, Ubuntu 20.04, avec des compilateurs différents (GCC de 7 à 9), des versions de boost différents (pour le C++), etc.

    Mais TOUT est hors-ligne. C'est le développeur qui choisit la version, qui la regarde, et qui la soumet à la plateforme de CI/CD (souvent par le biais d'un dépôt Git). C'est pour moi hors de question qu'une plateforme de CI/CD aille chercher une version d'une bibliothèque sur Internet à poil.

    Pour Yarn, il existe par exemple yarn install --offline --non-interactive --frozen-lockfile, et dans le lockfile, il y a les condensats des paquets. C'est sûr, le développeur ne peut pas tout vérifier, mais au moins, la plateforme de CI/CD ne fait rien en cachette.

    Avant, yavait pas de CI/CD. Mais un logiciel comme Jenkins, forké en 2011 à partir de Hudson créé en 2005. Et avant ça, il existait d'autres solutions. npm est sorti en 2010. Il n'y a donc aucune excuse pour lui, d'un point de vue de la sécurité. Pareil pour pip, 2011, aucune excuse. RubyGems date de 2003, donc c'est plus excusable.