Skip to content

fix: add test-release stage for testing and fixing releases (#1040)

Ayoub Abidi requested to merge fix/fix-release-pipeline into develop

Amélioration du Pipeline CI/CD

Cette merge request propose une restructuration majeure de notre pipeline CI/CD pour résoudre les problèmes liés aux releases et améliorer la gestion des artefacts. L'objectif principal était de créer un environnement de test sécurisé pour les releases tout en maintenant une structure de pipeline logique et maintenable.

Changements Principaux

0. Tests unitaires Idempotents

  • Refactorisation de test.sh pour assurer l'idempotence de pipeline

1. Migration de GoReleaser vers la Version 2

  • Mise à jour du fichier .goreleaser.yml vers la syntaxe de la version 2

2. Réorganisation des Stages

  • Modification de l'ordre des stages pour suivre un flux plus logique :
    test → lint → publish → pre-release-cleanup → test-release → release → post-release-cleanup → cleanup → notify
  • Les tests et le linting sont maintenant exécutés en premier pour garantir la qualité du code avant toute tentative de release

3. Nouveaux Jobs de Release

  • Ajout de test-release pour tester le processus de release en isolation
  • Introduction de phases de nettoyage avant (pre-release-cleanup) et après (post-release-cleanup) les releases
  • Utilisation du mode "snapshot" de GoReleaser pour les tests

4. Amélioration de la Maintenance

  • Séparation des scripts dans des fichiers .sh individuels dans le dossier ci/
  • Meilleure gestion des erreurs avec set -e dans tous les scripts
  • Fichier .gitlab-ci.yml plus propre et plus facile à comprendre

5. Gestion des Artefacts

Note : N'ayant pas une expertise approfondie dans la gestion des artefacts GitLab, j'ai mis en place une approche prudente :

  • Nettoyage systématique du dossier dist avant et après les releases
  • Vérification de la création des artefacts pendant les test-releases
  • Prévention des conflits d'artefacts entre les jobs

Modifications Techniques

Nouveau Processus de Release

  1. Pre-release cleanup : Nettoyage de l'environnement
  2. Test-release : Exécution de GoReleaser en mode snapshot
  3. Release : Release officielle avec vérification de version
  4. Post-release cleanup : Nettoyage final

Amélioration des Scripts

  • Tous les scripts sont maintenant dans des fichiers séparés pour une meilleure maintenance
  • Ajout de logging détaillé pour faciliter le debugging
  • Gestion appropriée des erreurs et des cas d'échec

Points d'Attention

  1. Gestion des Artefacts :

    • La solution actuelle est fonctionnelle mais pourrait être optimisée
    • Des améliorations futures pourraient être envisagées selon les besoins
  2. Test-Release :

    • Le job test-release utilise le mode snapshot de GoReleaser
    • Il ne publie pas réellement les artefacts mais simule le processus
  3. Cleanup :

    • Les scripts de cleanup sont peut-être plus agressifs que nécessaire
    • À ajuster selon les retours d'expérience
Edited by Ayoub Abidi

Merge request reports

Loading