jenkins自动化部署项目

1. 前言

个人网站开发过程中,每次开发一个功能,或者做一些修改,都要把项目重新进行打包,压缩,然后上传到服务器…总之很麻烦。之前了解过公司的自动化部署是通过jenkins实现的,但是具体怎么个流程,不是很清楚,没有亲自部署过。所以,找了个周末,了解了一下jenkins,并将自己的个人网站实现了自动化部署,中间多少有点坎坷🤭,在此记录一下。

2. 介绍Jenkins

首先,Jenkins是一个基于Java开发的一种持续集成的、开源的自动化服务器,可以用于自动化与构建、测试、交付或部署软件相关的各种任务。然后。。。我们可以看一下官网,相当详细。
一说到Jenkins,大家可能会想到CI/CD;
CI(Continuous Integration 指的是持续集成,即项目代码的新更改会定期构建、测试并合并到代码仓库中,有效解决一次开发多个项目分支导致代码冲突问题。
CD(Continuous Delivery/Continuous Deployment) 指的是持续持续交付/持续部署,即项目代码的新更改可以自动或手动合并到主分支,并在合并至主分支后自动执行构建、测试流程,检测新更改是否对主分支代码产生影响。
最后简单总结一下,本来我们需要写代码->打包->部署,使用jenkins过后,我们就只需要写代码了,写完代码git push,项目就自动打包部署到服务器上了。非常nice

3. 安装Jenkins

安装Jenkins的前提是先安装Java环境,安装java 后才能运行Jenkins。

之后我们进入jenkins下载,下载对应版本的Jenkins。我本地是macos,通过brew命令安装Jenkins,并启动
在这里插入图片描述
启动后浏览器打开 http://localhost:8080,如下
在这里插入图片描述
稍等一下,出现如下窗口,按提示找到对应的密码,输入
在这里插入图片描述
然后点击继续,直接安装了系统推荐的插件
在这里插入图片描述

安装完成后,注册用户,继续,并设置jenkins url,这里默认端口8080,然后登录,进入Jenkins
在这里插入图片描述

4. 安装并配置插件

Jenkins安装完毕了,然后我们该怎么做呢

首先我们要知道我们自动化部署需要哪些东西配合?

  1. 我们的代码是托管到github/gitlab上的,我们需要路径去拉项目
  2. 我们拉了项目进行构建之后,是不是要把构建之后的东西放服务器上面去,这就需要服务器的账号密码了。
  3. 同时我的项目是一个vue项目,需要node环境

这些事情都是一些jenkins的插件来帮我们完成的。
如下,进入插件安装模块
在这里插入图片描述

安装NodeJS
在可选插件里搜索NodeJ, 选择后点击下面的Install without restart 安装
在这里插入图片描述
安装完成后,配置NodeJS,点击进入
在这里插入图片描述
进行配置
在这里插入图片描述
安装 Publish Over SSH

Publish Over SSH 是 Jenkins 的一个插件,可以使用 SSH 的方式远程连接服务器,并进行文件的传输和命令执行。

我们需要通过Publish Over SSH把我们打包好的文件都部署到服务器上去,也是去到刚才下载NodeJs的地方去下载,下载完毕后,回到主页面
在这里插入图片描述
进入配置,拉到最底部,点击新增SSH Servers
在这里插入图片描述
点击Test Configuration 按钮,测试连接,如果success 则成功
在这里插入图片描述
安装配置Git
这个插件,在一开始安装默认插件的时候已经被安装,可以直接进行配置了
进入
在这里插入图片描述
如下配置后保存
在这里插入图片描述

安装GitHub API插件
同样这个插件,在一开始安装默认插件的时候已经被安装,可以直接进行配置
在这里插入图片描述
在这里插入图片描述
找到GitHub,添加GitHub服务器
在这里插入图片描述

这里主要是需要一个凭据,你会发现没有这个凭据,所以需要点击添加,选择jenkins,出现下面弹窗,这里类型我们选择secret text
在这里插入图片描述
接下来我们就需要打开我们的github,然后点击右上角头像——>settings——>左侧菜单Developer settings——>左侧菜单Personal access tokens,创建一个新的token凭据
在这里插入图片描述
如下,填写并勾选,最后点击创建
在这里插入图片描述
创建成功
在这里插入图片描述
复制过去,点击添加
在这里插入图片描述
选择添加后,连接测试,出现如下,即连接成功
在这里插入图片描述

5. 创建任务

做好如上的准备,我们就可以创建项目啦,我们来到主页面,点击新建Item
然后输入名称,选择Freestyle project,点击确定
在这里插入图片描述
随后进入这个项目的配置
在这里插入图片描述
如果仓库是私有仓库,要配置Credentials,因为我这里公共仓库,所以不再多说,大家可以参考Credentials配置或者自行百度了~
在这里插入图片描述
然后我们来到构建触发器、构建环境等,按照图中进行勾选和选择
在这里插入图片描述
触发器和环境设置好了,就点击增加构建步骤,如下,因为我的主机是windows, 选择了Execute Windows batch command
linux环境可以使用Execute shell
在这里插入图片描述
输入命令
在这里插入图片描述
最后一步,我们点击 增加构建后操作步骤,选择 Send build artifacts over SSH,使用 SSH 的方式将代码上传至服务器。
在这里插入图片描述
最后点击保存,我们的配置就完成了。
点击构建
在这里插入图片描述
构建完成后,我们可以看一下控制台输出,如果成功,会出现成功的对号,下面失败了!!!
在这里插入图片描述

6. 报错解决

上面报错信息中,发现已经拉取到了github上的代码,但是没有执行npm install 和npm run build命令, 报错
Cannot run program “cmd”( in directory xxxxx) ,what ??? 不能执行cmd, 百度一番
最后,把项目配置,构建触发器,这项取消勾选
在这里插入图片描述
然后重新构建。。。
挖槽!!报错
ERESOLVE unable to resolve dependency tree
继续,参考了这篇文章

把npm版本切换到 6.14.15

npm install npm@6.14.15 -g

同时降低了一下node版本
在这里插入图片描述
重构,如下,算是成功了一大半了吧
在这里插入图片描述
Exception when publishing, exception message [Exec exit status not zero. Status [1]

发布时状态异常,看了一下发布后的操作,因为之前按网上配置的,但是我这里并不需要重启nginx,所以把下面删掉之后,重新构建
在这里插入图片描述
可算成功了
在这里插入图片描述

7. git push 自动重构

在立即构建之后,完成了一次构建,但是离我们只需要push代码就能触发构建还差一点,如果你现在去写一段代码,然后push的话,没有任何反应。 这时候我们就需要webhook来帮助我们啦。

首先,webhook可以理解为一个回调函数,我们在push、commit啥的时候(可以选择)就会去触发这个回调函数,我们可以在这个回调函数里面做一些事情,就比如说触发我们的构建流程。 现在我们就要去配置一个这样的回调函数。
首先我们来到github->刚刚的项目仓库->Settings 选择webhooks
在这里插入图片描述
然后点击Add webhook
在这里插入图片描述
新增之后
在本地修改项目,然后git push, 这时,发现jenkins已经触发了重构,且重构成功,打开项目线上地址,发现已经成功更新
在这里插入图片描述

8. 邮件通知

自动化部署后,可以做一下邮件通知,发送邮件到固定邮箱,反馈一下重构信息
首先,安装插件:Email Extension和Email Extension Template
进入Manage Jenkins -> System Configuration -> Configure System 配置系统管理员e-mail地址
在这里插入图片描述
配置Extended E-mail Notification

在这里插入图片描述

在这里插入图片描述
设置触发方式,设置always
在这里插入图片描述

SMTP PORT 端口参考
在这里插入图片描述
然后进行 邮件通知设置
在这里插入图片描述
测试,成功,并且邮箱收到邮件
在这里插入图片描述
在这里插入图片描述
接下来
在项目配置中选择增加构建后操作步骤
在这里插入图片描述
配置
在这里插入图片描述

在这里插入图片描述
Jenkins可以根据你配置的邮件模板格式来发送结果邮件,通过Jenkins的参数定制自己的Email模板,常用的参数key值如下:

  • $BUILD_STATUS :构建结果
  • $PROJECT_NAME :构建脚本名称
  • $BUILD_NUMBER :构建脚本编号
  • $JOB_DESCRIPTION :构建项目描述
  • $CAUSE :脚本启动原因
  • $BUILD_URL :脚本构建详情URL地址

Default Subject

Jenkins构建提醒:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!

Default Content

<hr/>(自动化构建邮件,无需回复!)<br/><hr/>

项目名称:$PROJECT_NAME<br/><br/>

项目描述:$JOB_DESCRIPTION<br/><br/>

运行编号:$BUILD_NUMBER<br/><br/>

运行结果:$BUILD_STATUS<br/><br/>

触发原因:${CAUSE}<br/><br/>

构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/><br/>

构建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/><br/>

<hr/>

重构成功,邮件发送成功
在这里插入图片描述

9. 总结

第一次构建的时候,可能会不太顺利,多多少少可能都有些报错。别着急,看看报错信息,一步步解决,慢慢来,就ok了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值