首页 > 其他分享 >pipeline编译(jenkinsfile)

pipeline编译(jenkinsfile)

时间:2023-09-22 21:12:06浏览次数:40  
标签:脚本 pipeline stages 编译 steps jenkinsfile Hello stage

1.pipeline概念
   Pipeline是Jenkins中最为灵活的job构建方式,可实现像流水线一样调度Jenkins任务,
   通过Jenkinsfile描述整个持续集成流程

2.pipeline编写风格:声明式风格、脚本式风格
   声明式:格式有强规范性(优势:可读性强。缺点:不灵活、代码冗长)
   脚本式:使用groovy语言编写,灵活性高,可读性差。优点:实现自定义逻辑更方便、可对功能代码段封装为方法(函数)或类
   声明式Pipeline结构:
   pipline: 固定语法,代表整条流水线
   agent:流水线执行位置,执行机位置
   stages:流水线中多个stage容器,stages部分至少包含一个stage
   stage:一个pipeline可以从逻辑上划分若干stage,每个 Stage 代表一组操作,如:Build、Test、Deploy
   steps:阶段中一个或多个具体步骤的容器,steps至少包含一个步骤
   echo: 写一个简单的字符串到控制台输出
   其他:
   Post:构建后操作
   Environment:定义pipeline或stage运行时环境变量,无参数
   脚本式Pipeline结构:  //脚本化pipeline 顶层是node{};支持stage;可以直接使用groovy语言进行编码
   node:节点,master或agent,执行step具体运行环境
   stage:阶段,一个pipeline可分为若干stage,每个stage代表一组操作
   例子:
node {
stage('Build'){
//
}
stage('Test'){
//
}
stage('Deploy'){
//
}
}
   node:节点,master或agent,执行step具体运行环境
   stage:阶段,一个pipeline可分为若干stage,每个stage代表一组操作

3.pipeline声明式与脚本式区别
   (1)pipeline代码校验差异:声明式 Pipeline 会在执行前就会校验 Pipeline 语法是否正确,而脚本式不会
   (2)重启stage差异:某个stage执行失败,修复后声明式pipeline可以执行跳过该stage重新执行,而脚本式重新来过
   (3)option指令差异:声明式options和pipeline代码逻辑分开,而脚本式嵌套在一起 多个options需要设置 代码可读性差
   (4)语法逻辑差异:声明式支持stages、steps,脚本式只支持stage
   (5)声明式官方推荐写法,语法简单。脚本式灵活,适合大量特定要求、逻辑负责任务

4.声明式pipeline例子
   (1)输出一个hello world
pipeline {
agent any
stages {
stage('Hello') {
steps {
echo 'Hello World'
}
}
// 这里的hello2 是我加的,就是说明,这是stages下的第二个任务 ,就是在pipeline中加单行注释 用 // 就行
stage('Hello2') {
steps {
echo 'Hello World'
}
}
}
}

   (2)指定节点、拉取代码并执行shell命令
pipeline {
//agent any
agent {
node {
label "gitee"
//customWorkspace "Workspace"
}
}
stages {
stage('拉取前端代码') {
steps {
git credentialsId: 'cbc969cf-709a-459e-8fed-3dad7d20caaa', url: 'https://gitee.com/Github-liwei/yshop_admin_web.git'
}
}
stage('拉取后端代码') {
steps {
git credentialsId: 'cbc969cf-709a-459e-8fed-3dad7d20caaa', url: 'https://gitee.com/Github-liwei/yshop.git'
echo 'Hello World'
sh "ls -trl && pwd "
}
}
}

5.脚本式pipeline例子
node {
   stage('Hello') {
      for(int i=0;i<3;i++){
            println i
            println 'Hello World!'
      }
    }
}

 

标签:脚本,pipeline,stages,编译,steps,jenkinsfile,Hello,stage
From: https://www.cnblogs.com/huchao12/p/17723298.html

相关文章

  • gcc 使用 与 选项 编译动态库
    问题:-Wl,-rpath,/path/to/shared/lib将-rpath选项传递给链接器,告诉链接器在运行时搜索共享库时要搜索指定的路径/path/to/shared/lib与使用-L指定lib路径有区别吗 是的,-Wl,-rpath和-L选项在链接器中有不同的作用和用途:-L选项:用于指定在链接过程中搜索库文件的路径。......
  • 解决lombok编译报错
    解决lombok编译报错idea编译报错java:JPSincrementalannotationprocessingisdisabled.Compilationresultsonpartialrecompilationmaybeinaccurate.Usebuildprocess“jps.track.ap.dependencies”VMflagtoenable/disableincrementalannotationprocessing......
  • 编译 OpenCV 的 Python 依赖
    这一次编译OpenCV的Python依赖为了方便运行我们使用Docker进行编译,环境准备如下:系统依赖:Ubuntu18.04Python版本:3.6,Ubuntu18.04官方源安装的默认版本OpenCV版本:3.4.16,是目前3.x的最新版CMake版本:3.10GCC版本(含C++):7.5我们首先拉取并进入镜像:dock......
  • 在不用插件和断网的情况下怎么实现编译python?
    要在不使用插件和断网的情况下编译Python代码,您通常不需要进行编译,因为Python是一种解释型语言,它将代码逐行执行而不需要显式编译过程。然而,如果您希望将Python代码打包成一个独立的可执行文件以便于分发,您可以使用一些第三方工具,如PyInstaller、cx_Freeze或Py2exe,但这些工具在没有......
  • pipelines file
    1.自定义实现文件存储:(1).spidertest/pipelines.py:importcodecsimportjsonclassJsonPipeline(object):#自定义json文件的导出def__init__(self):#打开json文件self.file=codecs.open('test.json','w',encoding="utf-8")d......
  • Cygwin 编译的动态库文件.dll.a
    前提Cygwin编译OpenSSL出来的有两种文件:libcrypto.a和libcrypto.dll.a,VS编译调用没有问题,运行卡住,暂时未解决测试代码#include<openssl/evp.h>intmain(intargc,char*argv[]){ EVP_MD_CTX*mdctx; mdctx=EVP_MD_CTX_new(); EVP_MD_CTX_init(mdctx); EVP_DigestInit(m......
  • zabbix 源码编译安装找不到mysql_config
    1.准备LNMP环境,2.下载并解压zabbix包:下载地址:https://sourceforge.net/p/zabbix/activity/?page=0&limit=100#5e836904f0d3473e24304e3d解压  tar-zxvfzabbix-4.0.33.tar.gz3.安装依赖:yuminstalllibxml2-develnet-snmp-devellibevent-develcurl-develpcre*4../configure......
  • uni-app 条件编译
    一、在某个平台编译 #ifdef 1.单个平台<!--#ifdef H5--> <!--#endif-->2.多个平台<!--#ifdefH5||APP-PLUS--><!--#endif-->3. js 中//#ifdefH5//#endif4. style 中/*#ifdefH5*//*#endif*/二、除了某平台均存在 #ifndef<!--#ifn......
  • typescript_typescript的下载与手动编译
    下载npminstall-gtypescript编译.ts文件为.js文件tsc./typescript/test1.ts上面这个命令会在test1.ts的所属目录中创建一个同名的test1.js文件......
  • nuitka 打包编译python3 脚本
    pipinstallordered-set#加速编译pipinstallnuitkapipinstallzstandard#onefile时压缩文件#打包命令python-mnuitka--mingw64--standalone--output-dir=out--show-progress--onefile--windows-disable-console--windows-icon-from-ico=1.ico--output-di......