現在のgitチェンジセットにタグを付け、Jenkinsfile内部からタグをプッシュしたいとします。タグが既に存在する場合は、タグを置き換える必要があります。Jenkinsfile内から現在のgitチェンジセットにタグを付けるにはどうすればよいですか?
モバイルタグとなるsnapshot
タグで渡されたビルドにタグを付けるために、このロジックを使用します。
どうすればいいですか?
現在のgitチェンジセットにタグを付け、Jenkinsfile内部からタグをプッシュしたいとします。タグが既に存在する場合は、タグを置き換える必要があります。Jenkinsfile内から現在のgitチェンジセットにタグを付けるにはどうすればよいですか?
モバイルタグとなるsnapshot
タグで渡されたビルドにタグを付けるために、このロジックを使用します。
どうすればいいですか?
これは私がこれをこのように実装する方法ですが、あなたがより良い方法を知っていれば、私はそれを聞いて喜んでいます。
#!groovy
stage 'build'
node {
repositoryCommiterEmail = '[email protected]'
repositoryCommiterUsername = 'examle.com'
checkout scm
sh "echo done"
if (env.BRANCH_NAME == 'master') {
stage 'tagging'
sh("git config user.email ${repositoryCommiterEmail}")
sh("git config user.name '${repositoryCommiterUsername}'")
sh "git remote set-url origin [email protected]:..."
// deletes current snapshot tag
sh "git tag -d snapshot || true"
// tags current changeset
sh "git tag -a snapshot -m \"passed CI\""
// deletes tag on remote in order not to fail pushing the new one
sh "git push origin :refs/tags/snapshot"
// pushes the tags
sh "git push --tags"
}
}
私は(Git Publish Supportが開発中ですが)SSH経由レポをgitのために変更/タグを公開するmy Jenkins Pipeline Setupと私の解決策を共有したいです。詳細情報をチェックしてください。改善アイデアは大歓迎です。
あなたは自分のプロジェクトにファイルgit_push_ssh.groovy
を追加し、このようJenkinsfileからメソッド
pushSSH()
を呼び出す要するに
:やった、私は直接プラグインsshagentを使用上記の作業を取得できなかった人のために
env.BRANCH_NAME = "mycoolbranch"// BRANCH_NAME is predefined in multibranch pipeline job
env.J_GIT_CONFIG = "true"
env.J_USERNAME = "Jenkins CI"
env.J_EMAIL = "[email protected]"
env.J_CREDS_IDS = '02aa92ec-593e-4a90-ac85-3f43a06cfae3' // Use credentials id from Jenkins
def gitLib = load "git_push_ssh.groovy"
...
gitLib.pushSSH(commitMsg: "Jenkins build #${env.BUILD_NUMBER}", tagName: "build-${env.BUILD_NUMBER}", files: "changelog.txt someotherfile.txt");
トリック:
stage('tag build'){
checkout([
$class: 'GitSCM', branches: [[name: '*/master']],
userRemoteConfigs: [[credentialsId: 'git',
url: 'ssh://<ssh URL>']],
extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'targeted-dir']]
])
sshagent(credentials: ['<credentials ID.']){
dir('targeted-dir'){
sh("git config user.email '<email>")
sh("git config user.name '<user>.com'")
// deletes current snapshot tag
sh ("git tag -d ${PARAM_VERSION_NUMBER} || true")
// tags current changeset
sh ("git tag -a ${PARAM_VERSION_NUMBER} -m \"versioning ${PARAM_VERSION_NUMBER}\"")
// deletes tag on remote in order not to fail pushing the new one
sh ("git push origin :refs/tags/snapshot")
// pushes the tags
sh ("git push --tags")
}
}
}
これは面白いです。どのようにしてリモートへの認証を行うのですか(パスワードの送信方法)? – octavian