热门标签 | 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 启动了!



推荐阅读
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 了解如何快速搭建属于自己的个人博客,无需编程基础,适合Mac和Windows用户。通过本文,您将学会使用GitHub Pages和Hexo构建一个完全自主的在线空间。 ... [详细]
  • 如何使用Ionic3框架创建首个混合开发应用
    混合开发是指结合原生(Native)与网页(Web)技术进行移动应用开发的方法。本文将详细介绍如何利用Ionic3这一流行的混合开发框架,从环境搭建到创建并运行首个应用的全过程。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 解决Appium Doctor在Python自动化测试中的SyntaxError问题
    本文详细介绍了如何解决在使用Appium Doctor进行环境检查时遇到的SyntaxError: Unexpected token ...问题,并提供了完整的解决方案和最佳实践。 ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • Vue 项目构建与部署指南
    本文将指导您完成Vue项目的构建和部署过程,包括环境搭建、项目初始化及配置、以及最终的部署步骤。 ... [详细]
  • 本文详细探讨了Xshell6评估版到期后无法使用的常见问题,并提供了有效的解决方案,包括如何合法购买授权以继续使用。 ... [详细]
  • 本文档介绍了在使用GitLab进行数据仓库项目开发时,如何管理和维护代码版本,包括非标准gitflow工作流下的分支结构及其权限设置,以及git commit message的规范。 ... [详细]
  • Jenkins 安装指南:Windows 平台详解
    本文详细介绍了如何在Windows平台上安装和配置Jenkins,包括安装步骤、启动方法及基本的系统配置,旨在帮助初次使用者顺利搭建持续集成环境。 ... [详细]
  • 持续集成概述与实践指南
    本文探讨了持续集成(CI)的基本概念、目的及其在现代软件开发中的应用。通过实例分析,帮助读者理解如何有效实施持续集成,提高软件开发效率。 ... [详细]
  • SonarQube自动化代码扫描的安装与集成实践
    SonarQube是一款强大的开源代码质量管理平台,支持多种编程语言。通过集成不同的开发工具和CI/CD流程,SonarQube能够提供全面的静态代码分析服务,帮助开发者早期发现并修复代码缺陷,从而提高软件质量和安全性。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 本文介绍了多种常用的开发工具,包括PyCharm、Appium、Jenkins、Postman、Fiddler、Charles、Airtest、Android Studio、Navicat和Typora,并提供了它们的基本使用方法。 ... [详细]
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社区 版权所有