2016-12-07 23 views
0

ジェンキンスパイプラインビルドの一環として、私のレポをチェックアウトします(私のワークスペースにコピーできます)。ワークスペース内のファイルを変更してから、github repoにプッシュバックします。私はちょうど私がそのファイルを取ると誰もがそれを助けることができれば、私のGitのレポ変更されたファイルをワークスペースでgithubにプッシュ

まで戻ってそれをプッシュすることができますどのように

node { 
    stage 'Update File' 
    env.WORKSPACE = pwd() 
    File file = new File("${env.WORKSPACE}/ios.podspec"); 
    fileText = file.text; 
    regex = "(spec.version\\s.*\$)"; 
    fileText = fileText.replaceAll(regex, "spec.version    = '${VERSION}'\n".trim()); 
    file.write(fileText); 

} 

がはるかに

をいただければ幸いですpodspecファイルにバージョン番号を更新していますおかげ

+0

.gitignore' 'の下にリストされているファイルのですか?あなたのローカルのファイルを変更して変更をコミットすることもできますか? – nullpointer

+0

いいえ、私は紛失しているとわからないので、私はローカルで更新することができます – Richlewis

+0

かなり簡単にファイルをコミットし、変更を押してください。あなたはローカルでチェックアウトされたバージョンを持っていますが、リモートを設定する必要があるかもしれません(デフォルトではリモートから切り離されていると思います)。あなたのパイプラインに合ったツールを選び、コマンドを実行してください。 – gpgekko

答えて

1
sh "git checkout $branch" 
sh "git add <your file>" 
sh "git commit -m '...'" 
sh "git push $url $branch" 

はトリッキーな部分は、関連する資格情報 でURLを設定することである私は、このメソッドを使用しています -

def getRemoteUrlWithCredentials(credentialsId) { 
    withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: credentialsId, usernameVariable: 'GIT_USERNAME', passwordVariable: 'GIT_PASSWORD']]) { 
     def scmUrl = scm.getUserRemoteConfigs()[0].getUrl() 
     scmUrl = scmUrl.substring(scmUrl.indexOf("github.com")) 
     return "https://${GIT_USERNAME}:${GIT_PASSWORD}@${scmUrl}" 
    } 
} 

ここで、credentialIdはgit credentialsIdです。 Manage Jenkins - > In Process Script Approvalの承認リストにscm.getUserRemoteConfigsを追加する必要があります。

そして最後の部分 - 私はそれが必要かどうかわからないが、おそらくあなたが設定user.emailとuser.nameを設定する必要があるだろう - >

def setupConfig(email, userName) { 
    sh "git config user.email $email" 
    sh "git config user.name $userName" 
} 
+0

ありがとう、ちょうど単純なgitコマンドの仕事を使用して、方法を作成する必要はありません – Richlewis

+0

sshまたはhttpsで – Amityo

+1

sshはすでにジェンキンとセットアップを持っている – Richlewis

関連する問題