Domanda

Il problema

Sto cercando di costruire la mia applicazione a Jenkins, ed è su un repo privato su GitHub, anche c'è un sottomodulo privato.

Posso clonare il repository privato in Jenkins impostando le sue credenziali, ma Jenkins non può clonare il sottomodulo, ecco l'output di una build fallita:

Started by an SCM change
Building in workspace /var/lib/jenkins/jobs/Project/workspace
Fetching changes from the remote Git repository
Fetching upstream changes from git@github.com:user/repogit
using GIT_SSH to set credentials 
Checking out Revision 9cc99b67cc676d0ea8ccd489a8327f5c6dbb8d7f (origin/branch)
[workspace] $ /bin/sh -xe /tmp/hudson2710403018107019432.sh
+ git submodule update --init --recursive
Initialized empty Git repository in /var/lib/jenkins/jobs/repository/submodule/.git/
ERROR: Repository not found.
fatal: The remote end hung up unexpectedly
Clone of 'git@github.com:user/submodule.git' into submodule path 'repository/submodule/' failed
Build step 'Execute shell' marked build as failure
Discard old builds...
#156 is removed because status FAILURE is not to be kept
Publishing Clover coverage report...
No Clover report will be published due to a Build Failure
Sending e-mails to: 
Finished: FAILURE
.

Ecco cosa ho provato a fare a Jenkins

    .
  • ha provato a impostare il comportamento aggiuntivo "comportamento avanzato del sottoculo", senza successo.
  • ha provato a configurare un nuovo passaggio prima di eseguire i test con PhpUnit:

git submodule update --init --recursive

    .
  • ha cercato di impostare un repository Git anche sul progetto del mio sottomodulo, non solo il repository principale che viene testato, non anche la fortuna.

Tutti fa sì che l'errore che afferma che Jenkins non riesce a trovare il repository del sottomodulo.

Qualche idea su come posso risolverlo?

(Il nome utente, i percorsi e i repository sono corretti, li ho appena modificati per pubblicare qui)

È stato utile?

Soluzione

risolto.Nella mia credenziale stava usando una chiave SSH diretta (opzione "Inserisci direttamente"), invece di inserire un file.

Ho appena messo le chiavi (pubbliche e private) in ~ / .ssh, e ha cambiato le mie credenziali sull'opzione "dal master ~ / .ssh" di Jenkins.

Il problema era che il sottomodulo non stava usando le credenziali che ho specificato nel repository principale, stava tentando di utilizzare la chiave ssh predefinita (.sssh / id_rsa).

Un'altra soluzione è di passare -i my_key al passo della sottomarina GIT (solo è necessario solo se il tasto non è nel percorso predefinito (~ / .SSH / ID_RSA))

Inoltre non dimenticare di dare le autorizzazioni corrette alle tue chiavi, nel mio caso ho dovuto:

chown apache ~/.ssh/id_rsa*
chmod 700 ~/.ssh/id_rsa*
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top