J'essaie d'extraire le code GIT à l'aide du plugin GIT Jenkins et le travail s'exécute sur une machine esclave.
MASTER
le système a http_proxy=mycom.domain.com:80
et dans le système SLAVE
, aucun http_proxy
n'est défini.
Chaque fois que je fais git clone localement dans la machine SLAVE
, cela fonctionne parfaitement, cependant, de Jenkins, je n'ai pas réussi.
Il jette l'erreur suivante:
Building remotely on SLAVE in workspace /data/test
> /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> /usr/bin/git config remote.Origin.url https://github.domain.com/Project-Digital/Project-eCommerce.git # timeout=10
Fetching upstream changes from https://github.domain.com/Project-Digital/Project-eCommerce.git
> /usr/bin/git --version # timeout=10
using GIT_ASKPASS to set credentials
Setting http proxy: mycom.domain.com:80
> /usr/bin/git fetch --tags --progress https://github.domain.com/Project-Digital/Project-eCommerce.git +refs/heads/*:refs/remotes/Origin/*
ERROR: Error fetching remote repo 'Origin'
hudson.plugins.git.GitException: Failed to fetch from https://github.domain.com/Project-Digital/Project-eCommerce.git
at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.Java:803)
at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.Java:1063)
at hudson.plugins.git.GitSCM.checkout(GitSCM.Java:1094)
at hudson.scm.SCM.checkout(SCM.Java:495)
at hudson.model.AbstractProject.checkout(AbstractProject.Java:1278)
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.Java:604)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.Java:86)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.Java:529)
at hudson.model.Run.execute(Run.Java:1728)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.Java:43)
at hudson.model.ResourceController.execute(ResourceController.Java:98)
at hudson.model.Executor.run(Executor.Java:404)
Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git fetch --tags --progress https://github.domain.com/Project-Digital/Project-eCommerce.git +refs/heads/*:refs/remotes/Origin/*" returned status code 128:
stdout:
stderr: error: Failed connect to github.build.ge.com:80; Operation now in progress while accessing https://github.domain.com/Project-Digital/Project-eCommerce.git/info/refs
Est-ce parce que le système MASTER
essaie de définir un proxy http qui n'est pas présent dans le système SLAVE
?
Si oui, comment l'éviter?
Ou y a-t-il autre chose qui me manque?
Il s'est avéré que c'était un problème de proxy.
Lors de l'extraction du code de GIT à l'aide de Jenkins, le code http_proxy
était défini sur mycom.domain.com:80
(MASTER
proxy de la machine) et ce proxy n'était pas requis sur l'ordinateur SLAVE
.
Donc, je viens d'ajouter l'URL GIT à la section (Manage Jenkins -> Manage Plugins -> Advanced -> HTTP Proxy Configuration -> Added GIT URL in No Proxy Host field)
de No Proxy Host dans Jenkins et maintenant cela fonctionne bien.
Aujourd'hui, j'ai également installé les jenkins avec le référentiel git, j'ai travaillé pour moi, j'espère que cela aidera,
Pour connecter git à jenkins, procédez comme suit:
ÉTAPE 1 . Après l'installation réussie de plugins, créez un nouveau travail comme celui-ci:
1.créer un nom de job
2.a coché la case d'option Construire un projet de logiciel maven
3. cliquez sur OK
ÉTAPE 2 . Maintenant, cochez le bouton radio pour Git entrez l'URI de votre référentiel Git.
ÉTAPE 3 . Si vous voyez l'erreur comme
Échec de la connexion au référentiel: la commande "git ls-remote -h [email protected] HEAD" a renvoyé le code d'état 128: Stdout: Stderr: fatal: "[email protected]" n'apparaît pas. être un dépôt git fatal: l'extrémité distante a raccroché de manière inattendue
Vous devez faire plus de configuration:
1.Allez au terminal
2. Exécutez cette commande: Sudo visudo
3.Ajouter% jenkins ALL = NOPASSWD: ALL dans ce fichier où Sudo previlage est défini.et fermez le fichier.
4. vous connecter en tant qu'utilisateur jenkins via la commande: Sudo su jenkins
5.Créez un répertoire .ssh dans le répertoire personnel jenkins.
6.créez la paire de clés privées publiques comme ceci.
Génération de clés SSH:
1: Vérifier les clés SSH
Premièrement, nous devons vérifier les clés ssh existantes sur votre ordinateur. Ouvrez le terminal et lancez:
cd ~/.ssh Vérifie si un répertoire nommé ".ssh" se trouve dans votre répertoire utilisateur.
S'il indique "Aucun fichier ou répertoire de ce type", passez à l'étape 2. Sinon, vous avez déjà une paire de clés existante et vous pouvez passer à l'étape 3.
2: Générer une nouvelle clé SSH
Pour générer une nouvelle clé SSH, entrez le code ci-dessous. Nous voulons les paramètres par défaut. Lorsque vous êtes invité à entrer un fichier dans lequel enregistrer la clé, appuyez simplement sur Entrée.
ssh-keygen -t rsa -C "[email protected]"
Crée une nouvelle clé ssh, en utilisant le courrier électronique fourni comme étiquette Génération d'une paire de clés rsa publique/privée. Entrez le fichier dans lequel enregistrer la clé (/home/you/.ssh/id_rsa):Maintenant, vous devez entrer une phrase secrète ou un fichier. Appuyez sur Entrée sans rien écrire.
Ce qui devrait vous donner quelque chose comme ça:
Votre identification a été enregistrée dans /home/you/.ssh/id_rsa .
Votre clé publique a été enregistrée dans /home/you/.ssh/id_rsa.pub. L'empreinte digitale clé est:
01: 0f: f4: 3b: ca: 85: d6: 17: a1: 7d: f0: 68: 9d: f0: a2: db [email protected]
3: Ajoutez votre clé SSH à GitHub
Allez dans les paramètres de votre compte
4: Balise Under Source Management,
Build Triggers- Build whenever a SNAPSHOT dependency is built
Root POM- /var/lib/jenkins/jobs/ProjectName/workspace/ProjectName/pom.xml
Sous balise Execute Shell vous pouvez mettre vos scripts à exécuter.
Enfin, cliquez sur Build Now pour créer la construction, puis sur Open Console pour vérifier l’état.
Avant d'extraire le projet, essayez de définir le proxy HTTP dans la configuration globale:
$> git config --global http.proxy http://mycom.example.com:80
Si vous devez fournir un nom d'utilisateur et un mot de passe pour votre proxy, vous pouvez utiliser:
$> git config --global http.proxy http://example.com\\<yourUsername>:<yourPassword>@<yourProxyServer>:80