zoukankan      html  css  js  c++  java
  • jenkins自动化pipline的ci/cd流水线

    pipeline {
        agent any
       tools {
            //工具必须预先在jenkins中预配置
            maven 'mvn'
            jdk  'jdk'
        }
        stages {
            stage('Env') {
               
                steps {
                    sh 'printenv'
                }
            }
            stage('git')     {
             steps{
               checkout([$class: 'GitSCM', branches: [[name: '*/develop']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '18980d0a-1ae4-443b17dc687b1', url: 'https://CFAI_the_best/codeflag-basis.git']]])
             }
       }
            stage('mvn install')     { 
              
               steps {
                
                  sh 'cd /var/lib/jenkins/workspace/k8s-test-basis/src/main/resources && mv application.test.properties application.properties'
                  
                  sh 'mvn clean install'
                  
               }
              
           }
            stage('docker')     { 
               
               steps {
                   
                   sh 'cd /var/lib/jenkins/workspace/k8s-test-basis/target '
                  sh '''
          REPOSITORY=172.18.0.218/codeflagtest/codeflag-basis:${BUILD_ID}
            pwd
            echo '
            FROM 172.18.0.218/codeflagtest/tomcat
          RUN rm -rf  /usr/local/tomcat/webapps/ROOT
            RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
      && echo 'Asia/Shanghai' >/etc/timezone 
              ADD target/basic-0.0.1-SNAPSHOT.war   /usr/local/tomcat/webapps/ROOT.war
            ' > Dockerfile
            docker build -t $REPOSITORY .
            docker login 172.18.0.218 -u admin -p  Harbor123456
            docker push $REPOSITORY
          
            '''
               }
              
            }
                    stage('deploy')     { 
              
               steps {
                   sh ' REPOSITORY=172.18.0.218/codeflagtest/codeflag-basis:${BUILD_ID}'
                  sh 'kubectl  get pod'
                  sh '''
     cat << EOF > basis.yaml
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: basis
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: basis
      template:
        metadata:
          labels:
            app: basis
        spec:
          containers:
          - name: basis
            image: 172.18.0.218/codeflagtest/codeflag-basis:${BUILD_ID}
          
            imagePullPolicy: Always
            ports:
            - containerPort: 8080
            volumeMounts:
              - name: pvc-nas
                mountPath: "/home/www/test"
          volumes:
            - name: pvc-nas
              persistentVolumeClaim:
                claimName: pvc-nas
          imagePullSecrets:
            - name: registry-secret
    
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: basis
    spec:
      ports:
      - port: 80
        targetPort: 8080
        name: basis
      selector:
        app: basis
      type: LoadBalancer
    EOF
    
    kubectl apply -f basis.yaml
                  
                  '''
                  
               }
              
           }
        }
    
    }

     

    官方推荐样例:

    官方推荐的语法:

    官方例子:
    Jenkinsfile (Declarative Pipeline)
    pipeline { 
        agent any 
        options {
            skipStagesAfterUnstable()
        }
        stages {
            stage('Build') { 
                steps { 
                    sh 'make' 
                }
            }
            stage('Test'){
                steps {
                    sh 'make check'
                    junit 'reports/**/*.xml' 
                }
            }
            stage('Deploy') {
                steps {
                    sh 'make publish'
                }
            }
        }
    }
    作者:tigergao
    功不唐捐 玉汝于成
  • 相关阅读:
    python主流框架简介和Django框架的使用
    如何确定计算上已安装的.NET framework版本
    访问另一台主机时报错0x80004005
    sql server自动备份数据库
    sql server创建维护计划报错“不是有效的win32”
    sql server agent代理备份数据库报错‘用户 'sa' 登录失败’
    sql server日志查错
    windows10安装64位Orcale 19c
    触发器基本知识
    MediaElement 的两种模式
  • 原文地址:https://www.cnblogs.com/tigergaonotes/p/11316840.html
Copyright © 2011-2022 走看看