共计 4334 个字符,预计需要花费 11 分钟才能阅读完成。
筹备工作
- 先筹备一个我的项目,我这里间接应用 vue-cli 脚手架生成了一个我的项目,其余技术栈也一样,只有是个我的项目就行。
- 建设这个我的项目的远端 git 仓库,并把本地代码提交下来。我这里用的码云,github 也统一。
- 筹备一台能外网拜访的服务器,非要用你本人的电脑当服务器也能够,保障外网可拜访即可。我这里用的是阿里云 ubantu14.04,另外,阿里云老手注册有一个月的收费服务器可领,不想花钱的能够试一下。
- 服务器上配好 Java 环境。
Jenkins 的装置与启动
linux 下:ubuntu 14.04 中装置 Jenkins
windows 下:
- 从 Jenkins 官网下载最新 war 文件。
- 运行
java -jar jenkins.war
即可。
Jenkins 初始化
- jenkins 的默认端口是 8080, 启动胜利后在浏览器关上。
- 进入后会让咱们输管理员明码,关上网页上提醒门路下的文件,复制明码粘贴输出即可。
- 而后会让装置须要的插件,此处选默认即可,期待装置实现。
- 创立一个管理员账户。
- 下面都实现后会看到这个界面。
创立工作
- 点击创立一个新工作
- 抉择自在格调的软件我的项目,并起一个名字
至此,根底筹备工作曾经实现,咱们在服务器上安装了 Jenkins 并启动,而后进行了初始化配置,建设了一个新工作。接下来咱们开始配置咱们须要的性能。
实现 git 钩子性能
首先咱们要实现一个 git 钩子性能,就是咱们向 github/ 码云等近程仓库 push 咱们的代码时,jenkins 能晓得咱们提交了代码,这是主动构建主动部署的前提,钩子的实现原理是在远端仓库上配置一个 Jenkins 服务器的接口地址,当本地向远端仓库发动 push 时,远端仓库会向配置的 Jenkins 服务器的接口地址发动一个带参数的申请,jenkins 收到后开始工作。
- 关上刚创立的工作,抉择配置,增加近程仓库地址,配置登录名及明码及分支。
- 装置 Generic Webhook Trigger Plugin 插件(系统管理 - 插件治理 - 搜寻 Generic Webhook Trigger Plugin)如果可选插件列表为空,点击高级标签页,替换降级站点的 URL 为:
http://mirror.xmission.com/jenkins/updates/update-center.json
并且点击提交和立刻获取。 - 增加触发器
第 2 步装置的触发器插件性能很弱小,能够依据不同的触发参数触发不同的构建操作,比方我向近程仓库提交的是 master 分支的代码,就执行代码部署工作,我向近程仓库提交的是某个 feature 分支,就执行单元测试,单元测试通过后合并至 dev 分支。灵活性很高,能够自定义配置适宜本人公司的计划,这里不便演示咱们不做任何条件判断,只有有提交就触发。在工作配置里勾选 Generic Webhook Trigger 即可
- 仓库配置钩子 此处以码云为例,因为公司用的是码云,github 的配置基本一致,进入码云我的项目主页后,点击治理 -webhooks- 增加,会跳出一个这样的框来。
URL 格局为 `http://<User ID>:<API Token>@<Jenkins IP 地址 >: 端口 /generic-webhook-trigger/invoke` userid 和 api token 在 jenkins 的系统管理 - 治理用户 -admin- 设置里,这是我的
Jenkins IP 地址和端口是你部署 jenkins 服务器的 ip 地址,端口号没改过的话就是 8080。明码填你和下面 userid 对应的明码,我这里是 root。上面的几个选项是你在仓库执行什么操作的时候触发钩子,这里默认用 push。点击提交实现配置。
- 测试钩子
点击测试,如果配置是胜利的,你的 Jenkins 左侧栏构建执行状态里将会呈现一个工作。
另外,你也能够试下本地提交代码,提交代码后,jenkins 也会开始一个工作, 目前咱们没有配置工作开始后让它做什么,所以默认它只会在你提交新代码后,将新代码拉取到 jenkins 服务器上。到此为止,git 钩子咱们配置实现。
实现自动化构建
git push 触发钩子后,jenkins 就要开始工作了,自动化的构建工作能够有很多种,比如说装置降级依赖包,单元测试,e2e 测试,压缩动态资源,批量重命名等等,无论是 npm script 还是 webpack,gulp 之类的工作流,你之前在本地能做的,在这里同样能够做。
作为演示,这里只演示三个根本罕用的工作流程,装置依赖包 -> 单元测试 -> 打包,也就是上面这三个命令。
npm install
npm run test
npm run build
复制代码
- 首先,和本地运行 npm script 一样,咱们要想在 jenkins 外面执行 npm 命令,先要在 jenkins 外面配置 node 的环境,能够通过配置环境变量的形式引入 node,也能够通过装置插件的形式,这里应用了插件的形式,装置一下 nvm wrapper 这个插件。
- 关上刚刚的 jenkins 工作,点击配置外面的构建环境,勾选这个,并指定一个 node 版本。
- 点击构建,把要执行的命令输进去,多个命令应用 && 离开。
- 保留。
- 此时本地批改一下代码 push 测试一下(也能够点击立刻构建测试),点击本次触发的那个工作,抉择控制台输入,将会看到 Jenkins 在云端执行的过程。
命令行最初一行是 Finished 状态的如果是 SUCCESS(蓝色)则证实执行的工作都顺利进行,是 FAILURE(红色)则证实两头有重大谬误导致工作失败,UNSTABLE(黄色)代表有尽管有些小问题,但不妨碍工作进行,黄色或者红色能够去命令行看下谬误输入,看下哪里出了问题。
- 如果上一步是 SUCCESS,点击我的项目的工作空间,将会发现多了 dist 和 node_modules 两个文件夹。
至此,咱们曾经搭建了一个繁难的构建工作流程,构建实现了,咱们须要自动化部署。
实现自动化部署
自动化部署可能是咱们最须要的性能了,公司就一台服务器,咱们能够应用人工部署的形式,然而如果公司有 100 台服务器呢,人工部署就有些吃力了,而且一旦线上出了问题,回滚也很麻烦。所以这一节实现一下主动部署的性能。
- 首先,先在 Jenkins 上装一个插件 Publish Over SSH,咱们将通过这个工具实现服务器部署性能。
- 在要部署代码的服务器上创立一个文件夹用于接管 Jenkins 传过来的代码,我在服务器上建了一个 testjenkins 的文件夹。
- Jenkins 想要往服务器上部署代码必须登录服务器才能够,这里有两种登录验证形式,一种是 ssh 验证,一种是明码验证,就像你本人登录你的服务器,你能够应用 ssh 免密登录,也能够每次输明码登录,系统管理 - 零碎设置里找到 Publish over SSH 这一项。重点参数阐明:
Passphrase:明码(key 的明码,没设置就是空)Path to key:key 文件(私钥)的门路
Key:将私钥复制到这个框中(path to key 和 key 写一个即可)
SSH Servers 的配置:SSH Server Name:标识的名字(轻易你取什么)Hostname:须要连贯 ssh 的主机名或 ip 地址(倡议 ip)Username:用户名
Remote Directory:近程目录(下面第二步建的 testjenkins 文件夹的门路)高级配置:Use password authentication, or use a different key:勾选这个能够应用明码登录,不想配 ssh 的能够用这个先试试
Passphrase / Password:明码登录模式的明码
Port:端口(默认 22)Timeout (ms):超时工夫(毫秒)默认 300000
复制代码
配置实现后,点击 Test Configuration 测试一下是否能够连贯上,如果胜利会返回 success,失败会返回报错信息,依据报错信息改过即可。
- 接下来进入咱们创立的工作,点击构建,减少 2 行代码,意思是将 dist 外面的货色打包成一个文件,因为咱们要传输。
cd dist&&
tar -zcvf dist.tar.gz *
复制代码
- 点击构建后操作,减少构建后操作步骤,抉择 send build artificial over SSH,参数阐明:
Name: 抉择一个你配好的 ssh 服务器
Source files:写你要传输的文件门路
Remove prefix:要去掉的前缀,不写近程服务器的目录构造将和 Source files 写的统一
Remote directory:写你要部署在近程服务器的那个目录地址下,不写就是 SSH Servers 配置里默认近程目录
Exec command:传输完了要执行的命令,我这里执行理解压缩和解压缩实现后删除压缩包 2 个命令
复制代码
- 当初当咱们在本地将
Welcome to Your Vue.js App
批改为Jenkins
后收回一个 git push,过一会就会发现咱们的服务器上曾经部署好了最新的代码,是不是很 6。
至此,咱们的自动化部署也实现了,然而如果过程中有异样怎么办,或是咱们想晓得每次 Jenkins 运行的日志及运行后果,咱们能够通过配置邮件服务来让 Jenkins 每次实现工作后告诉相干人员。
实现邮件揭示
这里咱们不必 E -mail Notification,因为它的邮件服务性能太少,无奈自定义邮件内容及自定义触发钩子,而且只能在异常情况下能力发邮件。咱们应用 Editable Email Notification 这个。
- 关上系统管理 - 系统配置 -Extended E-mail Notification,不是系统管理 - 系统配置 - 邮件告诉,千万不要配错了,否则不起作用。配置一下用来发邮件的邮箱,我这里用的是我本人的 qq 邮箱。
要是用别的厂家的邮箱服务就查下别的邮箱厂家 smtp 怎么配,用 qq 邮箱的除了 user Name 和 password 其余的和我写一样就行。另外 password 写的不是 qq 邮箱的明码,而是开启 smtp 服务后发短信获取的明码。
- 关上创立的那个工作,减少构建后操作步骤抉择 Editable Email Notification,Project Recipient List 那里写你要发给谁邮件,能够多个,用分号隔开。
而后点击 Advanced Settings-Triggers-Add Trigger,抉择 always,意思是无论什么状况工作执行完就发邮件,也能够抉择其余模式,如工作执行异样了才发邮件。
我这里配置的接管邮件的地址也是我的 qq 邮箱,这个能够依据本人公司的工作流程配。
- 当初当咱们在本地批改代码后收回一个 git push,Jenkins 主动构建部署实现后就会给我发一封邮件,邮件附件里会有本次工作的日志。
至此,咱们的邮件揭示性能也配置完了。
转自:https://juejin.im/post/6844903591417757710