美文网首页开发辅助技术
jenkins使用pipeline构建CMDB项目

jenkins使用pipeline构建CMDB项目

作者: Oooyzx | 来源:发表于2019-11-19 21:41 被阅读0次

    环境:依旧是基于原始的docker构建cmdb联合项目以及jenkins实现CICD操作,可参考前篇文章:docker-compose构建cmdb联合容器项目jenkins配置docker联合项目的CICD


    注意:该项目是使用jenkins基于Maven构建cmdb项目,需要用到jenkins、pipeline、gitlab、Maven构建、docker等知识

    项目大致思路:jenkins通过配置gitlab绑定cmdb项目,当项目更新时,从宿主机push推送到gitlab上,jenkins再将gitlab上的代码部署到自己的工作目录WORKSPACE下,再通过流水线任务pipeline脚本依次执行自定义各阶段任务,实现对cmdb项目的cicd操作等等。

    项目正文:
    在原始项目根目录下添加一个pom.xml文件,文件内容见文章末尾附件

    pom.xml image.png

    构建一个流水线工程

    image.png

    执行流水线命令

    image.png

    Pipeline Script

    方法一:通过自带的流水线语法实现
    image.png
    image.png
    方法二:自定义书写脚本内容

    pipeline详情请参考官方文档:pipeline语法: https://jenkins.io/doc/book/pipeline/syntax/

    1. pipeline { }:
    所有有效的声明性管道都必须包含在一个pipeline块中,例如:

    pipeline {
        /* insert Declarative Pipeline here */
    }
    

    2. agent:
    为了支持管道作者可能拥有的各种用例,本agent节支持几种不同类型的参数。这些参数可以应用于pipeline块的顶级,也可以应用于每个stage指令中。

    • any: 在任何可用代理上执行管道或阶段。例如:agent any
    • none:pipeline块的顶层应用时,不会为整个管道运行分配全局代理,并且每个stage部分都需要包含自己的agent部分。例如:agent none

    3.stages:阶段
    该部分包含一个或多个stage指令的序列,stages是管道描述的大部分“工作”所在的位置。对于连续交付过程的每个离散部分,建议stages至少包含一个stage指令,例如Build,Test和Deploy。

    image.png

    4.steps:
    steps节定义了 要在给定指令中执行的一系列一个或多个步骤stage

    注意:该steps部分必须包含一个或多个步骤。

    image.png

    该配置的 pipeline脚本内容如下:

    pipeline {
        agent none 
        stages {
            stage('Example Build') {
                agent {
                    docker {
                    image 'maven:3-alpine' 
                    args '-v /root/.m2:/root/.m2' 
            }
                } 
                steps {
                    git credentialsId: '4d661370-6eab-4ff4-b1f3-e8845ae1ccd5', url: 'git@auto-cmdb_gitlab_1:root/cicd-cmdb.git'
                    echo 'Hello, Maven'
                    sh 'mvn -B -DskipTests clean package'
                    sh 'mvn --version'
                }
            }
            stage('Example deploy') {
                agent { docker 'py3.7-onbuild' } 
                steps {
                    sh 'echo "${WORKSPACE}" '
                    sh 'tar -cvzf  test.tar  ${WORKSPACE}/*'
                    sh 'ls ${WORKSPACE}'
                    sh 'python3 --version'
                }
            }
        }
    }
    

    构建流水线项目

    保存配置文件后,可直接构建,也可通过Blue Ocean构建,以便观察具体的构建状态
    注意:Blue Ocean需要在jenkins插件管理中安装相应插件,

    image.png 打开Blue Ocean.png

    点击具体任务,可观察pipeline构建的每一步具体内容

    构建步骤.png 构建详情

    PS:该项目也可采用Pipeline script from SCM方式部署,详情请见下一篇文章

    image.png

    附件:

    pom.xml文件,文件内容如下:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.mycompany.app</groupId>
      <artifactId>my-app</artifactId>
      <packaging>jar</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>my-app</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.0.2</version>
            <configuration>
              <archive>
                <manifest>
                  <addClasspath>true</addClasspath>
                  <classpathPrefix>lib/</classpathPrefix>
                  <mainClass>com.mycompany.app.App</mainClass>
                </manifest>
              </archive>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </project>
    

    相关文章

      网友评论

        本文标题:jenkins使用pipeline构建CMDB项目

        本文链接:https://www.haomeiwen.com/subject/qgnwictx.html