diff --git a/README-fr.md b/README-fr.md index 00a6488aead86d5875a73844cc6d7bc09a7e6e96..845ee01f5b606689b0ae1078a2ca14df998e5b49 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 diff --git a/includes-if/tags/empty_job_template.yml b/includes-if/tags/empty_job_template.yml new file mode 100644 index 0000000000000000000000000000000000000000..de0b1e33c413ec18c15c3333b562c951c787ded0 --- /dev/null +++ b/includes-if/tags/empty_job_template.yml @@ -0,0 +1,3 @@ +--- +runners:tags: + 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 52e56cfb552353562e419eea702e9b1b304590b8..118a8c20fb10a1cc080cdd5b53380970002d1c43 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_JOB_TEMPLATE: "false" diff --git a/templates/empty_job_template.yml b/templates/empty_job_template.yml new file mode 100644 index 0000000000000000000000000000000000000000..4ce67fea8e294f59584cf5f5de3c3eccb81cd73c --- /dev/null +++ b/templates/empty_job_template.yml @@ -0,0 +1,28 @@ +--- + +#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_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: + extends: .job_name + stage: test + 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_TEMPLATE_TAGS