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配置文件到gitlabimageimageimage

  • gitlab验证配置文件image

  • 在jenkins配置pipelineimageimageimageimage

  • 构建测试

    部署之前image

    部署image

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值