K8S发布系统-发布访问配置

创建视图

建议将一个项目的任务归于一个视图并添加描述。

创建任务-传统方式构建项目Docker镜像

传统Maven风格项目,固定URL及命令。

  1. 创建任务
  2. 公用设置
  3. 源码设置
  4. 构建
  5. 打包镜像
    添加post-build step:
    执行SHELL,生成Dockerfile:
    cat > Dockerfile << EOF
    FROM baseimg-jdk8:c8
    COPY target/demo-0.0.1-SNAPSHOT.jar /app/app.jar
    ENTRYPOINT ["/app/start-jar.sh"]
    EOF


    构建并上传Docker镜像:

  6. 测试执行
    Tips:我这里修改、执行了多次。


    打包机上查看:

创建任务-Pipeline构建项目Docker镜像

使用Pipeline,参数化构建Docker镜像:

  1. 创建流水线任务
  2. 公共配置
  3. Pipeline脚本
    在pipeline script中填写:
    node{
        String HarborUrl='nw-harbor.xxx.cc'
        String HarborUser='admin'
        String HarborPasswd='Nw-Harbor123'
    
      properties([
        parameters([
          string(name: 'GIT_URL', defaultValue: 'http://git.zongsheng.tech/all/demo.git', description: '填写Gitlab地址', trim: false),
          string(name: 'GIT_BRANCH', defaultValue: 'master', description: '填写Git分支地址', trim: false),
          string(name: 'Group', defaultValue: 'zongs-nw', description: '填写项目组名称,推送至此Harbor项目组', trim: false),
          string(name: 'Project_name', defaultValue: 'demo', description: '填写项目名称', trim: false),
          string(name: 'Pom_path', defaultValue: 'pom.xml', description: '填写POM文件', trim: false),
          string(name: 'Target_name', defaultValue: 'target/demo-0.0.1-SNAPSHOT.jar', description: '项目生成的jar包路径名称', trim: false),
          string(name: 'JVM_XMS', defaultValue: '256m', description: 'JAVA选项Xms', trim: false),
          string(name: 'JVM_XMX', defaultValue: '512m', description: 'JAVA选项Xmx', trim: false),
          string(name: 'TIME_ZONE', defaultValue: 'Asia/Shanghai', description: '生成项目Docker镜像的时区', trim: false)
        ])
      ])
    
        if(!Project_name){
            error "项目名为空"  
        }
    
        dir("${env.WORKSPACE}/${Project_name}"){
            stage('Git阶段'){
          echo "1. 开始拉取代码"
                git branch: params.GIT_BRANCH, credentialsId: 'nw-gitlab', url: params.GIT_URL
            }
        
            stage('Maven阶段'){
                echo "2. 开始Maven编译"
                sh "/usr/local/maven-3.6.3/bin/mvn clean install -Dmaven.test.skip=true -f ${Pom_path}"
          if(!fileExists("${Target_name}")){
            error "编译生成的目标文件${Target_name}不存在"
          }
            }
        
            stage('Docker阶段'){
                echo "3. 开始执行Docker编译、推送、删除"
          echo "--生成 Dockerfile"
          sh "echo 'FROM ${HarborUrl}/library/baseimg-jdk8:c8' > Dockerfile"
          sh "echo 'ENV JVM_XMS=${JVM_XMS} JVM_XMX=${JVM_XMX}' >> Dockerfile"
          sh "echo 'RUN ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime' >> Dockerfile"
          sh "echo 'COPY ${Target_name} /app/app.jar' >> Dockerfile"
          sh "echo 'ENTRYPOINT [\"/app/start-jar.sh\"]' >> Dockerfile"
    
                echo "--构建并推送 Docker 镜像"
          step([$class: 'DockerBuilderPublisher', dockerFileDirectory: "${env.WORKSPACE}/${Project_name}", cloud: 'docker_w1', tagsString: "${HarborUrl}/${Group}/${Project_name}:nw-${env.BUILD_NUMBER}", cleanImages: true, cleanupWithJenkinsJobDelete: false, pushCredentialsId: 'nw-harbor', pushOnSuccess: true])
            }
        }
    }

    Tips:若打包在同机上执行,可将后面改为:

    sh "docker build -t ${HarborUrl}/${Group}/${Project_name}:nw-${env.BUILD_NUMBER} ."
    sh "docker login ${HarborUrl} -u ${HarborUser} -p ${HarborPasswd}"
    sh "docker push ${HarborUrl}/${Group}/${Project_name}:nw-${env.BUILD_NUMBER}"
    sh "docker rmi ${HarborUrl}/${Group}/${Project_name}:nw-${env.BUILD_NUMBER}"

    Docker插件官方写有,但未用配置

          withDockerServer('tcp://172.16.220.143:2375'){
      def customImage = docker.build("${HarborUrl}/${Group}/${Project_name}:nw-${env.BUILD_NUMBER}")
      docker.withRegistry("${HarborUrl}", 'nw-harbor'){
        customImage.push()
      }
      customImage.clean()
    }

    Tips: Docker镜像默认为UTC时区。

  4.  测试执行
    带有properties的配置,需要先执行一次,让系统认到,之后执行即有需要提供的变量出来。

    结果:


    Tips:传统方式也可以使用“构建化参数”来达到同样的效果。

测试生成的项目镜像(可选)

docker pull nw-harbor.xxx.cc/zongs-nw/demo:nw-2
docker run --name=demo -p 8080:8080 -d nw-harbor.xxx.cc/zongs-nw/demo:nw-2
docker ps

docker exec -it demo /bin/bash

关闭运行的Docker容器并清理镜像:

docker container kill demo
docker container rm demo
docker rmi nw-harbor.xxx.cc/zongs-nw/demo:nw-2
docker images

发表评论

error: Content is protected !!