Jenkins前端项目部署
老样子我们画张图来了解下部署的一个大致过程:
网络异常,图片无法展示
|
从图中我们可以看出来我们需要的内容:
- 两台服务器(一台服务器也行,这样就可以不用进行 SSH 远程调用了)
- Jenkins 、Nginx 和 Node 三个工具的安装
准备好以上需要的内容,部署前端那就是 手捏把掐了
1. Nginx 安装
如果服务器上已经安装了 Nginx ,这一个步骤可以跳过
Nginx下载地址:点击下载
我们将下载好的 nginx-1.9.9.tar.gz
上传到服务器上的 /usr/local
下
执行以下命令:
# 解压 tar -zxvf nginx-1.9.9.tar.gz #进入nginx目录 cd nginx-1.9.9 # 配置 ./configure --prefix=/usr/local/nginx # 编译 make && make install
执行以上命令后,我们可以在 /usr/local/nginx
中看到以下目录结构:
网络异常,图片无法展示
|
然后我们进入 conf/nginx.conf
文件中修改下默认的监听的端口号:
网络异常,图片无法展示
|
然后输入 ./sbin/nginx
进行启动,然后我们在网页上访问http://服务器
IP:8090/
,看到以下页面说明 Nginx 启动成功:
网络异常,图片无法展示
|
2. Node 安装
然后我们需要在我们的 Jenkins 所在的服务器上也安装上 NodeJS 工具,步骤如下:
- 首先我们需要从官网中下载 Node,点击下载
网络异常,图片无法展示
|
- 下载完我们把安装包放到服务器上的
/usr/local
目录下(存放目录没有要求)
- 然后输入以下指令
# 解压 tar -xvf node-v14.15.1-linux-x64.tar.xz # 建立软连接 ln -s /usr/local/node-v14.15.1-linux-x64/bin/node /usr/local/bin/ ln -s /usr/local/node-v14.15.1-linux-x64/bin/npm /usr/local/bin/
- 测试是否安装成功
node -v npm -v
-
网络异常,图片无法展示|
3. Jenkins 配置
完成 Nginx 和 Node 的安装后,我们就可以进行下一步操作了。我们需要在 Jenkins 中安装上 NodeJS 插件:
网络异常,图片无法展示
|
然后依次点击 Manage Jenkins -> Global Tool Configuration
,进行 NodeJS 的配置
网络异常,图片无法展示
|
配置里面选择我们/usr/local/node-v14.15.1-linux-x64/
,因为我们已经自己安装了 Node,所以这个自动安装的选项可以取消勾选。
4. 前端部署
以上都是前期的准备工作,到这里我们就完成了前期工作的准备,接下来我们就可以来部署项目了!
- 首先创建一个前端流水线项目:
网络异常,图片无法展示
|
然后建立Jenkinsfile构建脚本,示例如下:
//gitlab的凭证 def git_auth = "89f2087f-a034-4d39-a9ff-1f776dd3dfa8" node { stage('拉取代码') { checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: "${git_auth}", url: 'git@192.168.66.100:cbuc_group/test_front.git']]]) } stage('打包,部署网站') { //使用NodeJS的npm进行打包 nodejs('nodejs12'){ sh ''' npm install npm run build ''' } //=====以下为远程调用进行项目部署======== sshPublisher(publishers: [sshPublisherDesc(configName: 'master_server', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/usr/local/nginx/html', remoteDirectorySDF: false, removePrefix: 'dist', sourceFiles: 'dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) } }
保存后我们点击 Build Now,等待一会就可以看到项目已经成功部署上去啦!