2017-11-30 8 views
1

現在、パイプラインを設定してブランチにコミットされたときに、ビルドとテストが合格するとマスタとマージします。しかし、私はこのエラーを受け取ります:Jenkins pipeline:merge fail

[Build, test and deploy front] Running shell script 
+ git merge origin/Develop 
error: merge is not possible because you have unmerged files. 
hint: Fix them up in the work tree, and then use 'git add/rm <file>' 
hint: as appropriate to mark resolution and make a commit. 
fatal: Exiting because of an unresolved conflict. 

メッセージはかなり明確です、それはマージ競合のためにマージされません。しかし、私がマスターにマージしようとしているブランチは、マスターから作成された新しいブランチです。現在、変更はありません。私はそれが何を指しているのか分からない。ここ
は私のパイプラインである:

pipeline { 
agent any 

// this tool will be used for all stages/steps except over-written 
tools {nodejs "newest node"} 

stages { 
     stage('build') { 
       steps { 
      sh 'cd frontend' 
        sh 'npm install' 
      } 
     } 
    stage('test'){ 
     steps{ 
      echo 'Hello, JDK' 
     } 
    } 
    stage('update master'){ 
     steps{ 
      sh 'git merge origin/Develop' 
      sh 'git commit -am "Merged develop branch to master' 
      sh "git push origin master" 
     } 
    } 

    } 
} 

EDIT:だから

HEAD detached from 25e2038 
Untracked files: 
    frontend/ 

nothing added to commit but untracked files present 

これは、これがエラーを返した今

pipeline { 
agent any 

// this tool will be used for all stages/steps except over-written 
tools {nodejs "newest node"} 

stages { 
     stage('build') { 

       steps { 
      sh 'cd client' 
        sh 'npm install' 
      } 
     } 
    stage('update master'){ 
      steps{ 
       sh 'git add -A' 
       sh 'git reset --hard HEAD' 
       sh 'git merge origin/Develop' 
       sh 'git commit -m "Merged develop branch to master"' 
       sh "git push origin master" 
      } 
    } 

    } 
} 

私が使用するコードです合併は今や成功しているようだsfulですが、コミットは行われず、追跡されていないファイルにエラーがスローされます。フロントエンドは私のgithubフォルダには存在しませんが、私の前のコードは 'cd frontend'でしたので、取り除くことはできません。ハードリセットはそれを削除しません。 git clean -ffdを追加することにより、

EDIT 2 は、フロントエンド/フォルダがなくなっていますが、ビルドはまだ失敗します。

pipeline { 
agent any 

// this tool will be used for all stages/steps except over-written 
tools {nodejs "newest node"} 

stages { 
     stage('build') { 

       steps { 
        sh 'npm install' 
      } 
     } 
    stage('update master'){ 
      steps{ 
       sh 'git add -A' 
      sh 'git commit --allow-empty -am "Merged developer branch into master"' 
      sh 'git merge origin/Develop' 
      sh "git push origin HEAD:master" 
      } 
    } 

    } 
} 

答えて

1

あなたは地元のマージされていない変更があります

ANSWER これは私がやってみたかったのコードの作業バージョンです。だから、origin/Developをマージする前にコミットしてください。

stage('update master'){ 
    steps{ 
     sh 'git add -A' 
     sh 'git commit -m "Merged develop branch to master' 
     sh 'git merge origin/Develop' 
     sh 'git push origin HEAD:master' 
    } 
} 

または、変更がhard resetを行い、その後コミット行うことが重要とされていない場合:

stage('update master'){ 
    steps{ 
     sh 'git add -A' 
     sh 'git reset --hard HEAD' 
     sh 'git merge origin/Develop' 
     sh 'git clean -ffd' 
     sh "git push origin HEAD:master" 
    } 
} 

N.Bを:あなたはプッシュを持っているか、リモートmasterブランチに書き込み権限を確認してください。

+0

それは働いていたが、今私がコミットに新しいエラーが表示されます。 + gitが-amをコミットするには、致命的な を習得するために枝を開発合併:-aとパスは意味がありません。コミットするとき.. 'gitの-mをコミット-a'フラグ –

+1

削除は'「master'への分岐を開発合併更新答え –

+0

は、新しいエラーを与える:。。追加 \tフロントエンド/ 何もない:9d599ad 人跡未踏のファイルから切り離さ HEADコミットするには未追跡のファイルが存在する –