title: Sentry和Jenkins的使用
date: 2019-11-20 22:18:00
password: 123321
abstract: 抱歉,文章暂不开放
message: 请输入密码:
categories:
- 工具
tags: - Sentry
- Jenkins
- 内部分享
Sentry
需要异常捕获、追踪,跟踪整个处理过程,统计分析并可视化展示异常相关数据。
堆栈跟踪、堆栈本地信息、前面的事件、可能导致问题的提交以及在错误发生时捕获的定制数据
Sentry分为服务平台
和客户端
两个部分,这是针对于sentry整个处理流程来说。客户端产生异常并上报异常,服务平台负责处理存储、分类、处理、分析、跟踪、展示。
Sentry
的服务端分为web
、cron
、worker
这几个部分,应用(客户端)发生错误后将错误信息上报给web
,web
处理后放入消息队列
或Redis内存队列
,worker
从队列中取出数据进行处理
客户端
{
"@sentry/browser": "^5.7.1",
"@sentry/integrations": "^5.7.1",
}
服务平台可以使用官方,也可以使用私有化部署,客户端也就是SDK,对于前端项目就是安装npm插件包
使用
接入
新建一个项目,根据根据项目类型选择
在代码里面安装:
如果是Vue,可以在main.js里面添加,
import Vue from 'vue'
import * as Sentry from '@sentry/browser';
import * as Integrations from '@sentry/integrations';
Sentry.init({
dsn: 'http://59aec82d2ad74418846d17e3a85bf081:4f1faacb1ca54ba98b11c8225ac9865b@101.37.148.124:9000/13',
integrations: [new Integrations.Vue({Vue, attachProps: true})],
});
或者用CDN的方式引入:
<!-- Note that we now also provide a es6 build only -->
<!-- <script src="https://browser.sentry-cdn.com/5.5.0/bundle.es6.min.js" crossorigin="anonymous"></script> -->
<script src="https://browser.sentry-cdn.com/5.5.0/bundle.min.js" crossorigin="anonymous"></script>
<!-- If you include the integration it will be available under Sentry.Integrations.Vue -->
<script src="https://browser.sentry-cdn.com/5.5.0/vue.min.js" crossorigin="anonymous"></script>
<script>
Sentry.init({
dsn: 'http://59aec82d2ad74418846d17e3a85bf081:4f1faacb1ca54ba98b11c8225ac9865b@101.37.148.124:9000/13',
integrations: [new Sentry.Integrations.Vue({Vue, attachProps: true})],
});
</script>
其中,DSN
的获取:
进入项目的设置页面,找到图中所示的DSN
,替换掉上面代码块里的就可以了。
界面介绍:
基本SDK配置
SourceMap添加
安装Sentry
对应的命令行管理工具sentry-cli
:
cnpm i -g @sentry/cli
生成token
选择账户下的API Keys
,选择生成一个新的Token
勾选上响应的权限
命令行登录:
sentry-cli --url http://101.37.148.124:9000/ login
输入Token
即可
输入sentry-cli releases -o 组织名 -p 项目名 new staging@1.0.1
,为项目打上Release
这里的 staging@1.0.1
就是我们指定的版本号. -o -p
可以通过页面左上角可以看到。现在我们可以通过创建多个版本号来进行异常分类。同时,也可以通过页面中Releases
查看是否创建成功。
Issue关联GitLab
Jenkins
Jenkins通过和其他CI(Continuous Integration)
持续集成工具一样的Pipeline
管道的概念,通过将一个任务线看做一个管道,管道分为了很多个步骤,每个步骤是单独的一个小任务,可以通过Jenkins自带的或者安装的插件来执行每一步,每个小步骤,相互配合,相互嵌套,由Jenkins
统一管理调配,共同完成完整的一条流水线。
比如我们通常的项目开发完成后,上线部署可以看做是一条流水线,一个Pipeline
,连接服务器,进入目录,备份旧版本,上传新版本,这些都可以看做一个小任务,在Jenkins里可以当做一个一个的Step
执行。
在公司直接使用已配置的Jenkins
配置好之后的界面
- 项目列表选择一个要构建的项目
- 选择参数构建
- 选择对应参数
构建
查看构建过程,如果配置,构建完成会有钉钉通知
项目未配置Jenkins
如果是新项目,需要告诉运维:
- 没有Jenkins账号,先向运维申请账号。
- 项目属于哪个开发组(便于分配权限)
- 需要部署到的服务器是哪个(需要做免密登录,传输代码)
- 需要部署到哪个目录
- 代码仓库地址
.git
、需要做Jenkins
的仓库分支 - 项目
build
需要执行的命令((c)npm install
、npm run build
) - 项目
build
需要安装的环境(Node.js
是否有版本要求、npm
版本要求等,特殊情况) - 执行结果推送方式(钉钉机器人、email)
自动化构建流程
整个构建过程,如何执行的?
公司项目编译构建过程是通过Jenkins手动触发构建
,每次项目上线,想要进行构建,需要:
- 登录
Jenkins
,进入到相关项目下面,配置构建参数,手动触发构建 - 此时,根据配置的分支参数,直接使用
git
去拉取远程仓库中对应分支的最新代码 - 拉取到本地中之后,进入项目文件目录,执行安装依赖,
build
源码文件 - 进入旧版本目录,复制一份,压缩一下,做个备份,将备份放到指定目录,删除旧版本。
- 将上面
build
好的文件移动到相关目录中(Nginx映射的Web目录或者其他),使用新版本替换旧版本。 - 整个流程执行完成,通过
WebHook
推送到钉钉,钉钉推送执行结果。
自己配置一个Jenkins构建
Jenkins的安装没有什么难度,官网或者网上都有教程,一步一步来,出错排错就可以。
以Hexo配合Jenkins部署为例
需求:Hexo
写的,需要达到的效果:每次写好的md文件,推送到git
仓库(码云),Jenkins自动拉取代码,自动编译成html
,替换旧版本,获取钉钉通知。
属于git push
自动触发,协作项目中,如果区分了正式分支
和开发分支
,可以设置当开发分支合并到正式分支的时候触发。
gitee配置
安装插件
在Jenkins
中选择Manage Jenkins -> Manage Plugins -> Available
,搜索框直接搜索Gitee
添加码云链接配置
- 前往
Jenkins -> Manage Jenkins -> Configure System -> Gitee Configuration -> Gitee connections
- 在
Connection name
中输入Gitee
或者你想要的名字 - Gitee host URL 中输入码云完整 URL地址:
https://gitee.com
(码云私有化客户输入部署的域名)
Credentials
中如还未配置码云APIV5
私人令牌,点击Add - > Jenkins
Domain
选择Global credentials
Kind
选择Gitee API Token
Scope
选择你需要的范围Gitee API Token
输入你的码云私人令牌,获取地址:https://gitee.com/profile/personal_access_tokensID
,Descripiton
中输入你想要的ID
和描述即可。Credentials
选择配置好的Gitee APIV5 Token
- 点击
Advanced
,可配置是否忽略 SSL 错误(适您的Jenkins环境是否支持)
,并可设置链接测超时时间(适您的网络环境而定)
- 点击
Test Connection
测试链接是否成功,如失败请检查以上 3,5,6 步骤。
项目配置
- 创建一个Jenkins流水线,有几种形式可供选择
Freestyle project
:自由形式项目,任何不属于下面的项目都可以选择这个,自定义程度较高
Pipeline
:管道
Multi-configuration project
:多种配置
Folder
:文件夹
GitHub Organization
:
Multibranch Pipeline
:
这些形式没有本质区别,都是流水线性质,只是根据不同形式的项目会有不同的推荐的常用步骤。
日常的项目build
可以选择第一种,Freestyle project
自由形式的项目。
这种流水线有6个推荐的Step
:
General
:通用(该条流水线的描述、远程仓库的连接、关于构建和仓库的基础配置)Source Code Management
:源代码管理(从哪里拉取代码,哪个分支,也支持SVN
)Build Triggers
:构建触发器(什么情况下会触发构建过程开始启动)Build Environment
:构建环境(build
之前要准备哪些,密钥传输、清空jenkins工作空间,一般情况下没有特殊需求可以不用管)Build
:构建(主要的构建过程,通过配置一些待执行shell命令,达到移动文件,执行构建的目的。命令直接写shell,平时在ssh工具终端中怎么写,就怎么写)Post-build Actions
:构建后操作(构建成功,执行哪些操作,消息推送、给远程仓库打标签等等后续操作)
- 选择已经配置好的Gitee账户链接,配置之后可以访问账户之下的所有仓库
- 选择要拉取代码的仓库地址,分支
- 配置触发器(什么情况下开启构建流程)
- 配置构建环境,没有特殊要求可以不管
- 配置整个构建过程执行的
shell脚本
,注意如果一个程序分两段shell
,需要使用export BUILD_ID=DONTKILLME
留活,不然Jenkins会在一段脚本之后杀死程序,如图,我需要scp在传输文件之后接着执行第二段脚本,那就需要在第一段的后面加上这条命令,告诉Jenkins,不要杀死我。
- 构建过程执行完之后要做的操作,配合不同的插件,可以执行不同的后续操作。
添加钉钉机器人通知
群助手选择添加一个自定义机器人
填写安全设置可以使用自定义关键词
,定义的关键词必须在推送的时候包含该关键词。也可以使用IP地址
,将Jenkins服务器IP加进去,或者使用签名推送。
更多功能,更多插件
Sonar
集成,安装SonarQube Scanner for Jenkins
,Jenkins
只是一个构建流程控制工具
,具体怎么玩,看具体需求。