Bitbucket Jenkin Kubernetes CI / CD

时间:2019-11-25 17:00:44

标签: git docker jenkins kubernetes

任何人都可以共享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.")
    }
}
}

第一步是不关闭回购协议,而我的回购协议不是私有的。

谢谢

2 个答案:

答案 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, 希望对您有帮助