jenkins实现持续集成

  • 搭建jenkins环境,安装插件
  • 建立pipeline公用类库,文件夹vars,默认的
  • 添加.groovy文件,可以由以下几个类库组成
    • dockerImageBuild 负责构建项目镜像
    • dockerImageDeploy 负责将镜像推到仓库
    • dockerServiceStart 负责启动docker服务
    • gitCheckout 负责迁出项目源码
    • servicePipeline 程序入口
  • 根据项目添加对应的.jenkinsfile文件
  • jenkins里建立文件夹,选择公用类库的仓库,起个名字
  • 在文件夹里建立新的Job,然后选择对象的jenkinsfile文件
  • 项目构建完成

相关源代码分享

  1. gitCheckout源代码
def call(body) {
def config = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = config
body() echo 'Checking out code from "' + config.repoUrl + '" with credentialsId "' + \
config.credentialsId + '" ...' checkout([$class: 'GitSCM', branches: [[name: config.branches]],
doGenerateSubmoduleConfigurations: false,
extensions: [],
submoduleCfg: [],
userRemoteConfigs: [[credentialsId: config.credentialsId, url: config.repoUrl]]])
}
  1. servicePipeline.groovy源码
def call(body) {
def config = [:]
body.resolveStrategy = Closure.DELEGATE_FIRST
body.delegate = config
body() pipeline {
agent { label 'build-server' } stages {
stage('Initialization') {
steps {
script {
echo "项目初始化"
}
}
}
stage('CI') {
steps{
script{
gitCheckout{
repoUrl = config.repoUrl
credentialsId = config.credentialsId
branches = config.branches
commit = config.commit
}
}
}
}
stage('Service') {
echo "启动dockder服务"
}
}
}
}
  1. lind.jenkinsfile项目部署源码
@Library("lind-library") _

servicePipeline ( {
repoUrl = "git@github.com:bfyxzls/LindDotNetCore.git"
credentialsId = "012f0d4e-47e2-48ce-8b9e-cd399e9b3d61"
branches = "dev"
})

事实上,上面的构建只是一个基础版本,当你的构建有多种语言组成时,你需要为他们分别写一个入口,如dotnet,nodejs,java,php,它们有自己的入口,然后再servicePipeline里去分别处理,前开发人员输入语言类型,然后统一进行处理。

Jenkins-pipeline的实现步骤的更多相关文章

  1. 在容器中运行 Jenkins pipeline 任务

    持续集成中的 pipeline 技术和 docker 都是当前正在发展的主流方向,当然把它们结合起来在 CI/CD 过程中发挥出更强大的威力也是大家共同的目标.本文将介绍如何在 Jenkins pip ...

  2. 基于Jenkins Pipeline的ASP.NET Core持续集成实践

    最近在公司实践持续集成,使用到了Jenkins的Pipeline来提高团队基于ASP.NET Core API服务的集成与部署效率,因此这里总结一下. 一.关于持续集成与Jenkins Pipelin ...

  3. Jenkins pipeline:pipeline 使用之语法详解

    一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中 ...

  4. Jenkins pipeline:pipeline 语法详解

    jenkins  pipeline 总体介绍 pipeline 是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化. ...

  5. Jenkins 配置邮件通知步骤

    Jenkins 配置邮件通知前言 可以在Jenkins 中配置邮件通知,比如在构建失败时发送邮件通知项目组来及时修复问题. Jenkins 邮件通知功能的插件主要包括: Mailer Plugin ( ...

  6. Jenkins pipeline shared library

    Jenkinsfile https://jenkins.io/doc/book/pipeline/jenkinsfile/ Jenkins Pipeline is a suite of plugins ...

  7. Jenkins pipeline概念理解

      1.Jenkins Pipeline总体介绍 Pipeline,简而言之,就是一台运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程 ...

  8. Jenkins pipeline 语法详解

    原文地址http://www.cnblogs.com/fengjian2016/p/8227532.html pipeline 是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节 ...

  9. 转~Jenkins pipeline:pipeline 使用之语法详解

    一.引言 Jenkins 2.0的到来,pipline进入了视野,jenkins2.0的核心特性. 也是最适合持续交付的feature. 简单的来说,就是把Jenkins1.0版本中,Project中 ...

  10. [转] Jenkins Pipeline插件十大最佳实践

    [From] http://blog.didispace.com/jenkins-pipeline-top-10-action/ Jenkins Pipeline 插件对于 Jenkins 用户来说可 ...

随机推荐

  1. uwsgi_read_timeout超时处理

    最近发现一服务器一个奇怪的现象: Django的视图函数在浏览器一个请求的情况下,竟然做了两个请求的函数处理.不可思议,找了几天也不知道为什么, 只发现只要用uwsgi_read_timeout之后, ...

  2. Libre Office冻结操作-MAC

    冻结行/列 选中所要冻结的行/列,选择window-Freeze 冻结成功 冻结单元格 操作方法与“冻结行/列”一致

  3. linux 添加本地yum源

    1.查看自己是否安装了 yum rpm -qa|grep yum 查看yum配置文件 2.创建一个文件夹 用于挂载光盘 这里创建到/media下 取名叫cdrom mkdir /media/cdrom ...

  4. QT中的线程与事件循环理解(1)

    1.需要使用多线程管理的例子 一个进程可以有一个或更多线程同时运行.线程可以看做是“轻量级进程”,进程完全由操作系统管理,线程即可以由操作系统管理,也可以由应用程序管理.Qt 使用QThread 来管 ...

  5. 如果datanode连接不上namenode,导致datanode无法启动。

    如果datanode连接不上namenode,导致datanode无法启动. 问题:  ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: j ...

  6. hdu 5051 找规律?+大trick

    http://acm.hdu.edu.cn/showproblem.php?pid=5051 打表找规律 据说是http://zh.wikipedia.org/wiki/%E6%9C%AC%E7%A6 ...

  7. Scala_对象

    对象 单例对象 Scala并没有提供Java那样的静态方法或静态字段,但是,可以采用 object关键字实现单例对象,具备和Java静态方法同样的功能. 可以看出,单例对象的定义和类的定义很相似,明显 ...

  8. SRM484

    又Orz了一发rng_58.. 250pt: 题意:给定一种兔子数:当S(x*x) = S(x)*S(x)时,x为兔子数,其中S(x)表示各个数位之和. 思路:本来想了一个复杂度很高的想法..然后想看 ...

  9. php开发工具,zendstudio13使用方法补丁

    官网原版下载http://downloads.zend.com/studio ... win32.win32.x86.exe 破解补丁:链接:http://pan.baidu.com/s/1gdi4U ...

  10. JS学习笔记1_基础与常识

    1.六种数据类型 5种基础的:Undefined,Null,Boolean,Number,String(其中Undefined派生自Null) 1种复杂的:Object(本质是一组无序键值对) 2.字 ...