DocsGitLabComposants CI/CDComposants CI/CD Assurez-vous d’avoir lu CI/CD avec Mélodium au préalable. Composant CI/CD Des composants GitLab CI/CD sont disponibles pour exécuter Mélodium dans les runners GitLab : Mélodium GitLab Components . Mélodium sur GitLab CI La configuration à ajouter dans le YAML GitLab est : include: - component: gitlab.com/melodium/gitlab-ci/melodium@v0.10 inputs: job_name: melodium-ci command: run .melodium-ci/Compo.toml --api_token <YOUR_RUN_API_TOKEN> --output_directory logs --repository_clone_url "$CI_REPOSITORY_URL" --repository_clone_ref "$CI_COMMIT_REF_NAME" --on_gitlab true --ci_service_token "$PERSONNAL_GITLAB_API_TOKEN" --ci_service_project "$CI_PROJECT_ID" --ci_service_sha "$CI_COMMIT_SHA" --ci_service_ref "$CI_COMMIT_REF_NAME" --ci_service_pipeline "$CI_PIPELINE_ID" melodium-ci: artifacts: paths: - logs Référez-vous à melodium.yml pour la liste complète des paramètres d’entrée. Distribuer le travail dans un runner GitLab Un composant GitLab pour exécuter Mélodium avec distribution locale est disponible : include: - component: gitlab.com/melodium/gitlab-ci/melodium-local-distrib@v0.10 inputs: job_name: melodium-ci command: run .melodium-ci/Compo.toml --work_location compose --api_token <YOUR_RUN_API_TOKEN> --output_directory logs --repository_clone_url "$CI_REPOSITORY_URL" --repository_clone_ref "$CI_COMMIT_REF_NAME" --on_gitlab true --ci_service_token "$PERSONNAL_GITLAB_API_TOKEN" --ci_service_project "$CI_PROJECT_ID" --ci_service_sha "$CI_COMMIT_SHA" --ci_service_ref "$CI_COMMIT_REF_NAME" --ci_service_pipeline "$CI_PIPELINE_ID" melodium-ci: artifacts: paths: - logs L’utilisation de la distribution locale dans GitLab permet de tirer pleinement parti des runners fournis sans dépendre d’un cluster supplémentaire. Il peut aussi être utile d’utiliser des runners de plus grande taille en appliquant des tags (voir GitLab Runners ) : melodium-ci: tags: - saas-linux-medium-amd64 artifacts: paths: - logs Référez-vous à melodium-local-distrib.yml pour la liste complète des paramètres d’entrée. Runner Windows Un composant GitLab pour exécuter Mélodium sur un runner Windows est disponible : include: - component: gitlab.com/melodium/gitlab-ci/melodium-windows@v0.10 inputs: job_name: melodium-ci command: run .melodium-ci/Compo.toml --api_token <YOUR_RUN_API_TOKEN> --output_directory logs --repository_clone_url "$CI_REPOSITORY_URL" --repository_clone_ref "$CI_COMMIT_REF_NAME" --on_gitlab true --ci_service_token "$PERSONNAL_GITLAB_API_TOKEN" --ci_service_project "$CI_PROJECT_ID" --ci_service_sha "$CI_COMMIT_SHA" --ci_service_ref "$CI_COMMIT_REF_NAME" --ci_service_pipeline "$CI_PIPELINE_ID" melodium-ci: artifacts: paths: - logs Référez-vous à melodium-windows.yml pour la liste complète des paramètres d’entrée. Runner Mac OS Un composant GitLab pour exécuter Mélodium sur un runner Mac OS est disponible : include: - component: gitlab.com/melodium/gitlab-ci/melodium-macos@v0.10 inputs: job_name: melodium-ci command: run .melodium-ci/Compo.toml --api_token <YOUR_RUN_API_TOKEN> --output_directory logs --repository_clone_url "$CI_REPOSITORY_URL" --repository_clone_ref "$CI_COMMIT_REF_NAME" --on_gitlab true --ci_service_token "$PERSONNAL_GITLAB_API_TOKEN" --ci_service_project "$CI_PROJECT_ID" --ci_service_sha "$CI_COMMIT_SHA" --ci_service_ref "$CI_COMMIT_REF_NAME" --ci_service_pipeline "$CI_PIPELINE_ID" melodium-ci: artifacts: paths: - logs Référez-vous à melodium-macos.yml pour la liste complète des paramètres d’entrée. Remonter un statut vers GitLab Pour remonter le statut de pipeline de commit vers GitLab, différentes méthodes sont disponibles. Avec simpleStep Dans un traitement simpleStep, ajoutez les paramètres suivants : simpleStep( /* … */ gitlab=true, gitlab_token=/* Token GitLab avec accès API */, gitlab_project_id=/* Identifiant du projet GitLab */, gitlab_sha=/* SHA GitLab associé à l'étape */, gitlab_ref=/* Référence Git GitLab associée à l'étape */, gitlab_pipeline_id=/* ID du pipeline GitLab où l'étape doit être remontée */ ) Dans le template CI/CD, dans le traitement main : build: simpleStep[cicd=cicd]( /* … */ gitlab=on_gitlab, gitlab_token=ci_service_token, gitlab_project_id=ci_service_project, gitlab_sha=ci_service_sha, gitlab_ref=ci_service_ref, gitlab_pipeline_id=ci_service_pipeline ) /* … */ test: simpleStepWithInput[cicd=cicd]( /* … */ gitlab=on_gitlab, gitlab_token=ci_service_token, gitlab_project_id=ci_service_project, gitlab_sha=ci_service_sha, gitlab_ref=ci_service_ref, gitlab_pipeline_id=ci_service_pipeline ) Avec postGitlabState Dans le traitement approprié, ajoutez le traitement postGitlabState : use cicd/services/gitlab::|success use cicd/services/gitlab::postGitlabState /* … */ treatment someStuff[cicd: CicdDispatchEngine]( // Ajoutez les paramètres suivants gitlab_project_id: string, gitlab_sha: string, gitlab_token: string gitlab_pipeline_id: string, gitlab_ref: string ) // … { /* … */ postSuccess: postGitlabState( name="Doing a treatment", description="Treatment accomplishing some stuff", state=|success(), project=gitlab_project_id, sha=gitlab_sha, token=gitlab_token, pipeline=gitlab_pipeline_id ref=gitlab_ref ) theTreatment.completed -> postSuccess.trigger } Il existe aussi un traitement plus générique setServiceState avec des déclencheurs prêts à l’emploi pour différents états : use cicd/services::setServiceState /* … */ treatment someStuff[cicd: CicdDispatchEngine]( // Ajoutez les paramètres suivants gitlab_project_id: string, gitlab_sha: string, gitlab_token: string gitlab_pipeline_id: string, gitlab_ref: string ) // … { /* … */ setServiceState( name="Doing a treatment", description="Treatment accomplishing some stuff", gitlab=true, gitlab_project_id=gitlab_project_id, gitlab_sha=gitlab_sha, gitlab_token=gitlab_token, gitlab_pipeline_id=gitlab_pipeline_id, gitlab_ref=gitlab_ref ) Self.trigger -----------> setServiceState.pending theTreatment.started ---> setServiceState.running theTreatment.completed -> setServiceState.success theTreatment.failed ----> setServiceState.failed } Configurer les variables Pour utiliser certaines fonctionnalités, comme l’API Cadence.CI ou l’API GitLab pour les rapports, des variables et des secrets doivent être configurés. Dans GitLab, dans Settings > CI/CD > Variables, ajoutez les tokens correspondants pour les rendre disponibles dans les workflows. Note Actuellement, le CI_JOB_TOKEN de GitLab n’a pas le droit de mettre à jour le statut de commit/pipeline. Un token API avec autorisation d’écriture doit être utilisé pour remonter les statuts. Générer avec l'IACluster Auto-Géré