"Git fatal: ref HEAD ไม่ใช่สัญลักษณ์อ้างอิง" ในขณะที่ใช้ปลั๊กอินรุ่น maven


105

ฉันได้รับผลลัพธ์ข้อผิดพลาดต่อไปนี้ขณะเรียกใช้ปลั๊กอิน Maven release เตรียมขั้นตอนเช่นmvn release:prepare --batch-mode -DreleaseVersion=1.1.2 -DdevelopmentVersion=1.2.0-SNAPSHOT -Dtag=v1.1.2 -Xจากแผน Atlassian Bamboo อย่างไรก็ตามการทำเช่นเดียวกันในบรรทัดคำสั่งใช้งานได้ดี กองข้อผิดพลาดทั้งหมดอยู่ด้านล่าง

ความคิดใด ๆ ที่สามารถแก้ไขได้?

[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

อัพเดท:

การทำgit ls-remote .บนโลคัลเวิร์กสเปซโคลนก่อให้เกิด:

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 .โคลนไม้ไผ่ทำให้เกิด:

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^{}

และนี่เป็นเรื่องแปลกมากว่าเหตุใดผลการพัฒนาโคลนในท้องถิ่นจึงแตกต่างจาก Bamboo?


4
เอาล่ะปัญหาตรงนี้คือการชำระเงินภายใต้ Bamboo อยู่ในสถานะ "หัวแยก" ดูเหมือนว่า Maven พยายามแยกวิเคราะห์ชื่อสาขาปัจจุบันและล้มเหลวเนื่องจากอยู่ในสถานะ HEAD แยกการHEADอ้างอิงไม่อ้างถึงชื่อสาขาอีกต่อไป แต่เป็น SHA1 คุณสามารถจำลองการนี้โดยเฉพาะการทำงานgit checkout SHA1หรือต่อท้ายชื่อเตะไปนี้:^{} git checkout HEAD^{}ดูเหมือนว่าปลั๊กอิน Bamboo git จะพยายามเช็คเอาต์สาขาถ้าทำได้ทั้งหมด ดูเหมือนว่าคุณจะมีการแข่งขัน: ก่อนที่การสร้างจะทำงานมีสิ่งใหม่ ๆ ปรากฏขึ้น ยังไม่ชัดเจนสำหรับฉันว่าจะแก้ไขอย่างไร
John Szakmeister

รายการที่อาจซ้ำกันของสาขา Active Git คือ "(ไม่มีสาขา)" ใน Hudson CI
Alberto

คำตอบ:


156

ฉันพบข้อผิดพลาดเดียวกันกับ Jenkins ร่วมกับปลั๊กอินรุ่น maven เราแก้ไขโดยไปที่พฤติกรรมเพิ่มเติมตรวจสอบสาขาในพื้นที่ที่ระบุและป้อน 'master'

ฉันตระหนักดีว่านี่ไม่ใช่วิธีแก้ปัญหา แต่อาจทำให้คุณมีทิศทางในการมอง


4
ใช้งานได้เมื่อคุณสร้างจากสาขาหลัก หากสาขาของคุณแตกต่างออกไปแม้ว่าจะเปลี่ยนเป็นชื่อสาขาเฉพาะแล้วก็ตามก็ไม่ได้ผล
siddhusingh

29
ฉันอยู่คนละสาขากับอาจารย์และก็ทำงานได้เช่นกัน ฉันคิดว่าปัญหาคือโดยปกติปลั๊กอิน jenkins git จะตรวจสอบสาขาในสถานะหัวแยก ดังนั้นgit symbolic-refคำสั่งจึงล้มเหลว โดยการเพิ่มCheck out to specific local branchเราแก้ไขสิ่งนี้
René Link

16
การใช้**แทนmasterจะจับคู่ชื่อสาขาในพื้นที่กับสาขาระยะไกล
neXus

1
ตามความช่วยเหลือ ( Git Plugin - Jenkins - Jenkins Wiki ) การปล่อยให้ฟิลด์ว่างเปล่าก็สามารถใช้ได้เช่นกัน: "หากเลือกและค่าของมันคือสตริงว่างหรือ**จากนั้นชื่อสาขาจะคำนวณจากสาขาระยะไกลโดยไม่มีที่มา .”
evgeny9

@jvwilge ในกรณีของฉันมันเป็นไปป์ไลน์ที่แชร์ดังนั้นการตั้งค่าทั้งหมดจึงมาจาก pom.xml ฉันจะเขียนโค้ดในคำสั่งนี้ได้อย่างไร: พฤติกรรมเพิ่มเติมตรวจสอบสาขาท้องถิ่นที่เฉพาะเจาะจงและป้อน 'master'
arielma

31

สำหรับ Jenkins และ GIT ให้เพิ่มลักษณะการทำงานเพิ่มเติมcheck out to specific local branchและใช้Workspace Cleanup Pluginเพื่อล้างพื้นที่ทำงานของคุณไปยังจุดเริ่มต้นของงาน CI ของคุณ


1
ขอบคุณสิ่งนี้ได้ผลสำหรับฉัน ฉันจำเป็นต้องเพิ่ม-Darguments="-Dmaven.deploy.skip=true"ด้วย
timbru31

@toschneck สวัสดีฉันมีปัญหานี้โดยใช้ Jenkins และ Git โปรดขยายคำตอบของคุณที่นี่เพื่อรวมคำสั่งและการกำหนดค่าสำหรับปลั๊กอินที่คุณกล่าวถึง ขอบคุณ.
Jeremy

อะไรคือเหตุผลในการทำความสะอาดพื้นที่ทำงานเพิ่มเติม
kap

ตอนนี้ฉันย้ายไปที่ปลั๊กอิน maven-jgitflow รองรับฟีเจอร์และการแก้ไขข้อบกพร่องและมีฟังก์ชันการเผยแพร่ที่ดีที่สุดที่ฉันเคยเห็น bitbucket.org/atlassian/jgit-flow/wiki/Home
toschneck

การเพิ่ม "ชำระเงินไปยังสาขาในพื้นที่เฉพาะ" ก็ใช้ได้ผลเช่นกัน
johnlinp

11

ปัญหาใน Atlassian Bamboo ได้รับการแก้ไขโดยการยกเลิกการตรวจสอบการตั้งค่าเริ่มต้นUse shallow clonesพร้อมคำอธิบายFetches the shallowest commit history possible. Do not use if your build depends on full repository historyที่มีคำอธิบายช่องทำเครื่องหมายนี้อยู่ใต้การกำหนดค่าแผน -> แท็บที่เก็บ -> Git -> ตัวเลือกขั้นสูง

หลังจากนี้ทุกรุ่นจะทำงานได้ดี


5

การยกเลิกการเลือกUse shallow clonesไม่เพียงพอในกรณีของฉัน (ฉันใช้ Bamboo 5.7.2) ฉันจำเป็นต้องเปิดใช้Force Clean Buildงานในงานการชำระเงินซอร์สโค้ดด้วย การเปิดใช้งานUse shallow clonesจะทำงานสำหรับการดำเนินการต่อไปของงาน แต่การดำเนินการที่ตามมาทั้งหมดจะทำให้เกิดข้อผิดพลาดเดียวกัน


4

ฉันพบปัญหานี้ภายใต้ Bamboo ที่ใช้กับปลั๊กอิน Maven Release ฉันได้แก้ไขแล้วโดยเปิดใช้งานตัวเลือก 'Force Clean Build' ในงาน 'Source Checkout' Bamboo กล่าวว่าสิ่งนี้อาจทำให้การสร้างช้าลง แต่ก็ใช้ได้ผลและฉันไม่เห็นว่าเวลาเพิ่มขึ้นอย่างมีนัยสำคัญ


คุณใช้ Bamboo รุ่นไหน ฉันลองแล้ว แต่มันไม่ได้ผลสำหรับฉันในตอนนั้น
SkyWalker

1
ฉันใช้ 5.3 build 4101 - 09 ธ.ค. 56
zakmck

3

ฉันใช้โครงการทีมเจนกินส์กับการตั้งค่าโครงการแบบหลายสาขา

ก่อนหน้านี้ฉันใช้ checkout scmคำสั่ง

ตอนนี้ฉันใช้รหัสต่อไปนี้:

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

1
ให้คะแนนโหวตนี้เนื่องจากดูเหมือนจะทำเคล็ดลับ แต่หลังจากแก้ไขเพิ่มเติมฉันสังเกตเห็นว่าจริงๆแล้วมันได้สร้างสาขาใหม่ชื่อ "ใหม่" (เมื่อใช้กับปลั๊กอินรุ่น maven) วิธีการที่ถูกต้องมากขึ้นคือการเปลี่ยนnewด้วย**ซึ่งทำให้ชื่อสาขาท้องถิ่นเหมือนกับรีโมต
Tobb


1

สำหรับการดำเนินการ GitHub คุณสามารถตั้งค่าactions/checkout@v2ด้วยไฟล์ref: master

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

0

สำหรับเราปัญหาเกิดจากเวอร์ชัน maven ที่ระบุในไฟล์ pom แก้ไขเวอร์ชัน maven ที่ระบุในไฟล์ pom ตามที่ระบุใน bamboo ช่วยแก้ไขปัญหา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.