From 3a08d798850876ddb0d015db2e6ee7dc378c5d20 Mon Sep 17 00:00:00 2001 From: Celeste Robert Date: Thu, 9 Oct 2025 10:32:58 +0200 Subject: [PATCH 1/2] feat: test cicd variables --- includes-if/tags/cicd_variables.yml | 3 ++ templates/bases/variables.yml | 1 + templates/cicd_variables.yml | 65 +++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 includes-if/tags/cicd_variables.yml create mode 100644 templates/cicd_variables.yml diff --git a/includes-if/tags/cicd_variables.yml b/includes-if/tags/cicd_variables.yml new file mode 100644 index 0000000..c771d03 --- /dev/null +++ b/includes-if/tags/cicd_variables.yml @@ -0,0 +1,3 @@ +--- +.git: + tags: [$MGCI_TEST_CICD_VARIABLES] \ No newline at end of file diff --git a/templates/bases/variables.yml b/templates/bases/variables.yml index 52e56cf..5bae36f 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_CICD_VARIABLES: "false" diff --git a/templates/cicd_variables.yml b/templates/cicd_variables.yml new file mode 100644 index 0000000..da3f9c7 --- /dev/null +++ b/templates/cicd_variables.yml @@ -0,0 +1,65 @@ +--- + +.vars: + variables: + MGCI_VARIABLE_TEST_VALUE: "Waltz_bad_nymph_for_quick_jigs_vex_1234567890.:@_+-=./~" + rules: + - if: $MGCI_TEST_VARIABLES == "true" && ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_PROJECT_PATH == 'froggit/tools/mgci') + + +vars:init: + extends: .vars + stage: build + before_script: | + if [ -z ${MGCI_API_TOKEN+x} ]; then + echo "MGCI_API_TOKEN is unset" + false + fi + script: | + if [[ -z ${MGCI_TEST_VISIBLE_VARIABLE} ]]; then + echo "MGCI_TEST_VISIBLE_VARIABLE is unset" + curl --write-out %{http_code} --silent --request POST --header "PRIVATE-TOKEN:${MGCI_API_TOKEN}" \ + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/variables" --form "key=MGCI_TEST_VISIBLE_VARIABLE" --form "value=${MGCI_VARIABLE_TEST_VALUE}" + fi + if [[ -z ${MGCI_TEST_MASKED_VARIABLE} ]]; then + echo "MGCI_TEST_MASKED_VARIABLE is unset" + curl --write-out %{http_code} --silent --request POST --header "PRIVATE-TOKEN:${MGCI_API_TOKEN}" \ + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/variables" --form "key=MGCI_TEST_MASKED_VARIABLE" --form "value=${MGCI_VARIABLE_TEST_VALUE}" \ + --form "masked=true" + fi + if [[ -z ${MGCI_TEST_MASKED_AND_HIDDEN_VARIABLE} ]]; then + echo "MGCI_TEST_MASKED_AND_HIDDEN_VARIABLE is unset" + curl --write-out %{http_code} --silent --request POST --header "PRIVATE-TOKEN:${MGCI_API_TOKEN}" \ + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/variables" --form "key=MGCI_TEST_MASKED_AND_HIDDEN_VARIABLE" --form "value=${MGCI_VARIABLE_TEST_VALUE}" \ + --form "masked_and_hidden=true" + fi + echo "MGCI_TEST_* variables created" + rules: + - if: $MGCI_TEST_VISIBLE_VARIABLE == null + - if: $MGCI_TEST_MASKED_VARIABLE == null + - if: $MGCI_TEST_MASKED_AND_HIDDEN_VARIABLE == null + +vars:test: + extends: .vars + stage: test + script: | + if [[ ${MGCI_TEST_VISIBLE_VARIABLE} != ${MGCI_VARIABLE_TEST_VALUE} ]]; then + echo "⚠️ Var VISIBLE is Corupted" + echo "Var VISIBLE is Corupted:" >> ${CI_PROJECT_DIR}/artifacts/vars_test.txt + echo "MGCI_TEST_VISIBLE_VARIABLE: ${MGCI_TEST_VISIBLE_VARIABLE}" >> ${CI_PROJECT_DIR}/artifacts/vars_test.txt + fi + if [[ ${MGCI_TEST_MASKED_VARIABLE} != ${MGCI_VARIABLE_TEST_VALUE} ]]; then + echo "⚠️ Var MASKED is Corupted" + echo "Var MASKED is Corupted:" >> ${CI_PROJECT_DIR}/artifacts/vars_test.txt + echo "MGCI_TEST_MASKED_VARIABLE: ${MGCI_TEST_MASKED_VARIABLE}" >> ${CI_PROJECT_DIR}/artifacts/vars_test.txt + fi + if [[ ${MGCI_TEST_MASKED_AND_HIDDEN_VARIABLE} != ${MGCI_VARIABLE_TEST_VALUE} ]]; then + echo "⚠️ Var MASKED_AND_HIDDEN is Corupted" + echo "Var MASKED_AND_HIDDEN is Corupted:" >> ${CI_PROJECT_DIR}/artifacts/vars_test.txt + echo "MGCI_TEST_MASKED_AND_HIDDEN_VARIABLE: ${MGCI_TEST_MASKED_AND_HIDDEN_VARIABLE}" >> ${CI_PROJECT_DIR}/artifacts/vars_test.txt + fi + +include: + - local: 'includes-if/tags/cicd_variables.yml' + rules: + - if: $MGCI_TEST_CICD_VARIABLES_JOB_TAGS -- GitLab From 6963fa5605814f58128200d0a58e261d220cc5d0 Mon Sep 17 00:00:00 2001 From: Celeste Robert Date: Fri, 17 Oct 2025 10:33:29 +0200 Subject: [PATCH 2/2] doc: CICD variables test --- README-fr.md | 8 ++++++++ README.md | 8 ++++++++ templates/cicd_variables.yml | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/README-fr.md b/README-fr.md index 00a6488..3bcc661 100644 --- a/README-fr.md +++ b/README-fr.md @@ -68,6 +68,7 @@ Chaque fonctionnalité testée peut être activée avec une variable `MGCI_TEST_ | `MGCI_TEST_REGISTRY_GENERIC` | Lancement du test du registre de paquets génériques | `false` | | `MGCI_TEST_REGISTRY_CONTAINER` | Lancement du test du registre des conteneurs | `false` | | `MGCI_TEST_RUNNERS_TAGS` | Lancement du test des tags de runner | `false` | +| `MGCI_TEST_CICD_VARIABLES` | Lancement du test des variables CI/CD | `false` | | `MGCI_RUNNERS_TAGS` | Liste des Tags de runners à tester, format | `` | | `MGCI_API_TOKEN` | Token d'accès `Owner` au dépôt pour tester l'API | `` | | `MATTERMOST_URL` | URL de l'instance Mattermost à tester | `` | @@ -225,6 +226,7 @@ MGCI_TEST_CACHE_JOB_TAGS=cache - [x] Health check (uniquement disponible pour une instance auto-hébergée) - [X] Mattermost : Health check - [X] Environnement : création et destruction +- [x] CI/CD Variables ### 🏗️ À venir @@ -311,6 +313,12 @@ Si vous activez ce test, il faut également créer la variable `MATTERMOST_URL`, - **Nom des jobs** : `runners:register` - **Description** : le job `runners:register` teste la fonctionnalité d'enregistrement et de suppression d'un runner. Il va enregistrer un runner pour le projet avec le tag `test-runner` puis le supprimer tout de suite après. +## Test des variables CI/CD + +- **Nom du fichier** : `templates/cicd_variables.yml` +- **Nom des jobs** : `vars:init` et `vars:test` +- **Description** : le job `vars:init` crée les 3 variables CI/CD à tester (`MGCI_TEST_VISIBLE_VARIABLE`, `MGCI_TEST_MASKED_VARIABLE` et `MGCI_TEST_MASKED_AND_HIDDEN_VARIABLE`) si elles n'existent pas. le job `vars:test` teste l'intégrité des valeurs des variables CI/CD. + ## Contribuer Ce projet étant sous la licence [GPL3](https://www.gnu.org/licenses/gpl.html), il est possible d'y contribuer pour y apporter des améliorations, des nouvelles fonctionnalités. diff --git a/README.md b/README.md index 762386d..fc833c0 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,7 @@ Each tested feature can be activated with a `MGCI_TEST_` variable that | `MGCI_TEST_REGISTRY_GENERIC` | Run the generic packages registry test | `false` | | `MGCI_TEST_REGISTRY_CONTAINER` | Run the container registry test | `false` | | `MGCI_TEST_RUNNERS_TAGS` | Run the runner tags test | `false` | +| `MGCI_TEST_CICD_VARIABLES` | Run the CI/CD variables test | `false` | | `MGCI_RUNNERS_TAGS` | List of runner tags to test, format | `` | | `MGCI_API_TOKEN` | `Owner` access token to the repository for API testing | `` | | `MATTERMOST_URL` | URL of the Mattermost instance to test | `` | @@ -224,6 +225,7 @@ MGCI_TEST_CACHE_JOB_TAGS=cache - [x] Health check (only available for self-hosted Gitlab) - [x] Mattermost: Health check - [x] Environment: creation and deletion +- [x] CI/CD Variables ### 🏗️ Upcoming @@ -312,6 +314,12 @@ If you enable this test, you also need to create the `MATTERMOST_URL` variable, - **Job names**: `runners:register` - **Description**: the `runners:register` job tests the functionality of registering and deleting a runner. It will register a runner for the project with the `test-runner` tag and then delete it immediately after. +## CI/CD Variables Tests + +- **File name**: `templates/cicd_variables.yml` +- **Job names**: `vars:init` and `vars:test` +- **Description**: the `vars:init` job creates the 3 types of CI/CD that we want to test (`MGCI_TEST_VISIBLE_VARIABLE`, `MGCI_TEST_MASKED_VARIABLE` and `MGCI_TEST_MASKED_AND_HIDDEN_VARIABLE`). The `vars:test` job tests the values of said CI/CD variables. + ## Contributing This project is licensed under [GPL3](https://www.gnu.org/licenses/gpl.html), and contributions are welcome to bring improvements, new features, etc. diff --git a/templates/cicd_variables.yml b/templates/cicd_variables.yml index da3f9c7..1451cf2 100644 --- a/templates/cicd_variables.yml +++ b/templates/cicd_variables.yml @@ -9,7 +9,7 @@ vars:init: extends: .vars - stage: build + stage: start before_script: | if [ -z ${MGCI_API_TOKEN+x} ]; then echo "MGCI_API_TOKEN is unset" -- GitLab