热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pythonpipeline转jenkins_Jenkins:创建第一个Pipeline

流水线视图可以很直观地看到每一步执行的时间和进度,方便追踪部署过程中的每一个环节。搭建jenkins参考上一篇文章工作流本文目的是搭建一个简单的pipeline

bVbm4ca?w=815&h=218

流水线视图可以很直观地看到每一步执行的时间和进度,方便追踪部署过程中的每一个环节。

搭建 jenkins 参考 上一篇文章

工作流

本文目的是搭建一个简单的 pipeline,当 git 仓库有提交时,builder server 进行构建和测试,完成之后 deploy server 进行部署。

本地 -> SCM: 提交代码

SCM -> Build Server: 触发 jenkins 任务

Build Server: 启动 pipeline

Build Server -> Deploy Server: 部署服务

SCM Source Code Management,如 github

Build Server jenkins 所在机器,负责构建

Deploy Server 线上服务所在机器

新建 Task

首先创建一个 Task,然后选择流水线模板

bVbm4l1?w=256&h=145

bVbm4l5?w=1919&h=920

配置

Pipeline

bVbm4uN?w=1440&h=431

在这里可以配置 pipeline 的脚本,definition 可以选择 Pipeline script 或 Pipeline script from SCM。

选择前者后,jenkins 脚本需要在下方填写,当任务启动后,jenkins 会执行这里配好的命令;选择后者后,任务启动后,jenkins 会去执行 SCM 仓库下配置的 script path 下的脚本。

一句话说,两者区别在于脚本是写在 jenkins 配置里,还是写在你的代码仓库里。所以修改脚本的时候在 jenkins 里配就行,方便调试,没问题之后使用 SCM 管理更好。

编写 pipeline script

以 node 服务举例,部署过程分为四步:

Build: 在 build server 上 npm install

Test: 在 build server 上进行测试

Deploy: 在 deploy server 上部署

这个脚本如下,需要将 [user] 和 [ip] 替换成 deploy server 的登录用户和 ip:

pipeline {

agent any

stages {

stage('Build') {

steps {

sh "npm install"

}

}

stage('Test') {

steps {

sh "npm test"

}

}

stage('Deploy') {

steps {

sh """

ssh -o stricthostkeychecking=no [user]@[ip] "

source /etc/profile

cd /root/projects/my-api-server

git pull

npm install

pm2 reload wool-digger-api

"

"""

}

}

}

}

当然这是一个很粗糙的构建方式,可以稍后查看 使用 docker 进行改造。

主要概念有

agent 指示 Jenkins 分配一个执行器和工作空间来执行下面的Pipeline

stage 表示这个 Pipeline 的一个执行阶段,对应流水线中各个环节

steps 表示在这个 stage 中每一个步骤

sh 命令用来执行一条 shell 语句。 这个配置文件被执行后:

首先 jenkins 会在工作区(一般来说在 ~/.jenkins/workspace/)下拉取配置仓库指定分支的代码

pull 成功后进行 npm install(Build)

build 成功之后进行 npm test(Test)

test 成功后远程执行一段脚本,即登录 deploy server 并 cd 到服务目录,然后进行服务的更新重启操作。

npm/pm2 not found 的问题

注意上面 Deploy 中有一行 source /etc/profile,这是 login shell 和 no-login shell 的不同。

如果使用 ssh 登录再执行命令和脚本,用户会获得 login shell,shell 首先会加载 /etc/profile 文件,然后依次尝试 ~/.bash_profile、~/.bash_login 和 ~/.profile。

而如果直接使用 ssh 远程执行命令和脚本,如上面的 ssh -o,它不会去执行 /etc/profile 文件,而会去用户的 HOME 目录检查 .bashrc 并加载。所以在 /etc/profile 中设置的 path 不会生效。如果 nvm 在此文件中,那么 node、npm、pm2 等等就找不到了。

解决方法可以在 shell 脚本中先手动加载配置文件。

Build Triggers

bVbm4pg?w=1472&h=363

在这里可以配置 pipeline 触发的类型

Github hook trigger fro GITScm polling

启动该项后可以通过 GitHub 的 webhook 来触发,参考 Github Plugin 文档

这里说一下最简单的配置,即手动配置。

在 Jenkins -> 系统管理 -> 系统设置中,可以找到 Git 配置,点击右边的问号按钮,可以看到默认的 jenkins hook 地址。

bVbm5VD?w=404&h=423

bVbm5Wx?w=1556&h=230

一般来说默认都是 $JENKINS_BASE_URL/github-webhook/。拿到这个地址后,添加到 github 的 webhook 中。

bVbm5WL?w=1043&h=357

注意 这个地址是没有项目信息的,因为 github 调用这个 hook 地址时,会把仓库信息传过去,所以就只剩在 jenkins 中把 pipeline 和这个 git 仓库关联起来。这需要在 pipeline 中选择 Pipeline script from SCM 并填写 git 地址。

轮询 SCM

启动该项后,jenkins 将定时对 SCM 仓库进行轮询,当仓库有新提交时,会自动触发 pipeline。

Schedule 填写规则与 crond 类似,如 H/5 * * * * 代表每 5 分钟查询一次。详细规则可以点击右边的问号。

启动

点击 立即构建,或去仓库提交一个 commit(如果配置了 github hook),或提交一个 commit 并等待(如果配置了轮询 SCM),然后就能看到我们的第一个 pipeline 启动了!



推荐阅读
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
  • 安装oracle软件1创建用户组、用户和目录bjdb节点下:[rootnode1]#groupadd-g200oinstall[rootnode1]#groupad ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文总结了使用不同方式生成 Dataframe 的方法,包括通过CSV文件、Excel文件、python dictionary、List of tuples和List of dictionary。同时介绍了一些注意事项,如使用绝对路径引入文件和安装xlrd包来读取Excel文件。 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • 其实之前也有下载过完整的android源码,但是从来没有对这个做过一些总结,在加上最近需要经常去看,索性就在从新下载,编译一下,其实这些东西官网上面都有。http:sou ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
author-avatar
mobiledu2502899157
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有