Maven sürüm eklentisini kullanırken "Git ölümcül: ref HEAD sembolik bir referans değildir"


105

mvn release:prepare --batch-mode -DreleaseVersion=1.1.2 -DdevelopmentVersion=1.2.0-SNAPSHOT -Dtag=v1.1.2 -XAtlassian Bamboo planından Maven sürüm eklentisi hazırlama adımını çalıştırırken aşağıdaki hata çıktısını alıyorum . Ancak aynısını komut satırında yapmak iyi çalışıyor. Tam hata yığını aşağıdadır.

Bunun nasıl çözülebileceğine dair bir fikriniz var mı?

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4.2:prepare (default-cli) on project hpcmom: An error is occurred in the checkin process: Exception while executing SCM command. Detecting the current branch failed: fatal: ref HEAD is not a symbolic ref -> [Help 1]
    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4.2:prepare (default-cli) on project hpcmom: An error is occurred in the checkin process: Exception while executing SCM command.
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.MojoExecutionException: An error is occurred in the checkin process: Exception while executing SCM command.
    at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:281)
    at org.apache.maven.plugins.release.PrepareReleaseMojo.execute(PrepareReleaseMojo.java:232)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    ... 19 more
Caused by: org.apache.maven.shared.release.ReleaseExecutionException: An error is occurred in the checkin process: Exception while executing SCM command.
    at org.apache.maven.shared.release.phase.AbstractScmCommitPhase.checkin(AbstractScmCommitPhase.java:160)
    at org.apache.maven.shared.release.phase.AbstractScmCommitPhase.performCheckins(AbstractScmCommitPhase.java:145)
    at org.apache.maven.shared.release.phase.ScmCommitPreparationPhase.runLogic(ScmCommitPreparationPhase.java:76)
    at org.apache.maven.shared.release.phase.AbstractScmCommitPhase.execute(AbstractScmCommitPhase.java:78)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:234)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:169)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:146)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:107)
    at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:277)
    ... 22 more
Caused by: org.apache.maven.scm.ScmException: Exception while executing SCM command.
    at org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:63)
    at org.apache.maven.scm.provider.git.AbstractGitScmProvider.executeCommand(AbstractGitScmProvider.java:291)
    at org.apache.maven.scm.provider.git.AbstractGitScmProvider.checkin(AbstractGitScmProvider.java:217)
    at org.apache.maven.scm.provider.AbstractScmProvider.checkIn(AbstractScmProvider.java:410)
    at org.apache.maven.shared.release.phase.AbstractScmCommitPhase.checkin(AbstractScmCommitPhase.java:156)
    ... 30 more
Caused by: org.apache.maven.scm.ScmException: Detecting the current branch failed: fatal: ref HEAD is not a symbolic ref

    at org.apache.maven.scm.provider.git.gitexe.command.branch.GitBranchCommand.getCurrentBranch(GitBranchCommand.java:147)
    at org.apache.maven.scm.provider.git.gitexe.command.checkin.GitCheckInCommand.createPushCommandLine(GitCheckInCommand.java:192)
    at org.apache.maven.scm.provider.git.gitexe.command.checkin.GitCheckInCommand.executeCheckInCommand(GitCheckInCommand.java:132)
    at org.apache.maven.scm.command.checkin.AbstractCheckInCommand.executeCommand(AbstractCheckInCommand.java:54)
    at org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:59)
    ... 34 more
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
simple  02-Dec-2013 17:18:09    Failing task since return code of [/opt/dev/apache-maven/3.0.5//bin/mvn -Djava.io.tmpdir=/opt/atlassian/bamboo/5.2.1/temp/HPCMOM-RELEASE-JOB1 release:prepare --batch-mode -DignoreSnapshots=false -DreleaseVersion=1.1.2 -DdevelopmentVersion=1.2.0-SNAPSHOT -Dtag=v1.1.2 -X] was 1 while expected 0

GÜNCELLEME:

git ls-remote .Yerel bir çalışma alanı klonu üzerinde yapmak şunları üretir:

azg@olympus:~/code/hpcmom$ git ls-remote .
7894eea08a0afecb99515d1339623be63a7539d4    HEAD
7894eea08a0afecb99515d1339623be63a7539d4    refs/heads/master
7894eea08a0afecb99515d1339623be63a7539d4    refs/remotes/origin/HEAD
7894eea08a0afecb99515d1339623be63a7539d4    refs/remotes/origin/master
6a7095b86cccdfd4b28e4dea633d0930809ae9ac    refs/tags/v1.0
1a53462b1ecf0abfea8245016304cda9c78b420d    refs/tags/v1.0^{}
5113a7cbcf35c47b680a9c36e15e5fa01ef1d2e6    refs/tags/v1.1
79a3073ecabe65d3c8051520f8007d9e49a65a06    refs/tags/v1.1^{}
a00249209597ea1214d80ee38f228c40db7022c2    refs/tags/v1.1.0
e892bce8d25d87368ab557fee0d30810bef7e31e    refs/tags/v1.1.0^{}
b491a312c39088533cb069e4ab1ae8a00d1f6bfe    refs/tags/v1.1.2
a3f7618dada7ed60d8190426152ffd90e0e40a86    refs/tags/v1.1.2^{}

git ls-remote .Bamboo klonu üzerinde yapmak şunları üretir:

azg@olympus:/var/atlassian/application-data/bamboo/xml-data/build-dir/HPCMOM-RELEASE-JOB1$ git ls-remote .
2422ce066ac35dae3c54f1435ef8dae5008a9a14    HEAD
57c08d581c0fd9e788049733fbdc9c22b9a6ae00    refs/heads/master
57c08d581c0fd9e788049733fbdc9c22b9a6ae00    refs/remotes/origin/HEAD
57c08d581c0fd9e788049733fbdc9c22b9a6ae00    refs/remotes/origin/master
7539f9700d78a1b766fca7ed9f409914f1ea9d08    refs/tags/vnull
6bfa8c3fdb1f8f56a385035f01b1b77b6e88da8b    refs/tags/vnull^{}

ve bu çok garip, yerel geliştirme klon çıktısı Bamboo olandan neden bu kadar farklı?


4
Tamam, buradaki sorun, Bamboo altındaki ödeme işleminin "bağımsız HEAD" durumunda olmasıdır. Görünüşe göre Maven, geçerli dal adını ayrıştırmaya çalışıyor ve başarısız oluyor çünkü ayrılmış HEAD durumunda, başvuru HEADartık bir dal adına değil, bir SHA1'e başvuruyor. Bunu yerel olarak bir ref: çalıştırarak git checkout SHA1veya ^{}ismine ekleyerek simüle edebilirsiniz git checkout HEAD^{}. Görünüşe göre Bamboo git eklentisi, mümkünse dalı kontrol etmeye çalışıyor. Yani bir yarışınız var gibi görünüyor: yapı çalışmadan önce yeni şeyler ortaya çıktı. Nasıl düzeltileceği henüz bana açık değil.
John Szakmeister

Yanıtlar:


156

Maven sürüm eklentisi ile birlikte Jenkins'te aynı hatayla karşılaştım, Ek davranışlar, Belirli yerel şubeye göz atın ve 'ana' girerek sorunu düzelttik.

Bunun bir çözüm olmadığının farkındayım ama nereye bakmanız gerektiği konusunda size yol gösterebilir.


4
Ana şubeden inşa ettiğinizde çalışır. Şubeniz farklıysa, belirli bir şube adına değiştirdikten sonra bile çalışmaz.
siddhusingh

29
Ustadan farklı bir daldayım ve o da işe yarıyor. Sanırım sorun, jenkins git eklentisinin normalde şubeyi ayrılmış kafa durumunda kontrol etmesidir. Yani git symbolic-refkomut başarısız olur. Ekleyerek Check out to specific local branchbunu düzeltiriz.
René Link

16
**Bunun yerine kullanılması master, yerel şube adını uzaktaki adla eşleştirecektir.
neXus

1
Yardıma göre ( Git Eklentisi - Jenkins - Jenkins Wiki ), alanı boş bırakmak bunun için de işe yarayabilir: "Seçiliyse ve değeri boş bir dizeyse veya **dal adı kökeni olmadan uzak daldan hesaplanır . "
evgeny9

@jvwilge Benim durumumda, bu paylaşılan bir boru hattı, yani tüm ayarlar pom.xml'den geliyor. Bu talimatı koda nasıl yazabilirim: Ek davranışlar, Belirli yerel şubeye göz atın ve 'ana' girin
arielma

31

Jenkins ve GIT için ek davranışı ekleyin ve çalışma alanınızı CI işinizin başlangıcına temizlemek için check out to specific local branchkullanın Workspace Cleanup Plugin.


1
teşekkürler, bu benim için çalıştı. Benim de eklemem gerekiyordu -Darguments="-Dmaven.deploy.skip=true".
timbru31

@toschneck Merhaba Jenkins ve Git kullanarak tam olarak bu sorunu yaşıyorum. Lütfen cevabınızı, bahsettiğiniz eklenti için komutları ve yapılandırmayı içerecek şekilde genişletebilir misiniz? Teşekkürler.
Jeremy

Çalışma alanını ek olarak temizlemenin nedeni nedir?
kap

Şu anda maven-jgitflow eklentisine geçtim. Özellik ve hata düzeltme dallarını destekliyor ve gördüğüm en iyi sürüm işlevine sahip. bitbucket.org/atlassian/jgit-flow/wiki/Home
toschneck

"Belirli bir yerel şubeye göz at" eklemek benim için de işe yarıyor.
johnlinp

11

Atlassian Bamboo'daki sorun, varsayılan ayarın Use shallow clonesaçıklamayla birlikte kontrol edilmesiyle çözüldü Fetches the shallowest commit history possible. Do not use if your build depends on full repository history. Bu onay kutusu Plan Yapılandırması -> Depolar sekmesi -> Git -> Gelişmiş seçenekler altında bulunur

Bundan sonra tüm sürümler iyi çalışıyor.


5

Use shallow clonesBenim durumumda işaretinin kaldırılması yeterli değildi (Bamboo 5.7.2 kullanıyorum). Force Clean BuildKaynak Kod Kontrolü görevinde de etkinleştirmem gerekiyordu . İşin bir Use shallow clonessonraki yürütmesi için işe yarayacağını etkinleştirmek , ancak sonraki tüm yürütmeler aynı hataya neden olur.


4

Bu sorunu Bamboo'da Maven Release eklentisiyle birlikte gördüm. 'Source Checkout' görevinde 'Force Clean Build' seçeneğini etkinleştirerek bunu düzelttim. Bamboo, bunun yapıyı yavaşlatabileceğini söylüyor, ancak işe yarıyor ve önemli bir zaman artışı görmedim.


Bamboo'nun hangi sürümünü kullandınız? Bunu denedim ama o zamanlar benim için işe yaramadı.
SkyWalker

1
5.3 build 4101 kullanıyorum - 09 Ara 13
zakmck

3

Çoklu Şube Proje Kurulumuna sahip bir Jenkins Takım Projesi kullanıyorum.

Daha önce checkout scmkomut kullandım .

Şimdi şu kodu kullanıyorum:

checkout([
                 $class: 'GitSCM',
                 branches: scm.branches,
                 extensions: scm.extensions + [[$class: 'CleanCheckout'], [$class: 'LocalBranch', localBranch: 'new']],
                 userRemoteConfigs: scm.userRemoteConfigs
            ])

1
İşe yarayacak gibi göründüğü için buna olumlu oy verdi. Ancak biraz daha kurcalamadan sonra, aslında "yeni" adında yeni bir dal oluşturduğunu fark ettim (maven sürüm eklentisi ile kullanırken). Daha doğru bir yaklaşım , yerel şube adını uzaktan kumanda ile aynı yapan newile değiştirmek olacaktır **.
Tobb

3

benim için işe yarayan şey, "mvn release" i aramadan önce "git checkout -f master" olarak adlandırmaktı


1

Kurulum can GitHub işlemler için actions/checkout@v2birlikteref: master

steps:
  - uses: actions/checkout@v2
    with:
      ref: master

0

Bizim için sorun pom dosyasında belirtilen maven sürümüyle ilgiliydi. Pom dosyasında belirtilen maven sürümü bambudakine göre düzeltildi, sorunu düzeltti

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.