jenkins的pipeline脚本与代码一起版本管理

jenkins的pipeline脚本与代码一起版本管理

1. pipeline脚本与代码一起版本管理

  • 保存jenkinsfile配置文件到gitlab存储目录

    // 公共
    def registry = "harbor.scajy.org"           // harbor的连接地址
    // 项目
    def project = "k8s"                      // harbor的项目目录
    def app_name = "java-demo"                       // 项目名称
    def image_name = "${registry}/${project}/${app_name}:${BUILD_NUMBER}"      // 推送harbor的全路径,BUILD_NUMBER是取得当前jenkins构建的号,为版本号
    def git_address = "git@10.100.24.87:k8s/tomcat_java_demo.git"             // 根据项目要更换git地址
    def base_image = "${registry}/library/tomcat:latest"                      // 构建项目需要的基础镜像
    // 认证
    def secret_name = "registry-pull-secret"
    def docker_registry_auth = "b6085682-39e7-458f-96c0-f139fe17f2e1"       // harbor仓库key,这个key要去jenkins查找
    def git_auth = "d8bf675c-5dd4-4bf4-a4f7-4e8c1be1c002"                   // git代码仓库的key,这个key要去jenkins查找
    def k8s_auth = "a16f5236-7cdc-4216-a4ec-c52346751f56"                   // k8s连接的key
    
    podTemplate(label: 'jenkins-slave', cloud: 'kubernetes', containers: [
        containerTemplate(
            name: 'jnlp',          // 模板
            image: "${registry}/library/jenkins-slave:1.8"       // jenkins-slave从服务器镜像
        ),
      ],
      volumes: [
        hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'),
        hostPathVolume(mountPath: '/usr/bin/docker', hostPath: '/usr/bin/docker')
      ],
    ) 
    {
      node("jenkins-slave"){
          // 第一步
          stage('拉取代码'){
             checkout([$class: 'GitSCM', branches: [[name: '${Branch}']], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]])
          }
          // 第二步
          stage('代码编译'){
              sh "mvn clean package -Dmaven.test.skip=true"
          }
          // 第三步
          stage('构建镜像'){
              withCredentials([usernamePassword(credentialsId: "${docker_registry_auth}", passwordVariable: 'password', usernameVariable: 'username')]) {
                sh """
                  echo '
                    FROM  ${base_image}
                    RUN rm -rf /usr/local/tomcat/webapps/*
                    ADD target/*.war /usr/local/tomcat/webapps/ROOT.war 
                  ' > Dockerfile
                  ls 
                  ls target
                  docker build -t ${image_name} .
                  docker login -u ${username} -p '${password}' ${registry}
                  docker push ${image_name}
                """
                }
          }
          // 第四步
          stage('部署到K8S平台'){
              sh """
              sed -i 's#\$IMAGE_NAME#${image_name}#' deploy.yml
              sed -i 's#\$SECRET_NAME#${secret_name}#' deploy.yml
              """
              kubernetesDeploy configs: 'deploy.yml', kubeconfigId: "${k8s_auth}"
          }
    
      }
    }
    
    
  • 提交jenkinsfile配置文件到gitlab
    image
    image
    image

  • gitlab验证配置文件
    image

  • 在jenkins配置pipeline
    image
    image
    image
    image

  • 构建测试

    部署之前
    image

    部署
    image

posted @ 2022-05-20 14:25  七月流星雨  阅读(583)  评论(0编辑  收藏  举报