\newpage # Mes réalisations Automatisation upstream -> charts -> infra avec GitlabCI ATTENTION : c'est du CI/cd (continuous delivery) car intervention humaine entre staging et prod. TODO : compléter * Présentation processus automatisation : pouvoir passer d'une nouvelle version de l'application au déploiement de l'infrastructure ## Réalisation 1 : Livraison continue ### Contexte * manque de ressources humaines (2 personnes sur 4 ne produisaient rien de concret et/ou utilisable) * ET de ressources de temps * il a fallu imaginer une façon atypique de créer une chaîne de publication logicielle avec **l'existant** ### Analyse * 3 dépôts (donner schéma) * chacun 1 pipeline existant pour les tests * on souhaite pouvoir passer d'un dépôt à l'autre * suivant quelle(s) règle(s) ? * (RAPPEL chap. précédent) : Échanges avec Maxime concernant la promotion logicielle ### Solution * 2 règles : * code = tests * si tag : on fait évoluer (promotion) du tag * 3 dépôts, donc 3 pipeline (donner schéma des 3 pipelines simples), Cf. https://mermaid.live/view#pako:eNqNVU2PmzAQ_SuW97LbTRCBJiQcKlVND1VVtVLVHlqqyIEJWAs2sk3UNMrvWfXef5A_VoMhfCyRwsn2vDfMezOYIw55BNjHUhEFa0piQbLp3gkY0s8dmlloff6bn_8p9C2XSgDJTKiod5u82KZUJj76Ui5CoihniGYkBonWPHwCMSCEPMuo2oQJEcpHZocekSIxeleeyYAZxs9Xv9B0-ubC7OepQgqkkj7aCsLCBOR1RJldwPm5MJDqtJe81SFpiR5X2af0lVC24yIDFNV-9cXcIae1sgmVgYotm1xNblPxzFpY7lS3JqYsHjSgz6sxAz_7_A9sJ8gYORc86rywAXahlfCaNWr6VdjA-W6wix61vx_rwoeyX6i9McFA-o2stkvmnRHs2z67bZ87jtNyuYkgT_mhLbuclZRTyIAp1Kvc4Knc8Kexpg6GwaC1mG0KuqpIuyuKsPoUm-4_ojwhEtD6_Xd0H3IhQMd3DyPVGU96pZVHjcIKW5liWKPjcAU0GIZOrIMdmnSlt2PgTpbaOj1Onz-i-z1JaWTupjClWtLDTUkujlJWZQCUE1FnuEHC6HS9QFQ8fdn56K1pWUZYAWkKeIIzEBmhkb6gjyU7wCrRHQmwr5cR7EiRqgAH7KShpFD864GF2Ne9hwkWvIgT7O9IKvWuyKP2gm8gOWE_OM8uIL3H_hH_xr5ju9bKXc5tz17atrecORN80MfezHLdue3MVp6zmC-c-WmC_1QpbGvhOp7rrdzX86WmLiYYIqq4-GR-MNV_5vQfDBQ1Kg * Résultat : * Cf. résultat **simplifié** https://mermaid.live/view#pako:eNqNVcuO0zAU_ZUrz2aGaaM0mTZtFkiIskCAQEKwgKLKk7ipNYkd2U41per3IPb8QX8Mx06ax2RGzcr2Pec-zr2xDyjiMUEhkgorsqQ4ETgb77wVA_1dwcSB5elvfvqn4FsulSA4s6ai2q3z4j6lchvCl3IRYUU5A5rhhEhY8uiBiB4h4llG1TraYqFCsDu4BYUTeFueyRWzjJ-vfsF4_PrM7PoxJkWkkqHhCnL6U1iIOe1QmywlLdHDNXQp3Twp23CREYgrNbqpXoHXCFWbSoNhy9pX7dtmPHFmjj_WwieUJT15u7wK01Ory3_PNgIPkXPB41bAGtiGmsIr1rCkbWMbPahr19aG9-t5UsaFDno1Xchq5LcxY7JrGug3DWxJScvlOiZ5yvdN2uUQpJySjDAFncwtnso1fxjqVq_LFq2LuU-JzirW6ooiMn9Q3dZbyLdYEli--w7XEReCaPvmZiA7q0kntfKortBgjSiWNdznlq2F7df_TNuGwC0vlSp6Uj5_gOsdTmlsb4sopTrbm4ucnMWizHggkGNRebighMHBeYIwPH39hPDGdiPDrCBpSppxuXPgo44pQccVBEjx-MI115rFl66Fgdtu8L9pynruf-8jWg3oBEEjlBGRYRrrJ-BQYldIbfXwrFColzHZ4CJVK7RiRw3FheJf9yxCoR5TMkKCF8kWhRucSr0r8rh5QmpIjtkPzrMzSO9ReECPKPRc31n486kbuHPXDeYTb4T2-jiYOL4_db3JIvBm05k3PY7Qb-PCdWa-F_jBwr-bzjV1NkIkpoqLT_YJMy_Z8T-0P1ds * Plus complet : https://mermaid.live/view#pako:eNqNVcuO0zAU_ZUrz2aGaaM0mb6yQEKUBQIEEoIFFFVucttak9iR7VRTqn4PYs8f9Mdw4qZ5TDpqVrbvOdc-597YexKKCElAlKYaZ4yuJU36W2_OwXw3MHBgdvybHv9p-JYqLZEmNpSdZos0W8ZMbQL4kg9CqpngwBK6RgUzET6ibBFCkSRML8INlToAO4N70HQNb_M1NeeW8fPVL-j3X5-ZzTxFSKPSKoClpDzcoLqMyLNLPP7JLKRYbSSvdCiWo7tVNilNJYyvhEwQopNfTTE34FVWlqE8ULBVmavMbU88cEaO3zelWTO-bhWgyTthWn42-e_5StIucipFVNuwBNahhfATq9P0i7CW8_VgHd1pfzNWh7dlP1N7ZYKW9CtZVZXsnhFuqzr7VZ1rjrN8uIgwjcWuOnbeK7FgmCDX0Di5xTO1EI9dRW01g0UbMcsYzaki467MwuJXLKt_D-mGKoTZu-9wGwop0cRXdx2ns540jpYvlQoLbGGKZXW2wwVQqxlqsRq2bdKF2naBa1lO1pl2-vwBbrc0ZpG9m8KYGUl3VyU5O8p4kQEhpfKU4QoJnd31DFHwzGUXwBtbsoTyDOMYq556cOCj2VOB2VciYPb0wqVaa9iXrpiOu7Xz56pkXbo72ohaARqbkB5JUCaURebB2efYOdEb02FzEphhhCuaxXpO5vxgoDTT4uuOhyQwvYw9IkW23pBgRWNlZlkaVQ9WCUkp_yFEcgaZOQn25IkEnus7U38ydMfuxHXHk4HXIzuzPB44vj90vcF07I2GI2946JHfRQrXGfne2B9P_YfhxFBHPYIR00J-sg9m8W4e_gO7V3yk TODO : mettre le complet plutôt qu'un autre ? ### Limites * même tag sur tous les dépôts… que faire si on dérive/décalle les numéros de version ? * plus on ajoute de dépôts, plus on devra modifier les pipelines pour qu'elles s'enchaînent => travail devient colossal ### Amélioration(s) possibles(s) * dépôt indépendants avec leur propre pipeline qui **teste** puis **publie** sur des **dépôts utilisables** * un dépôt peut utiliser des lib en dépendances, en utilisant les dépôts précédemment complétés : avec des versions fixes ! ## Réalisation 2 : États Terraform ### Contexte * États continuellement cassés par les collaborateurs * Incompréhension/ignorance des collaborateurs sur le fonctionnement ### Analyse * États sur Gitlab CI : * gitlab-ci pour les pipelines de test * staging pour l'env de pré-production * prod pour l'env de prod * Nécessité d'en avoir 1 par développeur * Manque de documentation pour savoir comment procéder * Trop d'erreurs manuelles dans l'utilisation des commandes Terraform ### Solution * dossier scripts avec la plupart des commandes * documentation * ajout d'un Makefile utilisant les scripts * préparation de fichiers pré-remplis ### Limites * si modification à faire : doit être fait sur tous les dépôts * si template évolue : les dépôts qui l'ont utilisé n'ont plus les mises à jour. On pourrait avec rebase, mais ça casserait l'historique de chacun des dépôts ### Pour aller plus loin * Forme de dépendance des nouveaux dépôts à celui de template (avec une commande de mise à jour des fichiers par exemple) * Possibilité de choisir/configurer Terraform ou OpenTofu ## Conclusion