comment accéder à plusieurs bases de CI, de construire?
Nous avons un projet qui est composée de plusieurs (non publique) référentiels.
Pour construire l'ensemble du projet, le système doit avoir les fichiers de tous les référentiels (master
branches).
Est il possible que je peux configurer GitLab CI à fournir les référentiels-je besoin?
Je suppose que je pourrais faire un git fetch
ou semblable au cours de la CI de la construction, mais la façon de traiter avec l'authentification?
OriginalL'auteur Udo G | 2015-10-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ajouter un déployez la clé de tous les projets. Puis configurer le déploiement de la clé privée de la clé sur le coureur(s). Normal d'utilisation de commandes git dans votre processus de génération de cloner les dépôts sur le coureur. Cela peut nécessiter un peu de configuration sur votre les coureurs, mais il devrait fonctionner.
Vous pouvez soit générer une paire de clés SSH et l'utiliser sur tous les coureurs ou générer une paire de clés par coureur. Pour générer une paire de clés SSH suivre Clé SSH de la documentation. La clé privée doit être placé dans 'gitlab-runner' de l'utilisateur
.ssh
répertoire de sorte que legit
commande peut présenter au clone de temps. La clé publique doit être ajouté à la GitLab projet de déploiement de la clé. Ajouter un déployez la clé dans les paramètres du projet -> "à Déployer des Touches".Edit: j'ai mis à jour la réponse avec plus de détails. Laissez-moi savoir si vous avez encore des questions.
Peut-être que les choses ont changé depuis 2015, mais sur Gitlab.com il semble que le runner fonctionne trucs comme
root
. Et il n'y a pas degitlab-runner
utilisateur dans mon cas.OriginalL'auteur Drew Blessing
Si vous exécutez gitlab version 8.12 ou plus tard, le modèle d'autorisations a été retravaillé. Avec ce nouveau modèle d'autorisation vient la le CI de la variable d'environnement
CI_JOB_TOKEN
. La version premium de GitLab utilise cette variable d'environnement pour les déclencheurs, mais vous pouvez l'utiliser pour cloner repos.OriginalL'auteur microe14
Un couple de solutions de contournement (je déteste ce mot!) que de travail-autour-de-ed pour moi:
À l'aide de
git submodule
, voir https://docs.gitlab.com/ce/ci/git_submodules.htmlDe ré-utilisation de $CI_REPOSITORY_URL défini par Gitlab et disponible à l'intérieur même de l'enfant conteneurs Docker. Cette env var contient déjà le nom d'utilisateur et le mot de passe, qui peut être utilisé pour un autre repo sur le même serveur. Voir extrait de .gitlab-ci.yml:
TOUTEFOIS !
Avoir passé quelques années dans l'IC \ CD terrain, je ne pense pas que c'est une bonne conception qui nécessite reliant les référentiels comme sources.
Oui, dans le classique de l'IC des outils comme Jenkins ou TeamCity vous pouvez créer un travail qui récupère plusieurs Git repos dans différents sous-répertoires.
Mais j'aime GitLab CI Pipeline en tant Que Code, où .gitlab-ci.yml contrôles de la construction de cette très repo et vous n'avez même pas à penser que l'ensemble de ces pré-étape de génération de l'obtention de sources.
Puis construire publier binaire artefacts et en aval des projets\repos peut les utiliser à la place de sources de dépendances. Il est également plus rapide.
La séparation des préoccupations.
Je n'ai pas il ya un moyen officiel dans mon .gitlab-ci.yml d'utiliser les artefacts d'un autre projet. Mais il existe d'autres moyens comme des crochets, Gitlab API, bien que de telles solutions sur mesure nécessitent de l'entretien.
Il y a de mieux à publier\récupérer des artefacts\externes largement adopté Gestionnaire de paquets.
En fonction de votre langue, il pourrait être Maven, NuGet, npm, jFrog Artifactory, Nexus, etc.
Un autre avantage de cette méthode est que les développeurs peuvent suivre le même processus dans leur local construit, ce qui n'est pas facile à faire si les dépendances sont définis dans .gitlab-ci.yml
C'est un gros problème pour le code natif (Cxx) en raison principalement de l'Interface Binaire de compatibilité, mais des choses comme Conan.io, etc sont les rattraper lentement.
OriginalL'auteur Ivan