Maven 릴리스 플러그인을 사용하는 동안 "Git fatal : ref HEAD는 기호 참조가 아닙니다."


104

mvn release:prepare --batch-mode -DreleaseVersion=1.1.2 -DdevelopmentVersion=1.2.0-SNAPSHOT -Dtag=v1.1.2 -XAtlassian Bamboo 계획에서 Maven 릴리스 플러그인 준비 단계를 실행하는 동안 다음 오류 출력이 표시 됩니다. 그러나 명령 줄에서 동일한 작업을 수행하면 정상적으로 작동합니다. 전체 오류 스택은 다음과 같습니다.

이 문제를 어떻게 해결할 수 있습니까?

[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 아래의 체크 아웃이 "분리 된 HEAD"상태라는 것입니다. Maven이 현재 분기 이름을 구문 분석하려고 시도하고 분리 된 HEAD 상태에서 HEAD참조가 더 이상 분기 이름이 아니라 SHA1을 참조 하기 때문에 실패하는 것으로 보입니다 . ref :를 실행 git checkout SHA1하거나 추가 ^{}하여 로컬에서 시뮬레이션 할 수 있습니다 git checkout HEAD^{}. 가능한 경우 Bamboo git 플러그인이 브랜치를 체크 아웃하려고 시도하는 것 같습니다. 따라서 경주가있는 것 같습니다. 빌드가 실행되기 전에 새로운 항목이 나타났습니다. 아직 해결 방법이 명확하지 않습니다.
John Szakmeister 2013

답변:


153

Maven 릴리스 플러그인과 함께 Jenkins에서 동일한 오류가 발생하여 추가 동작으로 이동하여 특정 로컬 브랜치로 체크 아웃하고 '마스터'를 입력하여 수정했습니다.

나는 이것이 해결책이 아니라는 것을 알고 있지만 어디를 볼지에 대한 방향을 줄 수 있습니다.


3
마스터 브랜치에서 빌드 할 때 작동합니다. 브랜치가 다르면 특정 브랜치 이름으로 변경해도 작동하지 않습니다.
siddhusingh 2014-08-05

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 2015 년

@toschneck 안녕하세요 Jenkins와 Git을 사용하여 정확한 문제가 발생했습니다. 언급 한 플러그인에 대한 명령 및 구성을 포함하도록 여기에서 답변을 확장 해 주시겠습니까? 감사.
Jeremy

작업 공간을 추가로 청소하는 이유는 무엇입니까?
kap

현재는 maven-jgitflow 플러그인으로 이동했습니다. 기능 및 버그 수정 분기를 지원하고 내가 본 최고의 릴리스 기능을 가지고 있습니다. bitbucket.org/atlassian/jgit-flow/wiki/Home
toschneck

"특정 로컬 지점에 체크 아웃"을 추가하는 것도 저에게 효과적입니다.
johnlinp

11

Atlassian Bamboo의 문제는 Use shallow clonesdescription 으로 기본 설정 을 선택 취소하여 해결되었습니다 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

Maven 릴리스 플러그인과 함께 사용되는 Bamboo에서이 문제를 보았습니다. 'Source Checkout'작업에서 'Force Clean Build'옵션을 활성화하여 수정했습니다. Bamboo는 이것이 빌드를 느리게 만들 수 있다고 말하지만 작동하며 상당한 시간 증가를 보지 못했습니다.


어떤 버전의 Bamboo를 사용하셨습니까? 나는 이것을 시도했지만 그 당시에는 작동하지 않았습니다.
SkyWalker 2014

1
5.3 빌드
4101-09

3

Multibranch 프로젝트 설정과 함께 Jenkins 팀 프로젝트를 사용하고 있습니다.

이전에 checkout scm명령을 사용했습니다 .

이제 다음 코드를 사용하고 있습니다.

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

1
트릭을 수행하는 것처럼 보였기 때문에 이것을 찬성했습니다. 그러나 좀 더 땜질을 한 후에 실제로 "new"라는 새 브랜치를 생성했음을 알았습니다 (maven 릴리스 플러그인과 함께 사용할 때). 더 올바른 접근 방식은 변화 될 것 new**원격와 같은 로컬 브랜치의 이름을 수 있습니다.
Tobb

3

나를 위해 일한 것은 "mvn release"를 호출하기 전에 "git checkout -f master"를 호출하는 것이 었습니다.


0

우리에게 문제는 pom 파일에 지정된 maven 버전이었습니다. bamboo에있는 버전에 따라 pom 파일에 지정된 maven 버전을 수정하여 문제를 해결했습니다.


0

당신은 설치 할 수 GitHub의 작업의 경우 actions/checkout@v2ref: master

steps:
  - uses: actions/checkout@v2
    with:
      ref: master
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.