热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jsjava自动部署_Jenkins实现前端自动打包,自动部署代码

Jenkins实现前端自动打包,自动部署代码1、Jenkins介绍Jenkins是一款开源自动化服务器,旨在自动化连续集成和交付软件所涉及的重复技术任务。Jenkin

Jenkins 实现前端自动打包,自动部署代码

1、Jenkins介绍

Jenkins是一款开源自动化服务器,旨在自动化连续集成和交付软件所涉及的重复技术任务。Jenkins是基于Java的,可以从Ubuntu软件包安装,也可以通过下载和运行其Web应用程序ARchive(WAR)文件进行安装–构成一个完整的Web应用程序的集合,该文件旨在在服务器上运行

2、开始安装(我的是Ubuntu18.04服务器)

2.1 安装Java SDK

1 apt-get update2

3 sudo apt-get install -y openjdk-8-jdk4

5 apt-get clean all

测试是否安装成功

1、使用javac命令,不会出现command not found错误

2、使用java -version,出现版本为java version “1.8……”,具体看自己安装的版本号

3、echo $PATH,看看自己刚刚设置的的环境变量配置是否都正确

2.2 安装jenkins

登陆ubuntu服务器

将存储库密钥添加到系统,执行如下代码

wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -

添加密钥后,系统将返回ok,然后将Debian包存储库地址附加到服务器的sources.list,执行如下代码

echo deb http://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list

前面俩个完成后,运行update,以便apt-get将使用新的库存储

sudo apt-get update

最后安装Jenkins及其依赖

sudo apt-get install -y jenkins

以上都完成后我们启动jenkins

service jenkins start

systemctl start jenkins 或者service jenkins start

由于systemctl不显示输出,我们将其使用status命令验证是否启动成功

sudo systemctl status jenkins

启动成功后如下图

20200713042148-5f0be15c557b7.png

然后我们打开浏览器访问http://你的服务器ip:8080/,打开后如下图

20200713042148-5f0be15cdb8b2.png

在终端我们使用cat命令显示密码,执行代码

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

我们将从终端复制32个字符的字母数字密码,并将其粘贴到“管理员密码”字段中,然后单击“继续”。 下一个屏幕提供安装建议的插件或选择特定插件的选项

20200713042149-5f0be15d9edb2.png

点击安装推荐的插件,开始安装

20200713042150-5f0be15e628b8.png

安装完成后创建管理员用户

20200713042151-5f0be15f1b37e.png

创建完成用户后,确认实例配置

20200713042151-5f0be15faab4d.png

点击开始使用Jenkins

20200713042152-5f0be16067dae.png

20200713042153-5f0be161042f4.png

Ok,Jenkins安装成功,默认端口为8080,如果端口占用,需要修改一下

1、检查 /etc/init.d/jenkins 脚本,修改 do_start 函数的 check_tcp_port 命令,端口号从 8080 换成 8082(自己定义):

2、修改 /etc/default/jenkins 文件,将端口 8080 改成 8082(自己定义)

3、重启jenkins

sudo systemctl restart jenkins

三、Jenkins实现自动化部署

实现目标是: 我们本地写好项目,发起git提交到github或者gitlaib,剩下的单元测试,打包构建,代码部署邮件提醒等

3.1、准备

首先我们随便准备一个项目,在git仓库新建一个项目,然后把本地项目提交上去

3.2 在jenkins中绑定github

我们现在要实现这么一个功能,当我们本地项目往github或者gitlab远程仓库push我们代码的时候,jenkins就能知道我们提交了代码,基本原理是我们在远程仓库上需要配置一个jenkins服务的接口地址,当本地向远程仓库发起push时候,远程仓库会向配置Jenkins服务器的接口地址发起一个带参数的请求,当jenkins收到后开始工作。

配置步骤如下:

Github配置

1、在github上获取token的值,需要一个对项目写权限的账户

2、实现自动构建,Jenkins需要获得远程代码仓库github的读取权

点击右上角的 Github –> setting –> Developer settting –> Personal access tokens -> 点击Generate new token 填写如下所示的内容

20200713042153-5f0be161c28cb.png

创建成功会生成一个token的值如下

20200713042154-5f0be16289564.png

保存好这个token,后边需要用到

3、Github webhooks配置

进入Github上指定的项目 –> setting -> WebHooks –> add webhook, 如下图所示:

20200713042155-5f0be1634825d.png

完成后点击add webhooks按钮,即可创建完成

20200713042155-5f0be163f25ac.png

Jenkins的github配置

4、安装github Plugin

点击 Manage Jenkins -> Manage Plugins -> 可选插件, 如下图所示:

20200713042156-5f0be1649eb5a.png

点击下面的 “直接安装” 按钮, Jenkins会自动帮我们解决插件的依赖。如下图所示:

20200713042157-5f0be1655854c.png

5、配置github Plugin

Manage Jenkins -> Configure System -> Github -> 点击添加Github服务器, 如下图所示:

20200713042158-5f0be16604707.png

我们之前在github上生成的token,在如上配置选择类型为Sercret text,在secret粘贴之前的token,ID随便写,可以不填,最后点击按钮回到主页,在凭据中选择我们刚才创建的凭据,然后点击连接测试,如果成功如下图,没有成功需要返回上述步骤重新配置。点击保存,基础配置就完成了。

6、Jenkins中创建任务

6.1、点击创建一个新任务,如下图:

20200713042158-5f0be166a95fb.png

输入一个任务名称,比如叫testJenkins,然后选择第一个即可

20200713042159-5f0be167548b8.png

点击确定按钮进入下一步

20200713042159-5f0be167f1cb6.png

点击确定按钮进入下一步

20200713042200-5f0be168aec64.png

如上选择github,填写项目的URL,即我们github上的项目地址

6.2、源码配置管理配置

打开刚刚我们创建的任务,切换到 “源码管理” tab项,然后在左侧选择 Git,然后我们把我们的github项目中的仓库地址,添加配置登录名和密码(点击添加会弹出一个框,我们默认操作就行),及分支。如下图所示:

20200713042201-5f0be169547d3.png

6.3、构建触发器

2hwwoy5wuiz1564.png

6.4、构建环境

zmg30ji5v321565.png

其它暂时不用配置,回到列表页,看到基本效果如下图所示,现在我们将本地代码在push一遍

ti1hsp1pmkz1566.png

如上我们可看到,我们每次代码push的时候,Jenkins会自动帮我们构建一次,会有几秒的延迟

我们可以在控制台看输出信息

gjmmf4tgqrh1567.png

我们可以看到我们的testKenkins的项目中有github上的项目中的所有文件,如下图

qu0dfinjss41568.png

以上只是简单的使用github的push命令,在Jenkins构建我们的代码,但我们希望的是,我们把项目推到github,Jenkins自动帮助我们打包,就行webpack那样,调用npm run build打包到dist文件夹,然后把dist的推到服务器上。下面我们就来实现自动化构建

6.5、自动化构建

为了能在Jenkins自动打包构建,首先我们需要安装依赖包,使用命令nom istall,最后使用npm run build构建文件

我们想要在Jenkins执行npm命令,首先需要在Jenkins里边配置node环境,安装插件

6.5.1、安装nodeJs Plugin

在插件管理界面搜索NodeJS,找到后安装,重启,如下图

i4dvontpibh1569.png

6.5.2安装NodeJs

Manage Jenkins -> Global Tool Configuration -> NodeJs(点击新增NodeJS按钮) 如下图所示:

jwiypvsroaj1570.png

点击保存按钮即可。

6.5.3在构建坏境配置下安装nodeJs

构建环境勾选 Provide Node & npm bin/folder to PATH,如下图所示:

0w4zk2unkif1571.png

每次build,都会先执行构建坏境。

6.5.4 构建

我们现在可以把我们的打包命令放到构建中了,在构建过程中会执行该命令进行打包。如下命令:

npm config set registry http://registry.npm.taobao.org/ && npm install && rm -rf dist && npm run build

如下所示:

pcnyr3ziyqm1572.png

然后点击保存按钮。

此时我在本地项目改下代码,推送到github,再看看Jenkins中如下图所示

hrenk3cghsm1573.png

c2x0n3zuzz21574.png

d2hphbcw1h41575.png

等构建完成后,命令行最后一行是Finished的状态如果是SUCCESS,则证明执行的任务顺利完成了。如果是FAILURE则证明中间有重大错误导致任务失败。UNSTABLE代表有些小问题,但是不阻碍任务执行。

srrszsttxwy1576.png

解决的办法在命令行中运行命令:

sudo npm -g install phantomjs-prebuilt@2.1.16 --ignore-script

稍等一会儿,我们可以看到构建成功信息了,如下图所示:

erq14isg4ex1577.png

然后我们点击项目的工作空间,将会发现多了dist和node_modules两个文件夹了。如下图所示:

ikwggv5kpaj1578.png

如上我们的代码已经自动构建完成了,但是我们目前还没有部署到某个服务器上去,因此我们现在要实现这么一个功能。

四、实现自动化部署

现在Jenkins上安装一个Public Over SSH插件,我们将会通过这个工具来实现服务器部署功能。

4.1安装插件

点击 Manage Jenkins -> Manage Plugins -> 可选插件中,搜 Public Over SSH 插件,点击安装,安装完成后,重启Jenkins

pvazkgarptd1579.png

4.2 配置

点击 Manage Jenkins -> Configure System -> 拉倒最下面就有该窗口了,如下所示:

f1whns3zgmx1580.png

上图是我jenkins配置,下图为网络博客的一张配置图

1uc3cearw4a1581.png

配置项的含义如下

Passphrase: 密码(key的密码,如果没有的话就不填写)

Path to key: key文件(私钥)的路径

SSH Server Name: 标示的名称(随便写)

Hostname: 需要链接ssh的主机名或ip地址,建议写服务器ip

Username: 用户名

Remote Directory: 远程目录(服务器文件目录: 比如 /usr/local/nginx/pcweb/)

如上填写完成后,点击保存按钮即可,我本地电脑没有对应的服务器,因此暂时不测试了。

配置完成后,我们需要到我们创建的任务,点击构建项tab,增加2行代码,如下:

cd dist && tar -zcvf dist.tar.gz *

含义是:进入dist文件夹内,把所有的文件打包成一个文件。如下所示:

pso4wfqjpj21582.png

最后点击保存按钮,选择我们在本地修改完代码,直接git push,在Jenkins会自动构建打包,并且会自动发布到服务器上。

借鉴:

https://www.cnblogs.com/tugenhua0707/p/11949644.html

httpogs.com/xiao987334176/p/11323795.html

等构建完成后,命令行最后一行是Finished的状态如果是SUCCESS,则证明执行的任务顺利完成了。如果是FAILURE则证明中间有重大错误导致任务失败。UNSTABLE代表有些小问题,但是不阻碍任务执行。



推荐阅读
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
author-avatar
abc
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有