精华内容
下载资源
问答
  • Jenkins+Git+github 自动化部署
  • 主要介绍了GO 使用Webhook 实现github 自动化部署的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • Jenkins+Git+github 自动化部署前言安装JenkinsHTTPS访问并配置Jenkins安装maven安装git将Linux服务器注册到Jenkins上配置jenkinsover 前言 服务器原来已经安装了jdk ,tomcat 等等就省略了这些安装 安装Jenkins 1:...

    前言

    服务器原来已经安装了jdk ,tomcat 等等就省略了这些安装

    安装Jenkins

    1:准备Jenkins必需环境 java(安装步骤略)
    2:yum安装Jenkins

     	wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
    	wget -O /root/jenkins.io.key https://pkg.jenkins.io/redhat/jenkins.io.key
    	rpm --import  /root/jenkins.io.key
    	yum clean all && yum makecache
    	yum install -y jenkins
    

    3:修改Jenkins默认端口
    进入/etc/sysconfig/ vim jenkins 修改8080 为****
    4:启动Jenkins

     systemctl start jenkins 
    

    如果出现 Job for jenkins.service failed because the control process exited with error code. See “systemctl status jenkins.service” and “journalctl -xe” for details. 则进入 cd /etc/init.d/ vim jenkins 添加自己java的环境变量地址
    在这里插入图片描述
    如果出现告警:
    Warning: jenkins.service changed on disk. Run ‘systemctl daemon-reload’ to reload units.
    执行systemctl daemon-reload 即可。

    HTTPS访问并配置Jenkins

    1:nginx下conf nginx.con配置文件中添加 并重启nginx:

    /usr/local/nginx/sbin/nginx -s reload
    

    在这里插入图片描述
    2:在jenkins配置文件中添加 JENKING_ARGS=’’–prefix=/jenkins" 并重启jenkins:

    service jenkins restart
    

    在这里插入图片描述
    3:访问https://域名/jenkins
    在这里插入图片描述
    查看密码

    cat /var/lib/jenkins/secrets/initialAdminPassword
    

    4:选择插件安装
    在这里插入图片描述
    等待安装完成
    在这里插入图片描述

    安装maven

    1:下载并解压 并解压
    在这里插入图片描述
    在这里插入图片描述
    2:配置环境变量
    在这里插入图片描述
    在这里插入图片描述

    source /etc/profile
    

    3:查看maven版本

    mvn -v 
    

    在这里插入图片描述

    安装git

    1:下载git安装包 https://github.com/git/git/releases
    *强调文本* _强调文本_
    2:上传到linux
    3: 解压

    tar -zxvf git-2.26.0.tar.gz
    

    4:进入

    cd git-2.26.0
    

    5:安装依赖

    yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc-c++ perl-ExtUtils-MakeMaker wget autoconf -y  
    

    (可以事先用rpm -q xx 查看是否安装了默写依赖)
    6:删除旧版

    yum -y remove git
    

    7:编译

    make prefix=/usr/local/git all
    

    8:安装

    make prefix=/usr/local/git install
    

    9:配置环境变量

    vi /etc/profile
    

    在这里插入图片描述
    10:查看版本
    在这里插入图片描述

    11:配置git的用户名

     git config --global user.name "***"
    

    12: 配置git的邮箱

    git config --global user.email "*@*.com"
    

    13:生成密钥文件,连续回车即可,默认生成在/root/.ssh文件夹下 ls可能不显示 直接cd .ssh即可进入
    在这里插入图片描述
    15:打开github 下来用户选择 setting
    在这里插入图片描述
    16:添加秘钥
    在这里插入图片描述
    在这里插入图片描述
    17:生成token 复制备用
    在这里插入图片描述
    在这里插入图片描述
    18:生成webhooks https://域名/jenkins/github-webhook/
    在这里插入图片描述

    将Linux服务器注册到Jenkins上

    1:新建节点

    图片:
    配置如下
    在这里插入图片描述
    配置好执行编译能连接说明没问题

    配置jenkins

    1:进入系统管理—选择系统配置
    在这里插入图片描述在这里插入图片描述
    2:添加 弹出页面
    在这里插入图片描述
    3:进入系统管理-选择全局工具配置
    在这里插入图片描述
    在这里插入图片描述
    4:新建任务
    在这里插入图片描述
    配置如下
    复制git项目地址
    在这里插入图片描述
    添加到下图,账号密码自行输入
    选择 检出到子目录 自定义文件名称
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    #当jenkins进程结束后新开的tomcat进程不被杀死
    BUILD_ID=DONTKILLME
    
    #加载变量
    . /etc/profile
    
    #配置运行参数
    #PROJ_PATH为设置的jenkins目录的执行任务目录
    export PROJ_PATH=`pwd`
    
    #配置tomcat所在目录
    export TOMCAT_APP_PATH=/usr/local/tomcat
     
    #执行写好的自动化部署脚本
    sh /root/jenkins/deploy.sh
    

    如果执行编译出现 Permission denied 是因为权限引起(安装完jenkins后,linux中默认使用的jenkins这个用户) 现在改为root

    vi /etc/sysconfig/jenkins
    

    在这里插入图片描述
    2:执行

    sudo chown -R root /var/log/jenkins
    
    sudo chgrp -R root /var/log/jenkins
    
    sudo chown -R root /var/lib/jenkins 
    
    sudo chgrp -R root /var/lib/jenkins
    
    sudo chown -R root /var/cache/jenkins
    
    sudo chgrp -R root /var/cache/jenkins
    

    3:如果执行编译出现$’\r’:command not found执行 命令:

    dos2unix deploy.sh
    

    deploy.sh

    #!/usr/bin/env bash
    #编译+部署项目站点
    
    #需要配置如下参数
    # 项目路径, 在Execute Shell中配置项目路径, pwd 就可以获得该项目路径
    # export PROJ_PATH=这个jenkins任务在部署机器上的路径
    
    # 输入你的环境上tomcat的全路径
    # export TOMCAT_APP_PATH=tomcat在部署机器上的路径
    
    ### base 函数
    killTomcat()
    {
        pid=`ps -ef|grep tomcat|grep java|awk '{print $2}'`
        echo "tomcat Id list :$pid"
        if [ "$pid" = "" ]
        then
          echo "no tomcat pid alive"
        else
          kill -9 $pid
        fi
        #上面注释的或者下面的
        #cd $TOMCAT_APP_PATH/bin
        #sh shutdown.sh
    }
    cd $PROJ_PATH/jenkins-xcx
    mvn clean install
    
    # 停tomcat
    killTomcat
    
    # 删除原有工程
    rm -rf $TOMCAT_APP_PATH/webapps/ROOT/*
    
    # 复制新的工程到tomcat上
    cp $PROJ_PATH/jenkins-xcx/target/xxx.war $TOMCAT_APP_PATH/webapps/ROOT/
    
    cd $TOMCAT_APP_PATH/webapps/ROOT/
    
    chmod 777 xxx.war
    
    jar -xvf xxx.war
    
    rm -rf $TOMCAT_APP_PATH/webapps/ROOT/xxx.war
    
    # 启动Tomcat
    cd $TOMCAT_APP_PATH/bin
    sh startup.sh
    

    over

    展开全文
  • 需求说明在项目开发过程中,我们有时会频繁的更新代码, 流程大概为:(1) 本地git push提交代码至git托管平台(2) 登陆到部署有网站源码的线上服务器(3) cd到项目根目录, 执行git pull指令拉取最新代码整个流程纯手动...

    一. 分析需求

    1. 需求说明

    在项目开发过程中,我们有时会频繁的更新代码, 流程大概为:

    (1) 本地git push提交代码至git托管平台

    (2) 登陆到部署有网站源码的线上服务器

    (3) cd到项目根目录, 执行git pull指令拉取最新代码

    webp

    整个流程纯手动更新,每次耗时在1分钟左右, 这样一天下来,浪费了很多时间在这些琐碎的事情上.

    现在的需求是,在每次本地提交代码后,线上服务器自动拉取最新代码,完成部署更新.即所谓的自动化部署.

    2. 方案

    现在一些主流代码托管平台如github、 gitlab、git@osc等均已提供webhook功能,在用户push了代码后,会自动回调一个您设定的http地址。 用户可以自己根据不同的需求,来编写自己的脚本程序(比如发邮件,自动部署等);目前,webhook支持多种触发方式,如Push、 Tag Push、 Issue、评论、合并请求等。

    附webhook的简介:

    Webhook就是用户通过自定义回调函数(callback)的方式来改变Web应用的一种行为,这些回调函数可以由不是该Web应用官方的第三方用户或者开发人员来维护,修改。通过Webhook,你可以自定义一些行为通知到指定的URL去。Webhook的“自定义回调函数”通常是由一些事件触发的,比如推送代码到代码库或者博客下新增一个评论,源站点会为Webhook进行HTTP请求的URI配置。用户通过配置,就可以使一个网站上的事件调用在另一个网站上表现出来,这些事件调用可以是任何事件,但通常应用的是系统集成和消息通知。

    方案流程:

    1477786-20200802181221101-1573109899.png

    所以自动部署主要实现方式就是:

    - 修改代码 push

    - github(其他仓库平台)发送请求给你的网站服务器

    - 网站服务器收到更新请求,执行自动部署脚本

    - 自动部署脚本执行代码拉取,打包,修改文件等动作完成网站的更新部署

    二、具体实现

    Github仓库设置

    在GitHub上需要更新的代码仓库添加webhooks, 在指定仓库→settings→webhooks

    watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzMyNjU2ODk3,size_16,color_FFFFFF,t_70

    编写GitHub推送回调

    python开启web服务(hook.py)

    importhmacimportosfrom flask importFlask, request, jsonify

    app= Flask(__name__)#github中webhooks的secret

    github_secret = 'xxxxxxxx'

    defencryption(data):

    key= github_secret.encode('utf-8')

    obj= hmac.new(key, msg=data, digestmod='sha1')returnobj.hexdigest()

    @app.route('/hook', methods=['POST'])defpost_data():"""github加密是将post提交的data和WebHooks的secret通过hmac的sha1加密,放到HTTP headers的

    X-Hub-Signature参数中"""post_data=request.data

    token=encryption(post_data)#认证签名是否有效

    signature = request.headers.get('X-Hub-Signature', '').split('=')[-1]if signature !=token:return "token认证无效", 401

    #运行shell脚本,更新代码

    os.system('sh deploy.sh')return jsonify({"status": 200})if __name__ == '__main__':

    app.run(port=8989)

    编写shell脚本(deploy.sh)

    cd "$(dirname"$0")"echo'--------Git pull------------'git pull

    echo'-----Already up-to-date------'echo'----- restart supervision-----'supervisorctl restart blog

    echo'----- reload nginx-----'nginx-s reload

    注意: 此次部署的hook.py 和deploy.sh都是在仓库的同一目录下

    开启服务

    supervisor部署webhook

    [program:webhook]

    directory=/data/wwwroot/docs

    command=/home/dukenan/.envs/flask_py3/bin/python3 hook.py

    autostart=true

    autorestart=false

    startsecs=1;使用root账户

    user=root

    stderr_logfile=/etc/supervisor/logs/webhooks/stderr.log

    stdout_logfile=/etc/supervisor/logs/webhooks/stdout.log

    redirect_stderr=true

    loginfo=info

    部署NGINX的参考

    server {

    listen80;

    server_name 服务器IP;#配置域名

    client_max_body_size 300M;

    location/{

    proxy_pass http://127.0.0.1:8989; #转发本地8989端口

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header Host $host;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

    }

    展开全文
  • 需求说明在项目开发过程中,我们有时会频繁的更新代码, 流程大概为:(1) 本地git push提交代码至git托管平台(2) 登陆到部署有网站源码的线上服务器(3) cd到项目根目录, 执行git pull 指令拉取最新代码整个流程纯手动...

    一. 分析需求

    1. 需求说明

    在项目开发过程中,我们有时会频繁的更新代码, 流程大概为:

    (1) 本地git push提交代码至git托管平台

    (2) 登陆到部署有网站源码的线上服务器

    (3) cd到项目根目录, 执行git pull 指令拉取最新代码

    整个流程纯手动更新,每次耗时在1分钟左右, 这样一天下来,浪费了很多时间在这些琐碎的事情上.

    现在的需求是,在每次本地提交代码后,线上服务器自动拉取最新代码,完成部署更新.即所谓的自动化部署.

    2. 方案

    现在一些主流代码托管平台如github、 gitlab、git@osc 等均已提供webhook功能,在用户push了代码后,会自动回调一个您设定的http地址。 用户可以自己根据不同的需求,来编写自己的脚本程序(比如发邮件,自动部署等);目前,webhook支持多种触发方式,如Push、 Tag Push、 Issue、评论、合并请求 等。

    附webhook的简介:

    Webhook就是用户通过自定义回调函数(callback)的方式来改变Web应用的一种行为,这些回调函数可以由不是该Web应用官方的第三方用户或者开发人员来维护,修改。通过Webhook,你可以自定义一些行为通知到指定的URL去。Webhook的“自定义回调函数”通常是由一些事件触发的,比如推送代码到代码库或者博客下新增一个评论,源站点会为Webhook进行HTTP请求的URI配置。用户通过配置,就可以使一个网站上的事件调用在另一个网站上表现出来,这些事件调用可以是任何事件,但通常应用的是系统集成和消息通知。

    方案流程:

    所以自动部署主要实现方式就是:

    - 修改代码 push

    - github(其他仓库平台)发送请求给你的网站服务器

    - 网站服务器收到更新请求,执行自动部署脚本

    - 自动部署脚本执行代码拉取,打包,修改文件等动作完成网站的更新部署

    二、具体实现

    Github仓库设置

    在GitHub上需要更新的代码仓库添加webhooks, 在指定仓库→settings→webhooks

    编写GitHub推送回调

    python开启web服务(hook.py)

    import hmac

    import os

    from flask import Flask, request, jsonify

    app = Flask(__name__)

    # github中webhooks的secret

    github_secret = 'xxxxxxxx'

    def encryption(data):

    key = github_secret.encode('utf-8')

    obj = hmac.new(key, msg=data, digestmod='sha1')

    return obj.hexdigest()

    @app.route('/hook', methods=['POST'])

    def post_data():

    """

    github加密是将post提交的data和WebHooks的secret通过hmac的sha1加密,放到HTTP headers的

    X-Hub-Signature参数中

    """

    post_data = request.data

    token = encryption(post_data)

    # 认证签名是否有效

    signature = request.headers.get('X-Hub-Signature', '').split('=')[-1]

    if signature != token:

    return "token认证无效", 401

    # 运行shell脚本,更新代码

    os.system('sh deploy.sh')

    return jsonify({"status": 200})

    if __name__ == '__main__':

    app.run(port=8989)

    编写shell脚本(deploy.sh)

    cd "$(dirname "$0")"

    echo '--------Git pull------------'

    git pull

    echo '-----Already up-to-date------'

    echo '----- restart supervision-----'

    supervisorctl restart blog

    echo '----- reload nginx-----'

    nginx -s reload

    注意: 此次部署的hook.py 和deploy.sh都是在仓库的同一目录下

    开启服务

    supervisor部署webhook

    [program:webhook]

    directory=/data/wwwroot/docs

    command=/home/dukenan/.envs/flask_py3/bin/python3 hook.py

    autostart=true

    autorestart=false

    startsecs=1

    ;使用root账户

    user=root

    stderr_logfile=/etc/supervisor/logs/webhooks/stderr.log

    stdout_logfile=/etc/supervisor/logs/webhooks/stdout.log

    redirect_stderr=true

    loginfo=info

    部署NGINX的参考

    server {

    listen 80;

    server_name 服务器IP; # 配置域名

    client_max_body_size 300M;

    location / {

    proxy_pass http://127.0.0.1:8989; #转发本地8989端口

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header Host $host;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

    }

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

    本文标题: Python基于Webhook实现github自动化部署

    本文地址: http://www.cppcns.com/jiaoben/python/366553.html

    展开全文
  • 公司使用Jenkins自动部署好久了,但是自己一直停留在使用的阶段,没有自己搭建过。趁这几天有时间,买了个服务器把这个搞一搞。身为一个前端工程师,对服务器的一些东西不太熟悉,基本上所有的困难都出现在搞服务器...

    前言

    公司使用Jenkins自动部署好久了,但是自己一直停留在使用的阶段,没有自己搭建过。趁这几天有时间,买了个服务器把这个搞一搞。身为一个前端工程师,对服务器的一些东西不太熟悉,基本上所有的困难都出现在搞服务器上,踩过不少坑,在这里记录一下。

    前置条件

    1. 一台服务器(我用的阿里云,系统是CentOs7.6)
    2. 下载xshell和xftp软件,并连接上你的服务器
    3. 一个vue项目,区分好测试和生产环境,测试环境代码需要热更新,生产手动构建,可以查看我的这篇博客,初始化之后传到GitHub上面。

    docker安装和java安装的对比

    两种方式自己都试过,其中docker安装之后在node环境配置的时候出了问题,node和npm都无法执行,是因为docker的Alpine镜像不支持node,也找到了解决方案,但是因为自己不熟悉linux的一些操作,所以放弃了docker的方式选择用java方式安装。这里并不是说java的方式更好,只是记录一下自己踩过的坑,具体选择哪种方案还是要看自己的需求,这里我介绍的是java安装方式。

    开始,安装java环境

    第一步,下载安装包

    要注意的是目前为止(2020.8)Jenkins只支持javajdk8或11,我下载了最新的14不支持,后来卸载重新装的jdk8。
    请去官网中下载jdk的安装文件,
    由于我的Linux是64位的,因此我下载jdk-8u261-linux-x64.tar.gz
    由于下载较慢,在文章末尾我会附上本文所需下载的文件。
    之后在服务器usr/下新建一个java文件夹

    cd ../usr/
    mkdir java
    cd java
    

    如下图所示,然后再点击上面的绿色图标打开xftp把刚才下载下来的文件传到服务器上
    在这里插入图片描述

    上传到服务器上

    如上图,上传完成,使用命令解压

    tar  -zxvf  jdk-8u261-linux-x64.tar.gz
    

    解压之后可以看到一个jdk1.8.0_261的文件夹
    在这里插入图片描述

    第二步,配置环境变量

    通过命令

    vim /etc/profile
    

    vim是linux内置的一个编辑器,打开之后按“i”进入编辑模式,底部会出现“INSERT”的提示,键盘的上下左右操控光标位置,无法使用鼠标。用↓键移动到文档最下面,添加

    export JAVA_HOME=/usr/java/jdk1.8.0_261
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
    export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
    export PATH=$PATH:${JAVA_PATH}
    

    如下图所示:
    在这里插入图片描述

    其中“JAVA_HOME=/usr/java/jdk1.8.0_261”是jdk安装路径,如果jdk版本不一样,文件名可能不一样,注意下这里。
    然后按esc,退出编辑模式,底部的“INSERT”会消失,在按冒号即键盘上的“:”,输入wq,回车保存。
    在这里插入图片描述

    第三步,测试安装成功

    先输入

    java -version
    

    查看java版本,会出现版本提示

    在输入

    echo $PATH
    

    查看环境变量
    在这里插入图片描述

    下载git插件

    在接下来的Jenkins拉取GitHub代码的时候会用到,先下载下来

    yum install git 
    

    出现询问是否下载时,输入y按下回车
    最后通过

    git --version
    

    查看是否安装成功

    下载Jenkins并启动

    第一步,下载Jenkins的war包

    去Jenkins的官网下载
    在这里插入图片描述
    下载完成之后,在根目录下新建一个jenkins文件夹,并上传下载下来的war包

    cd ../../
    mkdir jenkins
    cd jenkins
    

    上传方式同上面的javajdk上传一样
    在这里插入图片描述

    第二步,使用java运行war包

    运行之前别忘了去你的服务器把8080端口放开
    阿里云位置:云服务器ECS-网络与安全-安全组
    在这里插入图片描述
    运行后台启动命令:

    nohup java -jar jenkins.war &
    

    显示如图
    在这里插入图片描述
    之后查看jenkins进程

    ps -ef | grep jenkins
    

    在这里插入图片描述
    这样就成功启动Jenkins了。

    第三步,配置Jenkins和GitHub

    接下来在浏览器输入:

    http://你的服务器ip地址:8080/
    

    可以看到Jenkins的欢迎页面
    在这里插入图片描述
    使用:

    cat 上面的地址
    

    查看第一次进入的密码,输入并继续。
    接下来选择安装推荐插件,这个时间会比较长
    在这里插入图片描述
    在这里插入图片描述
    之后建一个管理员账号,以后在登录Jenkins就输入账号密码登录了
    在这里插入图片描述
    之后一直下一步,直到出现这个页面,表示Jenkins安装完成
    在这里插入图片描述
    值得注意的是,有些插件可能会安装失败,进入之后会有消息提示,要先把安装失败的插件重新安装一下,并重启Jenkins,没有提示的话忽略这一步。

    GitHub配置

    首先登录你的GitHub账号,依次点击
    右上角头像->Settings->Developer settings->Personal access tokens->Generate new token
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    之后命名为jenkins,勾选下图两项
    在这里插入图片描述
    点击确定,第一次创建完成,会在列表页显示token值,复制下来。
    在这里插入图片描述

    如果忘记了也不要紧,点进去,点击Regenerate token,会重新显示token,复制下来。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    Jenkins配置

    依次点击系统管理->系统设置,找到GitHub,添加GitHub服务器,其中API URL是固定的,输入名称,点击添加,添加一个凭据。
    在这里插入图片描述
    在这里插入图片描述
    类型选择Secret text,Secret输入刚才复制的tonken,描述随意写,就是一个别名。
    在这里插入图片描述
    在这里插入图片描述
    之后点击连接测试,如图所示,表示连接成功
    在这里插入图片描述
    至此,我们的GitHub和Jenkins建立了初步的连接,接下来就是新建一个任务了,不过因为我们是vue项目,需要node环境,所以先安装上nodejs插件,再去建任务。

    安装nodejs插件

    点击系统管理->插件管理
    在这里插入图片描述
    在可选插件中输入nodejs搜索,因为我已经安装过了,所以在已安装中找到
    在这里插入图片描述
    安装之后重启Jenkins。
    之后需要在系统设置->全局工具配置中配置node
    在这里插入图片描述
    下拉找到nodejs,新增nodejs,输入别名,选择版本。在接下来的新建任务中,用的是这个别名
    在这里插入图片描述
    之后点击保存。

    新建一个Jenkins任务

    点击新建任务,输入名称,选择“构建一个自由风格的软件项目”
    在这里插入图片描述
    输入描述,写上你的GitHub地址
    在这里插入图片描述
    源码管理:
    这里输入的url是以.git结尾的,就是你克隆项目是使用的url。
    之后点击添加,选择账号密码,输入即可。
    默认分值为master,在你的github上切一个test分支,并指定构建test分支
    在这里插入图片描述
    构建触发器:空着
    在这里插入图片描述
    构建环境:选择nodejs,刚才在全局配置工具中配置的
    在这里插入图片描述
    构建:选择增加构建步骤->执行shell
    在这里插入图片描述
    在命令中输入:

    npm install -g cnpm --registry=https://registry.npm.taobao.org;
    cnpm i;
    npm run test;
    ls;
    

    上面的命令解释为:

    1. 下载cnpm
    2. 用cnpm安装依赖
    3. 测试环境打包
    4. 查看当前目录下的所有文件
    

    其中第一行只用执行一次即可,第二行只有在有新的依赖安装时执行
    保存之后,点击立即构建。第一次构建时间会比较长,因为要安装node,会卡很长时间,等待安装完成。点击下面的蓝色小球,构建失败的话是红色。查看控制台输出。
    在这里插入图片描述
    如果构建成功,会在最后的ls命令输出当前文件夹的文件,可以看到成功打包出了dist文件。
    在这里插入图片描述
    现在,我们已经完成了项目的Jenkins构建,感觉是不是缺点什么。
    没错,自动化构建部署,缺少了自动化。那么现在我们就加上test环境的自动化构建,即监测到代码push,Jenkins自动构建项目。
    除此之外,我们并不想把项目打包之后的dist文件放在这里不管,我们想把所有web项目放在一个文件夹下统一管理。
    那现在我们就有了两点需求:

    1. git项目test环境自动构建,代码热更新
    2. 移动当前构建完成的dist文件到一个统一的目录下

    测试环境代码热更新

    首先我们去GitHub找到当前项目的Settings->Webhooks->Add webhook
    在这里插入图片描述
    输入的url为,其中/github-webhook/是固定的

    http://你的ip地址:8080/github-webhook/
    

    在这里插入图片描述
    点击确定之后,在列表页显示一个对号表示成功
    在这里插入图片描述
    之后回到Jenkins,找到刚才的任务,点击配置
    在这里插入图片描述

    构建触发器:
    在这里插入图片描述
    之后把shell执行的命令也改下
    打包test环境
    移动dist文件夹到 /root/web/ 目录下,并更名为myproject

    npm run test;
    mv dist /root/web/myproject
    

    这个命令需要去服务器新建web文件夹:

    cd ../../
    cd root
    mkdir web
    

    在这里插入图片描述
    保存之后。我们在本地改一下myproject项目的代码,在test分支:
    Home.vue改为:

    <template>
      <div class="home">
        jenkins测试项目<br></br>
        我在 {{ process.NODE_ENV }} 环境,url为:{{ process.VUE_APP_URL }}
      </div>
    </template>
    
    <script>
    
    export default {
      name: 'Home',
      data() {
        return {
          process:process.env
        }
      },
      created() {
        console.log(process.env)
      },
      methods: {}
    }
    </script>
    

    在这里插入图片描述
    然后push上去,可以看到Jenkins自动开始构建
    在这里插入图片描述
    构建完成之后,去 web目录下查看

    cd /root/web
    ls
    

    可以看到有个myprioject文件
    在这里插入图片描述
    至此,Jenkins的自动化构建已经完成。但是我们并不能看到自己打包的页面,接下来我们使用nginx配置前端页面显示。

    nginx配置

    在配置之前需要去服务器安全组打开80端口,nginx默认使用80端口
    阿里云服务器配置如下:
    在这里插入图片描述

    安装nginx

    yum install nginx
    

    然后询问是否下载,输入y回车,进入下载,下载完成

    nginx -v
    

    显示nginx版本,表示安装完成

    在这里插入图片描述
    这时候直接在浏览器中输入你的ip地址,就可以看到nginx的欢迎页面
    在这里插入图片描述

    修改nginx配置

    vim /etc/nginx/nginx.conf
    

    改为如下图所示:
    在这里插入图片描述
    启动nginx服务并查看状态

    systemctl start nginx.service
    systemctl status nginx.service
    

    在这里插入图片描述
    但是现在输入你的ip地址,会报403错误。
    反过来查看刚才的配置文件,发现用的nginx这个用户启动的服务
    在这里插入图片描述
    这里是因为nginx用户没有/root/的访问权限,有两种解决方式

    1. 把上面的nginx改为root,用root用户启动。之后重启
    systemctl reload nginx.service
    
    1. 把root文件夹的权限给nginx用户
    chown -R nginx /root/
    

    之后在根目录下查看权限

    ls -la
    

    在这里插入图片描述
    可以看到root文件夹的权限已经给了nginx。
    之后重启nginx

    systemctl reload nginx.service
    

    输入ip,可以看到你的网页:
    在这里插入图片描述

    附件

    javajdk8和Jenkins的war包

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,563
精华内容 625
关键字:

github自动化部署