筹备工作

  1. 先筹备一个我的项目,我这里间接应用vue-cli脚手架生成了一个我的项目,其余技术栈也一样,只有是个我的项目就行。

  1. 建设这个我的项目的远端git仓库,并把本地代码提交下来。我这里用的码云,github也统一。
  2. 筹备一台能外网拜访的服务器,非要用你本人的电脑当服务器也能够,保障外网可拜访即可。我这里用的是阿里云ubantu14.04,另外,阿里云老手注册有一个月的收费服务器可领,不想花钱的能够试一下。
  3. 服务器上配好Java环境。

Jenkins的装置与启动

linux下:ubuntu 14.04中装置Jenkins
windows下:

  1. 从Jenkins官网下载最新war文件。
  2. 运行java -jar jenkins.war即可。

Jenkins初始化

  1. jenkins的默认端口是8080,启动胜利后在浏览器关上。
  2. 进入后会让咱们输管理员明码,关上网页上提醒门路下的文件,复制明码粘贴输出即可。
  3. 而后会让装置须要的插件,此处选默认即可,期待装置实现。
  4. 创立一个管理员账户。
  5. 下面都实现后会看到这个界面。

创立工作

  1. 点击创立一个新工作

  1. 抉择自在格调的软件我的项目,并起一个名字

至此,根底筹备工作曾经实现,咱们在服务器上安装了Jenkins并启动,而后进行了初始化配置,建设了一个新工作。接下来咱们开始配置咱们须要的性能。

实现git钩子性能

首先咱们要实现一个git钩子性能,就是咱们向github/码云等近程仓库push咱们的代码时,jenkins能晓得咱们提交了代码,这是主动构建主动部署的前提,钩子的实现原理是在远端仓库上配置一个Jenkins服务器的接口地址,当本地向远端仓库发动push时,远端仓库会向配置的Jenkins服务器的接口地址发动一个带参数的申请,jenkins收到后开始工作。

  1. 关上刚创立的工作,抉择配置,增加近程仓库地址,配置登录名及明码及分支。

  1. 装置Generic Webhook Trigger Plugin插件(系统管理-插件治理-搜寻Generic Webhook Trigger Plugin)如果可选插件列表为空,点击高级标签页,替换降级站点的URL为:http://mirror.xmission.com/jenkins/updates/update-center.json并且点击提交和立刻获取。
  2. 增加触发器
    第2步装置的触发器插件性能很弱小,能够依据不同的触发参数触发不同的构建操作,比方我向近程仓库提交的是master分支的代码,就执行代码部署工作,我向近程仓库提交的是某个feature分支,就执行单元测试,单元测试通过后合并至dev分支。灵活性很高,能够自定义配置适宜本人公司的计划,这里不便演示咱们不做任何条件判断,只有有提交就触发。在工作配置里勾选Generic Webhook Trigger即可

  1. 仓库配置钩子 此处以码云为例,因为公司用的是码云,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。点击提交实现配置。
  1. 测试钩子

点击测试,如果配置是胜利的,你的Jenkins左侧栏构建执行状态里将会呈现一个工作。

另外,你也能够试下本地提交代码,提交代码后,jenkins也会开始一个工作,目前咱们没有配置工作开始后让它做什么,所以默认它只会在你提交新代码后,将新代码拉取到jenkins服务器上。到此为止,git钩子咱们配置实现。

实现自动化构建

git push触发钩子后,jenkins就要开始工作了,自动化的构建工作能够有很多种,比如说装置降级依赖包,单元测试,e2e测试,压缩动态资源,批量重命名等等,无论是npm script还是webpack,gulp之类的工作流,你之前在本地能做的,在这里同样能够做。
作为演示,这里只演示三个根本罕用的工作流程,装置依赖包->单元测试->打包,也就是上面这三个命令。

npm installnpm run testnpm run build复制代码
  1. 首先,和本地运行npm script一样,咱们要想在jenkins外面执行npm命令,先要在jenkins外面配置node的环境,能够通过配置环境变量的形式引入node,也能够通过装置插件的形式,这里应用了插件的形式,装置一下nvm wrapper这个插件。
  2. 关上刚刚的jenkins工作,点击配置外面的构建环境,勾选这个,并指定一个node版本。

  1. 点击构建,把要执行的命令输进去,多个命令应用&&离开。

  1. 保留。
  2. 此时本地批改一下代码push测试一下(也能够点击立刻构建测试),点击本次触发的那个工作,抉择控制台输入,将会看到Jenkins在云端执行的过程。

命令行最初一行是Finished状态的如果是SUCCESS(蓝色)则证实执行的工作都顺利进行,是FAILURE(红色)则证实两头有重大谬误导致工作失败,UNSTABLE(黄色)代表有尽管有些小问题,但不妨碍工作进行,黄色或者红色能够去命令行看下谬误输入,看下哪里出了问题。

  1. 如果上一步是SUCCESS,点击我的项目的工作空间,将会发现多了dist和node_modules两个文件夹。

至此,咱们曾经搭建了一个繁难的构建工作流程,构建实现了,咱们须要自动化部署。

实现自动化部署

自动化部署可能是咱们最须要的性能了,公司就一台服务器,咱们能够应用人工部署的形式,然而如果公司有100台服务器呢,人工部署就有些吃力了,而且一旦线上出了问题,回滚也很麻烦。所以这一节实现一下主动部署的性能。

  1. 首先,先在Jenkins上装一个插件Publish Over SSH,咱们将通过这个工具实现服务器部署性能。
  2. 在要部署代码的服务器上创立一个文件夹用于接管Jenkins传过来的代码,我在服务器上建了一个testjenkins的文件夹。
  3. 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,失败会返回报错信息,依据报错信息改过即可。

  1. 接下来进入咱们创立的工作,点击构建,减少2行代码,意思是将dist外面的货色打包成一个文件,因为咱们要传输。
cd dist&&tar -zcvf dist.tar.gz *复制代码

  1. 点击构建后操作,减少构建后操作步骤,抉择send build artificial over SSH, 参数阐明:
Name:抉择一个你配好的ssh服务器Source files :写你要传输的文件门路Remove prefix :要去掉的前缀,不写近程服务器的目录构造将和Source files写的统一Remote directory :写你要部署在近程服务器的那个目录地址下,不写就是SSH Servers配置里默认近程目录Exec command :传输完了要执行的命令,我这里执行理解压缩和解压缩实现后删除压缩包2个命令复制代码

  1. 当初当咱们在本地将Welcome to Your Vue.js App批改为Jenkins后收回一个git push,过一会就会发现咱们的服务器上曾经部署好了最新的代码,是不是很6。

至此,咱们的自动化部署也实现了,然而如果过程中有异样怎么办,或是咱们想晓得每次Jenkins运行的日志及运行后果,咱们能够通过配置邮件服务来让Jenkins每次实现工作后告诉相干人员。

实现邮件揭示

这里咱们不必E-mail Notification,因为它的邮件服务性能太少,无奈自定义邮件内容及自定义触发钩子,而且只能在异常情况下能力发邮件。咱们应用Editable Email Notification这个。

  1. 关上系统管理-系统配置-Extended E-mail Notification,不是系统管理-系统配置-邮件告诉,千万不要配错了,否则不起作用。配置一下用来发邮件的邮箱,我这里用的是我本人的qq邮箱。

要是用别的厂家的邮箱服务就查下别的邮箱厂家smtp怎么配,用qq邮箱的除了user Name和password其余的和我写一样就行。另外password写的不是qq邮箱的明码,而是开启smtp服务后发短信获取的明码。
  1. 关上创立的那个工作,减少构建后操作步骤抉择Editable Email Notification,Project Recipient List那里写你要发给谁邮件,能够多个,用分号隔开。

而后点击Advanced Settings-Triggers-Add Trigger,抉择always,意思是无论什么状况工作执行完就发邮件,也能够抉择其余模式,如工作执行异样了才发邮件。

我这里配置的接管邮件的地址也是我的qq邮箱,这个能够依据本人公司的工作流程配。

  1. 当初当咱们在本地批改代码后收回一个git push,Jenkins主动构建部署实现后就会给我发一封邮件,邮件附件里会有本次工作的日志。

至此,咱们的邮件揭示性能也配置完了。

转自:https://juejin.im/post/6844903591417757710