任何人都可以共享Jenkin文件或为Jenkin的Bitbucket专用存储库创建CI / CD的步骤。
构建docker映像并上传到docker hub并部署到kubernetes。
到目前为止,我已经尝试过下载bukcet插件,仍然没有帮助。
我没有使用过太多的Jenkin管道,我使用过Freestyle项目,对Jenkin的使用经验还不多。
pipeline {
environment {
registry = "*******/test_case"
registryCredential = 'dockerhub'
}
agent any
stages {
stage('Cloning Git') {
steps {
git 'https://harshmanvar@bitbucket.org/harshmanvar/configuring-ci-cd-on-kubernetes-with-jenkins.git'
}
}
stage('Docker Build') {
steps {
sh "docker build -t ****/test_case:${env.BUILD_NUMBER} ."
}
}
stage('Docker Push') {
steps {
withCredentials([usernamePassword(credentialsId: 'dockerhub', passwordVariable: 'dockerHubPassword', usernameVariable: 'dockerHubUser')]) {
sh "docker login -u ${env.dockerHubUser} -p ${env.dockerHubPassword}"
sh "docker push ******/test_case:${env.BUILD_NUMBER}"
}
}
}
stage('Docker Remove Image') {
steps {
sh "docker rmi ********/test_case:${env.BUILD_NUMBER}"
}
}
stage('Apply Kubernetes Files') {
steps {
withKubeConfig([credentialsId: 'kubeconfig']) {
sh 'cat deployment.yaml | sed "s/{{BUILD_NUMBER}}/$BUILD_NUMBER/g" | kubectl apply -f -'
sh 'kubectl apply -f service.yaml'
}
}
}
}
post {
success {
slackSend(message: "Pipeline is successfully completed.")
}
failure {
slackSend(message: "Pipeline failed. Please check the logs.")
}
}
}
第一步是不关闭回购协议,而我的回购协议不是私有的。
谢谢
答案 0 :(得分:2)
无论您的git存储库是否为私有,只需在git开发人员设置中设置您的私有访问令牌并将其添加到Jenkins凭证即可。之后,尝试此脚本cloning Git
阶段:
stage('Cloning Git') {
steps {
git credentialsId:'Your_Credential_Id',
url:'https://harshmanvar@bitbucket.org/harshmanvar/configuring-ci-cd-on-kubernetes-with-jenkins.git', branch:'master'
}}
我希望这对您有帮助。
答案 1 :(得分:1)
您应该检出已推送到bitbucket的提交,而不是手动克隆 我所做的是,您可以在与结帐相关的官方文档中了解更多相关信息, 这是我的第一步
stage('checkout scm'){
script {
try {
def scmVars = checkout scm
echo "$scmVars"
bitbucketStatusNotify(buildState: 'INPROGRESS', credentialsId: 'OAuth_Bit_Notify' )
} catch(err) {
bitbucketStatusNotify(buildState: 'FAILED', buildDescription: 'unable to clone repo with submodule', credentialsId: 'OAuth_Bit_Notify' )
}
}
}
bitbucketStatusNotify是一个插件,用于在此处将状态发送到bitbucket, 希望对您有帮助