18

現在、Jenkins Workflow スクリプトからリポジトリにタグを付けようとしています。ステップを使用してみましたshが、資格情報が設定されていないために問題が発生します。

fatal: could not read Username for 'https://<repo>': Device not configured

リポジトリにタグを付けるか、資格情報の問題を回避するために使用できる既存の手順はありますか?

4

5 に答える 5

24

withCredentials資格情報バインド プラグインによって提供される手順を使用して、これを機能させることができました。

URLですべてを指定する必要があるため、あまり良くありませんが、これらの値はコンソール出力でマスクされます.

withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'MyID', usernameVariable: 'GIT_USERNAME', passwordVariable: 'GIT_PASSWORD']]) {

    sh("git tag -a some_tag -m 'Jenkins'")
    sh("git push https://${env.GIT_USERNAME}:${env.GIT_PASSWORD}@<REPO> --tags")
}
于 2015-11-10T12:54:24.747 に答える
14

リモートの URL を知る必要のない別の方法を次に示します。

try {
  withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'MyID', usernameVariable: 'GIT_USERNAME', passwordVariable: 'GIT_PASSWORD']]) {
    sh("${git} config credential.username ${env.GIT_USERNAME}")
    sh("${git} config credential.helper '!echo password=\$GIT_PASSWORD; echo'")
    sh("GIT_ASKPASS=true ${git} push origin --tags")
  }
} finally {
    sh("${git} config --unset credential.username")
    sh("${git} config --unset credential.helper")
}

これは、git に構成からユーザー名を読み取らせ、資格情報ヘルパーにパスワードのみを提供させることで機能します。最後の追加echoは、git が引数としてヘルパーに渡すコマンドが、パスワードと同じ行にならないようにするためのものです。

于 2016-10-14T08:47:28.673 に答える