Jenkins BlueOcean

一. 创建dev分支

在原先gitlab的jenkins-test1项目中创建dev分支,项目根目录中点击Branch->New branch->填写dev

1.修改Jenkinsfile如下

node('slave-jnlp') {
    stage('prepare') {
      echo "1.prepare Stage"
      checkout scm
      script {
        build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
        if (env.BRANCH_NAME != 'master') {
          build_tag = "${env.BRANCH_NAME}-${build_tag}"
        }
      }
    }
    stage('Test') {
      echo "2.Test Stage"
    }
    stage('Build') {
      echo "3.Build Stage"
      sh "docker build -t 192.168.2.35/myrepo/jenkins-demo:${build_tag} ."
    }
    stage('Push') {
      echo "4.Push Docker Image Stage"
      withCredentials([
        usernamePassword(credentialsId: 'harbor', passwordVariable: 'harborPassword', usernameVariable: 'harborUser')
        ]) {
        sh "docker login -u ${harborUser} -p ${harborPassword} http://192.168.2.35"
        sh "docker push 192.168.2.35/myrepo/jenkins-demo:${build_tag}"
        }
    }
    
    stage('Deploy') {
        echo "5. Deploy Stage"
        if (env.BRANCH_NAME == 'master') {
            input "确认要部署线上环境吗?"
        }
        sh "sed -i 's/<BUILD_TAG>/${build_tag}/' k8s.yaml"
        sh "sed -i 's/<BRANCH_NAME>/${env.BRANCH_NAME}/' k8s.yaml"
        sh "kubectl apply -f k8s.yaml --record"
    }


}

在第一步中我们增加了checkout scm命令,用来检出代码仓库中当前分支的代码,为了避免各个环境的镜像 tag 产生冲突,我们为非 master 分支的代码构建的镜像增加了一个分支的前缀。

在第五步中如果是 master 分支的话我们才增加一个确认部署的流程,其他分支都自动部署,并且还需要替换 k8s.yaml 文件中的环境变量的值。

2.安装BlueOcean插件

登录 Jenkins Web UI -> 点击左侧的 Manage Jenkins -> Manage Plugins -> Available -> 搜索查找 BlueOcean -> 点击下载安装并重启

我们这里使用 BlueOcean 这种方式来完成此处 CI/CD 的工作,BlueOcean 是 Jenkins 团队从用户体验角度出发,专为 Jenkins Pipeline 重新设计的一套 UI 界面,仍然兼容以前的 fressstyle 类型的 job,BlueOcean 具有以下的一些特性:

  • 连续交付(CD)Pipeline 的复杂可视化,允许快速直观的了解 Pipeline 的状态
  • 可以通过 Pipeline 编辑器直观的创建 Pipeline
  • 需要干预或者出现问题时快速定位,BlueOcean 显示了 Pipeline 需要注意的地方,便于异常处理和提高生产力
  • 用于分支和拉取请求的本地集成可以在 GitHub 或者 Bitbucket 中与其他人进行代码协作时最大限度提高开发人员的生产力。

3.部署pipeline

点击创建一个新Pipeline, 因为我们使用的gitlab, 选择git,然后添加我们项目所在的地址,可以在gitlab项目Clone with HTTP那里直接复制地址,不过要把域名修改为IP+端口

点击完成后,就会自动构建所有包含jenkinsfile的分支,我们这里会自动构建master和dev分支的文件

posted @ 2023-08-30 21:05  坚强的小蚂蚁  阅读(103)  评论(0编辑  收藏  举报