From c265fbbb8493e241da0fbaec3a5333bf012411f4 Mon Sep 17 00:00:00 2001 From: Celeste Robert Date: Tue, 21 Oct 2025 15:56:50 +0200 Subject: [PATCH 1/4] feat: job tempalte --- includes-if/tags/empty_job_template.yml | 3 +++ templates/bases/variables.yml | 1 + templates/empty_job_template.yml | 30 +++++++++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 includes-if/tags/empty_job_template.yml create mode 100644 templates/empty_job_template.yml diff --git a/includes-if/tags/empty_job_template.yml b/includes-if/tags/empty_job_template.yml new file mode 100644 index 0000000..eaf12ca --- /dev/null +++ b/includes-if/tags/empty_job_template.yml @@ -0,0 +1,3 @@ +--- +runners:tags: + tags: [$MGCI_TEST__JOB_TAGS] \ No newline at end of file diff --git a/templates/bases/variables.yml b/templates/bases/variables.yml index 52e56cf..e2beec6 100644 --- a/templates/bases/variables.yml +++ b/templates/bases/variables.yml @@ -34,3 +34,4 @@ variables: MGCI_TEST_REGISTRY_NPM: "false" MGCI_TEST_REGISTRY_GENERIC: "false" MGCI_TEST_REGISTRY_CONTAINER: "false" + MGCI_TEST_: "false" diff --git a/templates/empty_job_template.yml b/templates/empty_job_template.yml new file mode 100644 index 0000000..a72aa79 --- /dev/null +++ b/templates/empty_job_template.yml @@ -0,0 +1,30 @@ +--- + +#This is a template for a test that requires multiples actions. + +#Use this hidden job to set the rules for the other jobs. You don't need it if the test only requires a single action. +.job_name: + stage: test + # The variable that triggers the test should be named MGCI_TEST_, must be declared in the templates/base/variables.yml file and set to false by default (The rule is commented out to avoid messing with the CI pipeline) + rules: + # - if: $MGCI_TEST_ == "true" && ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_PROJECT_PATH == 'froggit/tools/mgci') + +#This is the first action of the test. If the test requires a single action, the name shouldn't have a suffix. +job_name:first_action: + extends: .job_name + stage: test + variables: + issue_title: MGCI_TEST_API_ISSUE + script: + - echo "Your script goes here" + +job_name:second_action: + extends: .job_name + stage: test + script: + - echo "Your script goes here" +# This include is used to run the jobs on a specific runner. +include: + - local: 'includes-if/tags/empty_job_template.yml' + rules: + - if: $MGCI_TEST__JOB_TAGS -- GitLab From f426faaaaff46481b57a43903ebd95b9fa2d9d21 Mon Sep 17 00:00:00 2001 From: Celeste Robert Date: Tue, 21 Oct 2025 15:56:50 +0200 Subject: [PATCH 2/4] feat: job tempalte --- templates/empty_job_template.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/templates/empty_job_template.yml b/templates/empty_job_template.yml index a72aa79..49fd050 100644 --- a/templates/empty_job_template.yml +++ b/templates/empty_job_template.yml @@ -13,8 +13,6 @@ job_name:first_action: extends: .job_name stage: test - variables: - issue_title: MGCI_TEST_API_ISSUE script: - echo "Your script goes here" -- GitLab From f93b0a3cf1aee1168a33fbd967c93b399a7d1961 Mon Sep 17 00:00:00 2001 From: Celeste Robert Date: Wed, 29 Oct 2025 11:48:52 +0100 Subject: [PATCH 3/4] fix: variable name to comply to pipeline syntax --- includes-if/tags/empty_job_template.yml | 2 +- templates/bases/variables.yml | 2 +- templates/empty_job_template.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/includes-if/tags/empty_job_template.yml b/includes-if/tags/empty_job_template.yml index eaf12ca..de0b1e3 100644 --- a/includes-if/tags/empty_job_template.yml +++ b/includes-if/tags/empty_job_template.yml @@ -1,3 +1,3 @@ --- runners:tags: - tags: [$MGCI_TEST__JOB_TAGS] \ No newline at end of file + tags: [$MGCI_TEST_JOB_TEMPLATE_TAGS] \ No newline at end of file diff --git a/templates/bases/variables.yml b/templates/bases/variables.yml index e2beec6..118a8c2 100644 --- a/templates/bases/variables.yml +++ b/templates/bases/variables.yml @@ -34,4 +34,4 @@ variables: MGCI_TEST_REGISTRY_NPM: "false" MGCI_TEST_REGISTRY_GENERIC: "false" MGCI_TEST_REGISTRY_CONTAINER: "false" - MGCI_TEST_: "false" + MGCI_TEST_JOB_TEMPLATE: "false" diff --git a/templates/empty_job_template.yml b/templates/empty_job_template.yml index 49fd050..4ce67fe 100644 --- a/templates/empty_job_template.yml +++ b/templates/empty_job_template.yml @@ -7,7 +7,7 @@ stage: test # The variable that triggers the test should be named MGCI_TEST_, must be declared in the templates/base/variables.yml file and set to false by default (The rule is commented out to avoid messing with the CI pipeline) rules: - # - if: $MGCI_TEST_ == "true" && ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_PROJECT_PATH == 'froggit/tools/mgci') + - if: $MGCI_TEST_JOB_TEMPLATE == "true" && ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_PROJECT_PATH == 'froggit/tools/mgci') #This is the first action of the test. If the test requires a single action, the name shouldn't have a suffix. job_name:first_action: @@ -25,4 +25,4 @@ job_name:second_action: include: - local: 'includes-if/tags/empty_job_template.yml' rules: - - if: $MGCI_TEST__JOB_TAGS + - if: $MGCI_TEST_JOB_TEMPLATE_TAGS -- GitLab From 705e4e9daa7a553c7dd14a2b5f74ff5d37bfcf0b Mon Sep 17 00:00:00 2001 From: Celeste Robert Date: Wed, 29 Oct 2025 12:56:27 +0100 Subject: [PATCH 4/4] doc: improve how to write a test --- README-fr.md | 48 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/README-fr.md b/README-fr.md index 00a6488..845ee01 100644 --- a/README-fr.md +++ b/README-fr.md @@ -118,7 +118,39 @@ Nous vous ajouterons également à la newsletter du projet pour que vous soyez i ## Principes de code -Chaque fonctionnalité à tester doit être codée dans un seul fichier de template. +Chaque fonctionnalité à tester doit être codée dans un seul fichier de template. Les fichiers suivent tous la même structure. Les fichiers vierges `templates/empty_job_template.yml` et `includes-if/tags/empty_job_template.yml` peuvent servir de modèles pour les nouveaux tests. + +### Structure d'un job + +Voici la structure type d'un job : + +```yml +--- +# templates/fonction.yml + +fonction: + script: + - echo "Test fonction OK" + rules: + - if: $MGCI_TEST_FONCTION == "true" +``` + +### Condition de déclenchement + +Le test doit pouvoir être activé et désactivé à l'aide d'une variable (voir la section `Configuration générale`). +Pour ce faire, la règle de déclenchemetn de chaque test est la suivante, `$MGCI_TEST_` étant la varible de configuration spécifique au test. + +``` + rules: + - if: $MGCI_TEST_ == "true" && ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_PROJECT_PATH == 'froggit/tools/mgci') + +``` + +## Documentation + +Chaque test doit être ajouté à la liste de tests actifs du `README` et du `README-fr`. Chaque test doit également être documenté avec les indications suivantes: nom du test, nom du fichier, nom du ou des jobs et description. + +Il est également impératif de documenter les nouvelles variables de configuration. ### Convention de nommage @@ -141,20 +173,6 @@ Exemple : - `MGCI_TEST_CACHE` -## Structure d'un job - -Voici la structure type d'un job : - -```yml ---- -# templates/fonction.yml - -fonction: - script: - - echo "Test fonction OK" - rules: - - if: $MGCI_TEST_FONCTION == "true" -``` ## Authentification Docker Hub -- GitLab