0

Je travaille sur l'automatisation du déploiement pour dev et prod avec des tâches qui doivent être transférées sur des serveurs spécifiques pour chaque type. Avec ces tâches, les scripts associés à chaque travail Sqoop doivent changer en fonction de dev vs prod. Actuellement, j'ai un repo git contenant un dossier dev et prod où les changements de dev approuvés sont mis sur le dossier prod mais avec les variables (références à la base de données dev vs base de données prod) changé. Ensuite, j'ai deux pipelines jenkins qui s'associent à chacun et ont des déclencheurs indépendants. C'est incroyablement hacky. Mon plan actuel consiste à consolider dans un seul dossier et à remplacer toutes les variables par une pseudo-variable telle que% DBPREFIX%, puis avoir chaque regex de pipeline associé et remplacer toutes les correspondances par son préfixe de base de données associé lors de la compilation.Déploiement de pipeline Jenkins pour la production et le développement

Les fichiers qui doivent être modifiés sont des scripts shell et des scripts hive, donc je ne peux pas simplement définir une variable d'environnement dans le shell du nœud Jenkins.

Y a-t-il une meilleure façon de gérer cela?

tl; dr: J'ai besoin de définir des variables dans différents fichiers qui peuvent être changés automatiquement via un pipeline jenkins.

Répondre

1

Vous pouvez réellement référencer des variables d'environnement dans des scripts shell et dans des scripts de ruche.

dans un script shell pour faire référence HOT_VAR $:

echo $HOT_VAR 

dans un script ruche pour faire référence HOT_VAR $:

select * from foo where day >= '${env:HOT_VAR}' 

Je ne sais pas si cela est un exemple d'un script ruche . peut-être que vous voulez voir https://stackoverflow.com/a/12485751/6090676. Si vous êtes vraiment incapable d'utiliser les variables d'environnement pour une raison quelconque, vous pouvez utiliser des outils en ligne de commande comme awk, sed ou perl (pourquoi les gens suggèrent-ils toujours perl au lieu de ruby?) Pour rechercher et remplacer dans le les fichiers que vous devez configurer (en fonction des variables d'environnement, probablement).