页面“Pipeline”与“Jenkins自动化构建和部署例子”之间的差异

来自linux中国网wiki
(页面间的差异)
跳到导航 跳到搜索
 
 
第1行: 第1行:
=Jenkins Pipeline 简介=
+
=站内源码 =
Jenkins pipeline 是 Jenkins 2.0 的精髓,,是帮助 Jenkins 实现 CI 到 CD 转变的重要角色。
+
[[代码发布]]
  
简单来说,就是一套运行于 Jenkins 上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。
+
=jenkins 使用Maven构建Java应用程序=
 +
[https://www.jenkins.io/zh/doc/tutorials/build-a-java-app-with-maven/  使用Maven构建Java应用程序 ]
  
Pipeline 的实现方式是一套 Groovy DSL,任何发布流程都可以表述为一段 Groovy 脚本,并且 Jenkins 支持从代码库直接读取脚本,从而实现了 Pipeline as Code 的理念。
+
=java+maven项目+tapd+jenkins+gitlab+sonarqube+docker实现自动化持续部署=
 +
[https://juejin.cn/post/6955025879688806430#heading-66 java+maven项目+tapd+jenkins+gitlab+sonarqube+docker实现自动化持续部署(超详细) ]
  
[https://www.cnblogs.com/itech/p/5633948.html  jenkins2 pipeline入门 ]
+
=download.app=
  
官方文档
+
jenkins project name  prod-tg-websi
流水线可以通过以下任一方式来创建:
 
  
    通过 Blue Ocean - 在 Blue Ocean 中设置一个流水线项目后,Blue Ocean UI 会帮你编写流水线的 Jenkinsfile 文件并提交到源代码管理系统。
+
=* conf project =
 
 
    通过经典 UI - 你可以通过经典 UI 在 Jenkins 中直接输入基本的流水线。
 
 
 
    在源码管理系统中定义 - 你可以手动编写一个 Jenkinsfile 文件,然后提交到项目的源代码管理仓库中。[3]
 
 
 
使用两种方式定义流水线的语法是相同的。尽管 Jenkins 支持在经典 UI 中直接进入流水线,但通常认为最好的实践是在 Jenkinsfile 文件中定义流水线,Jenkins 之后会直接从源代码管理系统加载。
 
 
 
=Jenkins Pipeline 支持两种语法=
 
 
<pre>
 
<pre>
 +
新建 自由风格的软件项目 -> 
 +
geneal 丢弃旧的构建
 +
源码管理 用git  http的话就直接用上你的gitlabt用户和密码
 +
构建  这里填写上你的 over SSH  服务器 一般在  系统管理--系统设置里面配置并起别名
 +
一般hostname 填写IP username    Remote Directory /    其它的看着办
  
  
My-pipeline-job01 ->流水线语法    我好像没怎么用
+
构建 要填写的
 
 
Jenkins Pipeline 支持两种语法,一种 Declarative Pipeline(声明式),一种 ScriptedPipeline(脚本式)。
 
 
 
安装pipeline相关插件  全部要显示为Success  pending是不行的
 
 
 
 
 
声明式的 Pipeline 限制用户使用严格的预选定义的结构,是一种声明
 
式的编程模型,对比脚本式的 Pipeline 学习起来更加简单;
 
 
 
脚本式的 Pipeline 限制比较少,结构和语法的限制由 Groovy 本身决定,是一种命令式的编程模型。
 
所以我们学习使用声明式的方式编写 jenkinsfile。
 
一般来说 jenkinsfile 会被放在代码库的根目录下。
 
 
 
当然也可以在 Web 页面定义。
 
  
下面是两种不同方式的 jenkinsfile 示例
+
Source files  **
 +
Remove prefix  不填写
 +
Remote directory  你远程服务器的web目录
 
</pre>
 
</pre>
==Jenkinsfile (声明式)==
 
  
 +
=* 配置权限=
 
<pre>
 
<pre>
 +
#这样还视图自动归类功能 不错不错  记住前面不要有空格
 +
Manage and Assign Roles -->  Manage Roles -->    在他有的项目组里面 Frontend_h5    添加  prod-tg-websit| -->
  
pipeline {
 
    agent any
 
    stages {
 
        stage('Build') {
 
            steps {
 
                echo 'Building..'
 
                }
 
            }
 
            stage('Test') {
 
                steps {
 
                    echo 'Testing..'
 
                }
 
            }
 
            stage('Deploy') {
 
                steps {
 
                    echo 'Deploying....'
 
                }
 
            }
 
        }
 
    }
 
  
前面我们说过,声明式的Pipeline有严格的预定义格式结构,有固定的格式,外层必须是pipeline{},
+
  Manage and Assign Roles --> Assign Roles
紧接着是 agent 就是节点node ,agent也是固定的,pipeline紧跟着进来 一定是agent 参考上面的格式  后面的any是任何节点还是其中一个节点,指定某一个节点是自己指定,通过标签自己来指定节点
 
 
 
指示 Jenkins 分配一个执行器和工作空间来执行下面的 Pipeline,
 
 
 
stages和steps是申明式Jenkinsfile必须的,stages是一个个阶段,所有的stage必须要定义在stages里,
 
 
 
stages(‘’) 括号里面是名称,这个阶段是什么名称,stages这个名称不能重复,同一个stage名称只能有一个
 
 
 
每一个stage下的 step 要定义在一个 steps 里,stages里面包含了step,具体的执行步骤都写在step里面 ,一行一个,可以写多行
 
</pre>
 
 
   
 
   
==Jenkinsfile(脚本式)==
+
Item roles -->User/group to add  填写项目名  prod-tg-website</pre>
<pre>
 
 
 
node {
 
    stage('Build') {
 
        //
 
    }
 
    stage('Test') {
 
        //
 
    }
 
    stage('Deploy') {
 
        //
 
    }
 
}
 
 
 
在脚本式 jenkinsfile 里,你可以定义一个 node 或者多个 node 块,然后在 node 块里
 
定义你的 stage,在 stage 里定义你的 step 即可
 
</pre>
 
  
=进阶advance=
+
=前端 nodejs jenkins之自动打包构建nodejs应用=
  
[https://www.jenkins.io/zh/doc/book/pipeline/getting-started/ .jenkins.io/zh/doc/book 流水线入门]
+
[https://www.cnblogs.com/vipzhou/p/7890016.html jenkins学习之自动打包构建nodejs应用 ]
  
[https://www.jenkins.io/zh/doc/book/pipeline/getting-started/ jenkins.io 流水线入门]
+
[https://www.huaweicloud.com/articles/4e4228c181b8e610999badfa00ff7e4e.html Jenkins打包NodeJS项目---入门篇]
  
[https://zhuanlan.zhihu.com/p/143552791 Jenkins 声明式流水线的语法错误检查]
+
[https://my.oschina.net/mobinchao/blog/871703 Jenkins打包NodeJS项目---入门篇]
  
[https://www.cnblogs.com/mingerlcm/p/12806076.html  Pipeline 语法生成器]
+
[https://blog.csdn.net/weixin_43931358/article/details/103013031 jenkins系列之使用yarn构建前端项目]
  
[https://www.jenkins.io/zh/doc/book/pipeline/syntax/ 流水线语法]
 
  
 +
[https://blog.51cto.com/wzlinux/2491394 docker 中运行的 jenkins 使用 npm 构建 Node.js 应用]
  
Jenkins2 下载与启动
+
[https://juejin.cn/post/6971630514742493197  jenkins+docker+gogs前端自动化部署 ]
jenkins2 插件安装
 
jenkins2 hellopipeline
 
jenkins2 pipeline介绍
 
jenkins2 javahelloworld
 
jenkins2 groovy入门
 
jenkins2 pipeline入门
 
jenkins2 pipeline高级
 
jenkins2 Jenkinsfile
 
jenkins2 multibranch
 
jenkins2 Jenkinsfile和load
 
jenkins2 groovy脚本参考
 
jenkins2 pipeline实例
 
jenkins2 pipeline插件的10个最佳实践
 
jenkins2 pipeline 语法快速参考
 
  
https://www.cnblogs.com/itech/category/245402.html?page=3
+
=后端=
 +
==php jenkins==
 +
[[Jenkins实现PHP持续集成部署]]
  
 +
[[category:ops]] [[category:devops]]
  
[https://www.cnblogs.com/itech/p/5646219.html  jenkins2 pipeline高级 ]
+
== Java springboot==
 +
[https://zhuanlan.zhihu.com/p/354677279 SpringBoot项目打包+shell脚本部署实践]
  
=pipeline for example=
+
== Java tomcat==
 
 
 
 
其实就是有点像share library
 
流水线 -->定义
 
<gallery>
 
Jul012021Z1.png
 
</gallery>
 
 
 
然后有个叫jenkinsfile
 
 
 
[https://blog.51cto.com/u_13760351/2527263  Jenkins--pipline 流水线部署Java后端项目]
 
 
 
[https://blog.51cto.com/u_13760351/2526052  本地java代码上传Gitlab仓库]
 
  
 +
和xk的一样喽
 
[https://blog.51cto.com/u_13760351/2382103  Jenkins自动部署发布Java代码(完整教程]
 
[https://blog.51cto.com/u_13760351/2382103  Jenkins自动部署发布Java代码(完整教程]
==java sprint boot ==
 
Jenkins Pipeline 部署 SpringBoot 应用
 
 
===java===
 
<pre>修改/etc/profile文件,添加JAVA_HOME
 
 
vi /etc/profile
 
在文件的最后面,加上以下代码
 
export JAVA_HOME=/java/jdk1.8.0_171
 
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 
export PATH=$JAVA_HOME/bin:$PATH
 
 
#me on  kali xps
 
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
 
export M2_HOME=/usr/local/maven3
 
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
 
</pre>
 
 
===maven ===
 
<pre>wget -c https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.tar.gz
 
tar zxf apache-maven-3.8.1-bin.tar.gz
 
mv apache-maven-3.1.1 /usr/local/maven3
 
 
vi /etc/profile然后还需要 配置环境变量。 #在适当的位置添加
 
 
export M2_HOME=/usr/local/maven3
 
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
 
 
保存退出后运行下面的命令使配置生效,或者重启服务器生效。
 
source /etc/profile
 
 
验证版本
 
mvn -v
 
 
出现maven版本即成功
 
 
阿里云源
 
 
<mirrors>
 
    <mirror>
 
      <id>alimaven</id>
 
      <name>aliyun maven</name>
 
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
 
      <mirrorOf>central</mirrorOf>       
 
    </mirror>
 
</mirrors>
 
</pre>
 
 
===安装Jenkins部署SpringBoot应用===
 
jenkins 安装过程省略
 
 
登陆之后进入Manage Jenkins -> Global Tool Configuration 中进行配置Maven,Git,JDK
 
可能不同环境有小许要修改
 
 
<gallery>Jul012021j1.png</gallery>
 
 
===新建Pipeline 项目===
 
新建Item --> 名就叫 01_Eureka  再选中pipeline 最后确定  -->
 
 
配置Git仓库:
 
http://mygitlab.com/root/01_eureka.git
 
 
<pre>
 
tree .
 
.
 
└── jenkins_files
 
    └── 01_eureka
 
 
1 directory, 1 file
 
 
#脚本式
 
cat jenkins_files/01_eureka
 
 
node {
 
  def mvnHome
 
  def workspace = pwd()
 
  def project_name = 'eureka-server-1.0.0.jar'
 
  def project_log = 'eureka-server-1.0.0.log'
 
  def project_home = 'app-centre/eureka-server'
 
  def vm_ip = 'xxx.xxx.xxx.xxx'
 
  def vm_port = '22'
 
  def vm_user = 'root'
 
  //代码获取
 
  stage('Preparation') { // for display purposes
 
  git branch: 'master',
 
  url:' https://gitee.com/didispace/didi-eureka-server.git'
 
  }
 
  //构建
 
  stage('Build') {
 
      // Run the maven build
 
      if (isUnix()) {
 
        sh "/usr/local/maven3/bin/mvn -Dmaven.test.skip=true clean package"
 
 
      } else {
 
        bat(/mvn -Dmaven.test.skip=true clean package/)
 
      }
 
  }
 
 
 
  //移动
 
  stage('MV') {
 
    sh "mv ${project_home}/target/${project_name} /usr/local/src/"
 
  }
 
 
 
  //上传到服务器
 
  stage('Upload VM') {
 
    sh "scp -P ${vm_port} /usr/local/src/${project_name} ${vm_user}@${vm_port}:/usr/local/src/bk"
 
//sh "ssh -p ${vm_port} ${vm_user}@${vm_ip} 'nohup java -jar /usr/local/src/${project_name} >> ${project_log} '"
 
  }
 
 
 
 
 
  //运行JAR包
 
  stage('Run') {
 
//sh "if (ps -ef| grep java|grep ${project_name})then (ps -ef| grep java|grep ${project_name}| awk '{print \$2}'|xargs kill -9) fi"
 
    sh "ssh -p ${vm_port} ${vm_user}@${vm_ip} 'nohup java -jar /usr/local/src/${project_name} >${project_log} 2>&1 &'"
 
  }
 
}
 
</pre>
 
 
流水线选项卡
 
定义 : pipeline script from SCM
 
SCM  repository URl http://mygitlab.com/root/01_eureka.git
 
 
Credentials 你的用户和密码
 
 
指定分支(为空时代表any) 我这里为 */main
 
 
脚本路径  jenkins_files/01_eureka
 
 
====see also springboot ====
 
[https://www.cnblogs.com/SimpleWu/p/13262966.html  Jenkins Pipeline 部署 SpringBoot 应用 ]
 
 
[https://juejin.cn/post/6844903955600769031 最优雅的Docker+Jenkins pipeline部署Spring boot项目 ]
 
=== vue ===
 
 
[https://juejin.cn/post/6844903955634323469 最优雅的Docker+Jenkins pipeline部署vue项目,前端项目都可参考 ]
 
 
=docker=
 
 
[https://www.jenkins.io/doc/book/pipeline/docker/ Using Docker with Pipeline,官方文档]
 
=是Blue Ocean=
 
https://www.jenkins.io/zh/doc/book/blueocean/
 
 
Blue Ocean 重新思考Jenkins的用户体验,从头开始设计Jenkins Pipeline, 但仍然与自由式作业兼容,Blue Ocean减少了混乱而且进一步明确了团队中每个成员 Blue Ocean 的主要特性包括:
 
 
    持续交付(CD)Pipeline的 复杂可视化 ,可以让您快速直观地理解管道状态。
 
    Pipeline 编辑器 - 引导用户通过直观的、可视化的过程来创建Pipeline,从而使Pipeline的创建变得平易近人。
 
    个性化 以适应团队中每个成员不同角色的需求。
 
    在需要干预和/或出现问题时 精确定位 。 Blue Ocean 展示 Pipeline中需要关注的地方, 简化异常处理,提高生产力
 
    本地集成分支和合并请求, 在与GitHub 和 Bitbucket中的其他人协作编码时实现最大程度的开发人员生产力。
 
 
简言之:简化复杂可视化,提供更个性直观的界面,可以精准定位构建失败的位置
 
 
[https://www.cnblogs.com/hellxz/p/pipeline_maven_build.html  Jenkins教程(四)安装BlueOcean与Maven构建 ]
 
 
=see also=
 
[https://www.cnblogs.com/mingerlcm/p/12790884.html Jenkins Pipeline介绍]
 
 
[https://www.cnblogs.com/mingerlcm/p/12727253.html jenkins从头到尾 目录]
 
 
[https://www.cnblogs.com/mingerlcm/p/12799362.html Jenkins Pipeline示例]
 
 
[https://www.cnblogs.com/mingerlcm/p/12799493.html  使用 pipeline 实现 monitor 仓库代码的发布 ]
 
 
[https://www.cnblogs.com/itech/p/12747748.html  Jenkins pipeline jenkinsfile的两种写作方式声明式和脚本式 ]
 
 
[https://objcoding.com/2019/02/16/docker-jenkins-pipeline/ 基于Jenkins Pipeline自动化部署知道个过程而已]
 
 
 
[https://www.jianshu.com/p/bcd42b4f9885 Jenkins + Pipeline 自动化部署项目]
 
 
[https://www.jianshu.com/p/daf32c908ff9 Jenkins + Pipeline 构建流水线发布]
 
 
[https://www.cnblogs.com/itech/p/12747740.html  Jenkins pipeline之声明式的jenkinsfile ]
 
[[category:ops]] [[category:devops]]
 

2021年7月1日 (四) 12:57的版本

站内源码

代码发布

jenkins 使用Maven构建Java应用程序

使用Maven构建Java应用程序

java+maven项目+tapd+jenkins+gitlab+sonarqube+docker实现自动化持续部署

java+maven项目+tapd+jenkins+gitlab+sonarqube+docker实现自动化持续部署(超详细)

download.app

jenkins project name  prod-tg-websi

* conf project

新建 自由风格的软件项目 ->   
geneal 丢弃旧的构建 
源码管理 用git   http的话就直接用上你的gitlabt用户和密码 
构建  这里填写上你的 over SSH  服务器 一般在  系统管理--系统设置里面配置并起别名 
 一般hostname 填写IP username    Remote Directory /    其它的看着办


构建 要填写的 

Source files  **
Remove prefix  不填写
Remote directory  你远程服务器的web目录

* 配置权限

#这样还视图自动归类功能 不错不错  记住前面不要有空格
Manage and Assign Roles -->  Manage Roles -->    在他有的项目组里面 Frontend_h5    添加   prod-tg-websit| -->


 Manage and Assign Roles --> Assign Roles 
 
Item roles -->User/group to add  填写项目名  prod-tg-website

前端 nodejs jenkins之自动打包构建nodejs应用

jenkins学习之自动打包构建nodejs应用

Jenkins打包NodeJS项目---入门篇

Jenkins打包NodeJS项目---入门篇

jenkins系列之使用yarn构建前端项目


docker 中运行的 jenkins 使用 npm 构建 Node.js 应用

jenkins+docker+gogs前端自动化部署

后端

php jenkins

Jenkins实现PHP持续集成部署

Java springboot

SpringBoot项目打包+shell脚本部署实践

Java tomcat

和xk的一样喽 Jenkins自动部署发布Java代码(完整教程