2015-03-18 13 views
5

Sto cercando di fare mvn release:prepare su un progetto multi-modulo che è ospitato su un server Gitlab.Maven e Gitlab: versione: preparazione utilizza l'URL SCM errato

Il pom.xml il mio padrone POM contiene:

<scm> 
    <connection>scm:git:http://my-git-server.example.com/git/somebody/my-project.git</connection> 
    <url>http://my-git-server.example.com/git/somebody/my-project</url> 
</scm> 

Quando faccio mvn release:prepare -DautoVersionSubmodules=true, si compila tutto e esegue il test, ma poi viene a mancare con:

[INFO] Executing: /bin/sh -c cd /home/somebody/git/my-project && git tag -F /tmp/maven-scm-1594218362.commit my-project-1.0.0 
[INFO] Working directory: /home/somebody/git/my-project 
[INFO] Executing: /bin/sh -c cd /home/somebody/git/my-project && git push http://my-git-server.example.com/git/somebody my-project-1.0.0 
[INFO] Working directory: /home/somebody/git/my-project 
... 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.3.2:prepare (default-cli) on project iwes-lib-master: Unable to tag SCM 
[ERROR] Provider message: 
[ERROR] The git-push command failed. 
[ERROR] Command output: 
[ERROR] fatal: repository 'http://my-git-server.example.com/git/somebody/' not found 
[ERROR] -> [Help 1] 

Così me la sta dicendo maven-release-plugin pensa che la directory principale del mio repository Git sia il repository, che si sta salvando.

L'aggiunta di un developerConnection non aiuta.

Quando si cerca di utilizzare SVN, non riesce con "Accesso negato:

<scm> 
    <connection>scm:git:http://my-git-server.example.com/git/somebody/my-project.git</connection> 
    <developerConnection>ssh://[email protected]:10022/somebody/my-project.git</developerConnection> 
    <url>http://my-git-server.example.com/git/somebody/my-project</url> 
</scm> 

mi da:.

[INFO] Executing: /bin/sh -c cd /home/jra/Documents/git/my-project && git push ssh://[email protected]:10022/somebody my-project-master-1.0.0 
.... 
[ERROR] Access denied. 

Quindi, è, ancora una volta, utilizza la directory padre

Come faccio in modo che il plug-in di rilascio utilizzi l'URL reale indicato nello stato?

+0

Non sono sicuro se hai trovato una soluzione, ma forse la mia modifica scm funziona anche per te – OkieOth

risposta

1

EDIT: la soluzione che ho proposto qui non funziona per release:perform, infatti, non ho trovato una soluzione fattibile fino ad oggi. Ora sto facendo la versione manualmente come descriverò di seguito.

Ho studiato ulteriormente su questo problema e penso che sia un bug. Ho presentato un JIRA per esso: MRELEASE-900

Buttai maven-release-plugin e ora sto facendo il rilascio manualmente nel modo seguente (esempio: rilascio 1.3.0, la versione snapshot è 1.3.0-SNAPSHOT):

  1. git checkout master && git pull solo per essere sicuri
  2. git checkout -b release-1.3 && git push -u origin release-1.3
  3. cd path/to/my/master/project
  4. mvn versions:set, mi chiede di specificare la nuova versione per 1.3.0-SNAPSHOT, io entro 1.3.0
  5. git commit -a così la nuova versione è il check-in
  6. git tag release-1.3.0
  7. git push && git push --tags - A questo punto, v'è un tag release-1.3.0 nel ramo release-1.3 in cui tutti i pertinenti numeri di versione POM sono 1.3.0
  8. git checkout master
  9. git merge release-1.3 - Non impegnarti ancora, prima aggiorno le versioni.
  10. mvn versions:set, impostare nuova versione ISTANTANEA, come per il mio convenzione, questo sarebbe 1.4.0-SNAPSHOT
  11. git commit -a
  12. git push

posso quindi creare un posto di lavoro Jenkins o quello che mi piace sul cartellino release-1.3.0 per elaborare il rilascio.

- Old risposta per riferimento sottoindicato -

Dopo aver frugato e provare varie cose, ho fatto qualche progresso: devo lasciare che il Maven-release-plugin pensare che my-project.git è una directory e aggiungere un finto file all'URL.

le seguenti opere:

<scm> 
    <connection>scm:git:http://my-git-server.example.com/git/somebody/my-project.git/.git</connection> 
    <developerConnection>scm:git:http://my-git-server.example.com/git/somebody/my-project.git/.git</developerConnection> 
    <url>http://my-git-server.example.com/git/somebody/my-project</url> 
</scm> 

e lo stesso con tSSH:

<scm> 
    <connection>scm:git:http://my-git-server.example.com/git/somebody/my-project.git/.git</connection> 
    <developerConnection>ssh://[email protected]:10022/somebody/my-project.git/.git</developerConnection> 
    <url>http://my-git-server.example.com/git/somebody/my-project</url> 
</scm> 

ora release:prepare opere, ma release:perform fallisce perché vuole scaricare da ssh://[email protected]:10022/somebody/my-project.git/.git.

0

Ho lo stesso problema, nel mio caso il plugin spinge a remoto il pom aggiornato con la versione corretta ma quando tenta di generare il tag fallisce perché prova a spingere il tag nella directory genitore.

spinta a padroneggiare il pom aggiornato con la versione corretta

git push [email protected]:parent/project.git refs/heads/master:refs/heads/master 

ma quando si cerca di spingere il tag

push [email protected]:parent refs/tags/v1.46 

Avere qualcuno risolto?

1

mi sono imbattuto nello stesso problema con una chiamata del genere

mvn deploy scm:tag 

sto utilizzando un'installazione gitlab e anche non consentire le chiamate come questo

[INFO] Executing: /bin/sh -c cd /home/user/prog/gitlab/test-user_server && git tag -F /tmp/maven-scm-482134407.commit test-user_server-1.1-SNAPSHOT 
[INFO] Working directory: /home/user/prog/gitlab/test-user_server 
[INFO] Executing: /bin/sh -c cd /home/user/prog/gitlab/test-user_server && git push [email protected]:testplus/test-user_server.git refs/tags/test-user_server-1.1-SNAPSHOT 
[INFO] Working directory: /home/user/prog/gitlab/test-user_server 
[ERROR] Provider message: 
[ERROR] The git-push command failed. 
[ERROR] Command output: 
[ERROR] Permission denied, please try again. 

Il problema è questo chiama

/bin/sh -c cd /home/user/prog/gitlab/test-user_server && git push [email protected]:testplus/test-user_server.git refs/tags/test-user_server-1.1-SNAPSHOT 

Ma questa chiamata non è realmente necessaria, perché avvio la mvn nella radice dei miei repository git itory. Invece una chiamata da linea di comando come quella qui sotto funziona.

git push origin refs/tags/test-user_server-1.1-SNAPSHOT

Così ho modificato la mia configurazione SCM all'interno del mio pom.xml ad una stringa simile alla seguente e funziona per me come un fascino.

Io sviluppo sotto un SO Linux e quindi non ho testato se funziona anche su sistema Windows.

0

Come alcuni hanno già detto, questi workaround possono rendere il lavoro la fase di preparazione del rilascio ma non la fase di esecuzione (nel mio caso è stato così). ho finalmente riusciti ad avere un rilascio completo di lavoro, trovando il modo corretto di inserire i dati per mettere il tag developperConnection:

<scm> 
    <developerConnection>scm:git:[email protected]:groupProject/project.git</developerConnection> 
    <tag>HEAD</tag> 
</scm> 

Molti altri formato URL sono stati accettati nel mio caso, ma alla fine non è riuscito durante l'esecuzione o preparare la fase del rilascio (scm: git: ssh: // git @ gitlab ... ad esempio stava avendo questo problema). Non so se questa soluzione è specifica per Gitlab o forse il mio progetto ma ho passato molto tempo a trovare questa soluzione alternativa ...

Problemi correlati