web-dev-qa-db-fra.com

Gitlab exécute l'étape sous condition

Il y a 3 étapes - construire, tester et déployer dans .gitlab-ci.yml.

Une étape de test de régression nocturne doit être exécutée - enfin nightly :)

Voici le .gitlab-ci.yml code:

stages:
  - build
  - test
  - deploy

build_project:
  stage: build
  script:
    - cd ./some-dir
    - build-script.sh
  except:
  - tags

#Run this only when say variable 'NIGHTLY_TEST == True'. But HOW?
nightly_regression_test_project:
  stage: test
  script:
    - cd ./some-dir
    - execute test-script

Le balisage quotidien vers only run test stage n'est pas préférable.

Une autre idée?

18
deepdive

Au cas où quelqu'un le chercherait maintenant, gitlab a maintenant implémenté une fonctionnalité de construction planifiée avec écrasement variable (incroyablement pratique). Documentation trouvée ici .

Pour toute personne intéressée par les instructions pour cette fonctionnalité lorsque cette réponse a été donnée, la voici:

Utilisation des calendriers de pipelines

Pour planifier un pipeline:

  1. Accédez aux pipelines de votre projet -> Planifications et cliquez sur le bouton Nouvelle planification .
  2. Remplissez le formulaire
  3. Appuyez sur Enregistrez la planification du pipeline pour que les modifications prennent effet.

Ma caractéristique préférée est les variables de pipeline planifiées.

La documentation des variables peut être trouvée ici , mais l'information la plus utile pour moi était la priorité, que je retaperai ici:

Priorité des variables

Les variables peuvent être écrasées et elles ont priorité les unes sur les autres dans cet ordre:

  1. Variables de déclenchement ou variables de pipeline planifiées (ont priorité sur toutes)
  2. Variables secrètes au niveau du projet ou variables secrètes protégées
  3. Variables secrètes au niveau du groupe ou variables secrètes protégées
  4. Variables de niveau de travail définies par YAML
  5. Variables globales définies par YAML
  6. Variables de déploiement
  7. Variables prédéfinies (sont les plus basses de la chaîne)

J'espère que cela t'aides. Je suis ravi qu'ils aient ajouté cette fonctionnalité.

7
trueCamelType

except et only peuvent spécifier des variables qui les déclencheront.

Vous pouvez utiliser ce qui suit dans votre .gitlab-ci.yml:

build1:
  stage: build
  script:
    - echo "Only when NIGHTLY_TEST is false"
  except:
    variables:
      - $NIGHTLY_TEST 

test1:
  stage: test
  script: 
    - echo "Only when NIGHTLY_TEST is true"
  only:
    variables:
      - $NIGHTLY_TEST 
19
Andreas Volkmann

Il n'existe actuellement aucun moyen d'exécuter un travail en fonction des variables d'environnement (vous pouvez toujours ouvrir une demande de fonctionnalité!). Vous pouvez cependant utiliser une simple commande Bash pour quitter immédiatement si la variable d'environnement n'existe pas.

Quelque chose comme:

stages:
  - build
  - test
  - deploy

build_project:
  stage: build
  script:
    - cd ./some-dir
    - build-script.sh
  except:
  - tags

# Run this only when NIGHTLY_TEST environment variable exists.
nightly_regression_test_project:
  stage: test
  script:
    - [ -z "$NIGHTLY_TEST" ] && exit 1;
    - cd ./some-dir
    - execute test-script

Si la variable n'existe pas, les tests qui suivent ne s'exécuteront pas. Sinon, ils le feront.

J'espère que cela pourra aider!

13
Connor Shea