项目的业务需求:从mac端直接连上linux服务终端,并发布相关的代码

一、使用ssh链接上linux服务端

  • 1、cd ~/.ssh
  • 2、vi config,按照下面的内容配置config文件,然后:wq退出保存
    #shell命令时对应的名字
    Host test
    #需要连接上的linux终端的ip地址
    HostName 10.2.30.20
    #linux终端对应的端口,默认一般 是22
    Port 60022
    #链接终端时对应的用户名
    User username
  • 3、使用ssh test命令链接linux服务端提示输入密码

    出现如下界面表示链接成功

    由于我们是链接在堡垒机上面,所以还要从堡垒机链接到相应的服务器。如果没有堡垒机这一层,出现的应该是如下的界面

    到上述操作已经完成了链接到服务器

二、一键代码上传

由于此例子中间有堡垒机的关系,我本机的代码不能直接上传至服务器,只能从服务器拉本机的代码

  • 1、项目本地打包的时候添加压缩命令在package.json的script中加入蓝色部分的代码,可以使用 npm run pub进行编译

    "scripts": {
    "dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
    "build": "cross-env NODE_ENV=production webpack --progress --hide-modules",
    "pub":"npm run build && rm -rf dist.tar.gz && tar -zvcf dist.tar.gz dist"
    },
  • 2、链接上终端服务器,在终端服务器上创建shell脚本
    使用cd命令,转到你项目所在的目录例如:cd /home/***,在项目的同目录下使用vi命令创建pub.sh文件,下面是我的shell脚本。在这之前需要再走一遍上面的第1、2小步让服务器链接上我的本机。至于相应的shell脚本语法可以自行查看:http://www.jb51.net/article/74471.htm

    #!binn/sh
    set -e
    echo “enter host name”
    #可以给不同的人使用,输入在config中配置的host
    read host
    echo "enter your path"
    #输入发布者项目在本机上的地址
    read userpath
    echo "enter this version's date for zip:"
    #对原版本备份,如果没有输入此参数的话会默认当前的日期
    read zipdate
    #对应的项目文件夹
    proj='yishang2.1'
    #下面是对以上变量如果未输入值给的默认值,这里是链接到自己的本机上面
    if [[ $host = '' ]]
    then
    host='kaisela'
    fi
    if [[ $userpath = '' ]]
    then
    userpath='~/documents/workspace/YS2.0/dist.tar.gz'
    fi
    if [[ $zipdate = '' ]]
    then
    zipdate=`date +%Y%m%d`
    fi
    #备份项目
    tarzip=`tar -zvcf ${proj}_${zipdate}.tar.gz ${proj}`
    #移除原目录
    clear=`rm -rf ${proj}/dist.tar.gz && rm -rf ${proj}/dist`
    #从本机上拉取代码并解压,和移除拉取的文件
    getcode=`scp ${host}:${userpath} ${proj}/dist.tar.gz && cd ${proj} && tar -xzvf dist.tar.gz dist && rm -rf dist.tar.gz`

    如果可以直接连上服务器,并且 可以直接push代码到服务器就更简单,直接将上面的代码保存到项目的根目录下面在script的pub选项的命令修改为下面的代码:

    "scripts": {
    "dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
    "build": "cross-env NODE_ENV=production webpack --progress --hide-modules",
    "pub":"npm run build && rm -rf dist.tar.gz && tar -zvcf dist.tar.gz dist && sh pub.sh"
    },

    就此介绍完成

mac链接linux终端,shell脚本发布代码的更多相关文章

  1. 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器

    本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...

  2. 使用C#给Linux写Shell脚本(下篇)

    在上篇的<使用C#给Linux写Shell脚本>结尾中,我们留下了一个关于C#如何调用BashShell的问题.在文章发布之后,我留意到有读者留言推荐使用“Pash”(一款类PowerSh ...

  3. Linux/Unix shell 脚本中调用SQL,RMAN脚本

    Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可 ...

  4. 通过shell脚本实现代码自动化部署

    通过shell脚本实现代码自动化部署 一.传统部署方式及优缺点 1.传统部署方式 (1)纯手工scp (2)纯手工登录git pull.svn update (3)纯手工xftp往上拉 (4)开发给打 ...

  5. Linux常用Shell脚本珍藏【转载】

    我们在运维中,尤其是linux运维,都知道脚本的重要性,脚本会让我们的 运维事半功倍,所以学会写脚本是我们每个linux运维必须学会的一门功课,这里收藏linux运维常用的脚本.如何学好脚本,最关键的 ...

  6. 从windows到linux的shell脚本编码和格式问题

    从windows到linux的shell脚本编码和格式问题   从windows到Linux的shell脚本编码和格式问题 1.异常问题 :set ff=unix 启动脚本在启动时报错比如执行sh s ...

  7. Linux执行shell脚本方式及区别&命令后台运行

    Linux执行shell脚本方式及区别&命令后台运行 http://blog.csdn.net/heqiyu34/article/details/19089951/

  8. Linux简单Shell脚本监控MySQL、Apache Web和磁盘空间

    Linux简单Shell脚本监控MySQL.Apache Web和磁盘空间 1. 目的或任务 当MySQL数据库.Apache Web服务器停止运行时,重新启动运行,并发送邮件通知: 当服务器磁盘的空 ...

  9. Linux:从windows到linux的shell脚本编码和格式

    从windows到linux的shell脚本编码和格式问题 异常问题 :set ff=unix 启动脚本在启动时报错比如执行sh start.sh,时会报Command not found等等的错误, ...

随机推荐

  1. 配置 VirtualBox backend - 每天5分钟玩转 Docker 容器技术(75)

    Rexy-Ray 支持多种 backend,上一节我们已经安装配置了 Rex-Ray,今天演示如何配置 VirtualBox backend. 在 VirtualBox 宿主机,即我的笔记本上启动 v ...

  2. UI自动化测试(三)对页面中定位到的元素对象做相应操作

    前两天分别讲述了UI自动化测试基础以及对页面元素该如何进行定位,这一篇自然就是对定位到的页面元素对象进行相应操作啦. 阅读目录 1.常用操作元素对象的方法 2.鼠标事件操作 3.键盘事件操作 4.We ...

  3. 实战系列之 Node.js 玩转 Java

    这些年以来,Node.js的兴起,JavaScript已经从当年的“世界最被误解的语言”变成了“世界最流行的语言”.且其发展之势,从语言本身的进化,库和包的增长,工具支持的完善,star项目和领域解决 ...

  4. hdu4678 Mine 2013 Multi-University Training Contest 8 博弈题

    Mine Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submi ...

  5. form表单中enctype="multipart/form-data"的传值问题

    form表单中enctype="multipart/form-data"的传值问题!! Form表单中enctype="multipart/form-data" ...

  6. MySQL or MariaDB 错误解决方法之报错代码1045

    phpMyAdmin登录报错:mysqli_real_connect(): (28000/1045): Access denied for user 'root'@'localhost' (using ...

  7. oracle排序的几种方法

    1.创建数据库表 CREATE TABLE USER_INFO(  USERID      VARCHAR2(10 BYTE)                 NOT NULL,  USERNAME  ...

  8. 【转载】Retina屏的移动设备如何实现真正1px的线?

    文章转载自 酷勤网 http://www.kuqin.com/ 原文链接:http://www.kuqin.com/shuoit/20150530/346322.html 原文摘要:前些日子总被人问起 ...

  9. AspectCore.Extension.Reflection : .NET Core反射扩展库

    在从零实现AOP的过程中,难免会需要大量反射相关的操作,虽然在.net 4.5+/.net core中反射的性能有了大幅的优化,但为了追求极致性能,自己实现了部分反射的替代方案,包括构造器调用.方法调 ...

  10. win10 uwp ContentDialog 点确定不关闭

    微软的ContentDialog不是一直有,而是UWP新的,可以使用Content放用户控件,使用很好,但是一点不好的是,默认的一点击下面按钮就会退出. 我们有时候需要ContentDialog用户输 ...