Jenkins 集成部署vue项目

本文首发于个人博客,您可以移步至我的博客以获得更好的体验:)

什么是Jenkins

Jenkins是一款持续继承软件,它可以通过GitHub WebHook触发构建行为,从远程拉取代码,自动部署至nginx,只需要一个git push。

[图片上传失败...(image-8e3ceb-1592803018624)]

之前在部署项目时,我是通过本地build,然后使用winscp丢到远程服务器上,这样做十分不方便。有了Jenkins之后,只需要一次配置,只需要一次git push,远程服务器就可以自动拉取代码,并执行构建脚本。

让我们开始吧!

配置阶段一共有两个方面需要配置,一个是GitHub,一个是Jenkins,这里我的服务器环境是linux的centOS。其他环境基本上也差不多。

Jenkins配置

Jenkins可以通过Docker或者下载war包来进行,由于其是通过java开发的,所以服务器上需要配置JRE(java运行时环境)或者JDK(java开发环境),需要java8以上。

准备工作(Java环境搭建)

Java环境的搭建我使用了yum进行安装,yum是linux上的软件仓库,和AppStore一样可以快速安装软件,它会根据地理位置找到最快的镜像服务器下载安装包,速度十分快。

首先要做的是查看yum源中是否有相关套件yum -y list java*

[图片上传失败...(image-f6949a-1592803018624)]

选择 java-1.8.0-openjdk-devel.x86_64 安装:

yum -y install java-1.8.0-openjdk-devel.x86_64

3.修改/etc/profile并且执行source /etc/profile

vim /etc/profile
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export JRE_HOME
export PATH
export CLASSPATH

[图片上传失败...(image-afc707-1592803018625)]

保存之后执行

source /etc/profile

在控制台查看环境:

$ java -version
> openjdk version "1.8.0_252"
> OpenJDK Runtime Environment (build 1.8.0_252-b09)
> OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)

这样Java的环境就搭建好了。

安装Jenkins

安装Jenkins有许多的方式,可以通过docker安装,也可以通过war包安装,这里我使用的是通过war包安装。

首先要做的是下载Jenkins

[图片上传失败...(image-aacd09-1592803018625)]

这里我选择了下载到本地然后通过winscp上传。

[图片上传失败...(image-52ece6-1592803018625)]

上传好之后,找到war包所在的目录,执行:

java -jar jenkins.war --httpPort=8080

上面的执行方式会在控制台打印输出,在shell关闭后退出Jenkins无法持久化。可以在首次配置时使用。

这可能需要一段时间,有可能会卡住一会。。。

ps.后台启动Jenkins:

nohup java -jar jenkins.war --httpPort=8080 

等到输出下面的内容之后,复制一下这个密码,之后会用到。

[图片上传失败...(image-917a8e-1592803018625)]

通过浏览器打开Jenkins服务,在浏览器中输入以下地址:

http://<你的服务器IP地址>:8080/

会跳转到这个界面:
[图片上传失败...(image-484a8b-1592803018625)]

输入刚才复制的密码。并进行创建一个管理员用户。

在这里填入你的你进入Jenkins的URL,需要课启动时填写一样,像下面那样填写会造成反向代理错误,别问我是怎么知道的。

[图片上传失败...(image-a72e74-1592803018625)]

之后选择推荐安装,会安装一些基础服务例如git读取器等等。

[图片上传失败...(image-2b785-1592803018625)]

这个过程会等待好一段时间,我等了大概有半个小时左右,可以先去做下面的GitHub配置

[图片上传失败...(image-7d4ab9-1592803018625)]

GitHub配置

生成secret key

点击右上角菜单中的setting->developer settings->Personal access tokens

勾选这些选项,然后生成一个<personal access token>复制这个token,在页面关闭后无法再次查看。

[图片上传失败...(image-a39021-1592803018625)]

进入Jenkins系统配置

[图片上传失败...(image-cbf9d8-1592803018625)]

之后勾选为GitHub生成一个<hook url>,并添加一个GitHub凭据:

[图片上传失败...(image-1acd5e-1592803018625)]

在下面填入上面的personal access token:

[图片上传失败...(image-64512d-1592803018625)]

点击测试链接,成功后会提示一段消息。

*可选:配置node环境,添加nodejs插件,以让Jenkins可以执行node命令例如npm installpm2 start等.
进入系统管理->插件管理->可选插件,在input中输入node
[图片上传失败...(image-f61ecf-1592803018625)]
选择直接安装。
进入全局工具配置->新增NodeJS
[图片上传失败...(image-985b6a-1592803018625)]
点击确定。

添加一个项目:

进入Jenkins添加一个自由风格项目:

在下面输入项目URL

[图片上传失败...(image-af953d-1592803018625)]

[图片上传失败...(image-d0d5d3-1592803018625)]

源码管理

输入仓库地址,并添加GitHub账号密码:

[图片上传失败...(image-9dae2d-1592803018625)]

[图片上传失败...(image-30855a-1592803018625)]

构建触发器

勾选GitHub hook(后面需要在GitHub仓库设置中配置)

[图片上传失败...(image-18305d-1592803018625)]

之后再次添加之前配置过的<github access token>
[图片上传失败...(image-e2eb15-1592803018625)]

构建环境

构建脚本(我的项目中包含start.sh 其中写了 sudo npm inpm run build

[图片上传失败...(image-4933c7-1592803018625)]

至此Jenkins的配置已经完成了,可以先手动构建一次看看是否成功:

[图片上传失败...(image-37f827-1592803018625)]
点击立即构建,会在下面出现一个构建进度,完成之后是一个蓝色小球,点进去可以查看构建控制台输出:

Started by user 
...
 
 > git config remote.origin.url https://github.com/kagurakana/me-kagurakana.git # timeout=10
Fetching upstream changes from https://github.com/kagurakana/me-kagurakana.git
...
Commit message: "fix: style"
First time build. Skipping changelog.
[kagura_kana] $ /bin/sh -xe /tmp/jenkins3162662805171132447.sh
+ echo 'hello world'
hello world
+ bash start.sh

> esbuild@0.5.6 postinstall /root/.jenkins/workspace/kagura_kana/node_modules/esbuild
> node install.js

+ esbuild-linux-64@0.5.6
added 1 package in 5.56s
...
added 8 packages from 4 contributors and audited 331 packages in 12.028s

> vite build

vite v1.0.0-beta.1
- Building for production...

[write] dist/_assets/index.0793941e.js 49.07kb, brotli: 17.54kb
[write] dist/_assets/style.061d74bc.css 2.98kb, brotli: 0.77kb
[write] dist/index.html 0.90kb, brotli: 0.27kb
Build completed in 4.50s.

Finished: SUCCESS

看到最后SUCCESS就说明Jenkins这边配置OK

之后我们要做的就是设置GitHub,在每次push之后通知Jenkins服务器自动构建

git仓库配置

push认证(防止CROS)

首先要做的是在Jenkins上生成一个<API_TOKEN>

进入Jenkins->用户列表->用户->生成 token

复制这个TOKEN

[图片上传失败...(image-31024e-1592803018625)]

进入GitHub仓库设置,添加webHooks:

  • payloadURL为:
http://<USERID>:<API_TOKEN>@<IP_Address>:8080/github-webhook/

[图片上传失败...(image-588b94-1592803018625)]

注意:userID和用户名不是同一个东西,userID是唯一的,而用户名可能不是,配置错误可能会导致404错误:
[图片上传失败...(image-723b00-1592803018625)]

而API_TOKEN配置错误可能会导致403错误

[图片上传失败...(image-24a482-1592803018625)]
这些错误信息可以在GitHub仓库设置的webhook中查看。

结果

<black> 这是学校的一个实习作业,要写一个个人页面 </black>
[图片上传失败...(image-8d498f-1592803018625)]

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345