zoukankan      html  css  js  c++  java
  • Jenkins 实现前端自动打包,自动部署代码

    1Jenkins介绍

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

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

    2.1 安装Java SDK

    1 apt-get update
    2 
    3 sudo apt-get install -y openjdk-8-jdk
    4 
    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

    启动成功后如下图

     

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

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

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

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

     

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

     

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

     

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

     

    点击开始使用Jenkins

     

     

    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 填写如下所示的内容

     

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

     

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

    3、Github webhooks配置

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

     

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

     

    Jenkins的github配置

    4、安装github Plugin

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

     

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

     

    5、配置github Plugin

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

     

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

    6、Jenkins中创建任务

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

     

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

     

    点击确定按钮进入下一步

     

    点击确定按钮进入下一步

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

    6.2、源码配置管理配置

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

     

    6.3、构建触发器

     

    6.4、构建环境

     

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

     

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

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

     

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

     

    以上只是简单的使用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,找到后安装,重启,如下图

     

    6.5.2安装NodeJs

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

     

    点击保存按钮即可。

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

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

     

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

    6.5.4 构建

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

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

    如下所示:

     

    然后点击保存按钮。

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

     

     

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

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

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

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

     

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

     

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

    四、实现自动化部署

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

    4.1安装插件

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

     

    4.2 配置

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

     

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

     

    配置项的含义如下

    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文件夹内,把所有的文件打包成一个文件。如下所示:

     

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

    借鉴:

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

    httpogs.com/xiao987334176/p/11323795.html

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

  • 相关阅读:
    深入浅出单实例Singleton设计模式
    设计模式之监听器模式
    Android 驱动(二) IIC简单介绍
    用XCA(X Certificate and key management)可视化程序管理SSL 证书(3)--创建自己定义的凭证管理中心(Certificate Authority)
    编译android-4.3.1_r源代码并刷到自己的Galaxy Nexus I9250真机上
    C++中的单例模式
    MessageDigest简单介绍
    白话经典算法系列之中的一个 冒泡排序的三种实现
    KNN算法理解
    TCP/IP数据包结构具体解释
  • 原文地址:https://www.cnblogs.com/chailuG/p/13290474.html
Copyright © 2011-2022 走看看