Browse Source

添加自动化部署(仅限测试环境)

zhangyu 5 years ago
parent
commit
1d3e6f671b
2 changed files with 49 additions and 1 deletions
  1. 10 1
      package.json
  2. 39 0
      publish.js

+ 10 - 1
package.json

@@ -4,11 +4,19 @@
     "description": "A Vue.js project",
     "author": "yaoll <yaolinlin@sagacloud.cn>",
     "private": true,
+    "remote": {
+        "host": "192.168.20.236",
+        "path": "/opt/nginx/ibms/dist",
+        "user": "root",
+        "password": "saga",
+        "local": "dist"
+    },
     "scripts": {
         "i": "npm install",
         "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
         "start": "npm run dev",
-        "build": "node build/build.js"
+        "build": "node build/build.js",
+        "publish": "node publish.js"
     },
     "dependencies": {
         "@sybotan-web/base": "2.1.5",
@@ -53,6 +61,7 @@
         "less-loader": "^4.1.0",
         "node-notifier": "^5.1.2",
         "node-sass": "^4.11.0",
+        "node-ssh": "^6.0.0",
         "optimize-css-assets-webpack-plugin": "^3.2.0",
         "ora": "^1.2.0",
         "portfinder": "^1.0.13",

+ 39 - 0
publish.js

@@ -0,0 +1,39 @@
+/*
+ * @Author: zhangyu
+ * @Date: 2019-12-18 16:18:30
+ * @Info: 自动化部署
+ * @LastEditTime: 2019-12-18 16:20:55
+ */
+
+const Client = require("node-ssh");
+const ssh = new Client();
+
+ssh.connect({
+    host: process.env.npm_package_remote_host,
+    port: "22",
+    username: process.env.npm_package_remote_user,
+    password: process.env.npm_package_remote_password
+}).then(() => {
+    const failedList = [];
+    ssh.putDirectory(
+        process.env.npm_package_remote_local,
+        process.env.npm_package_remote_path,
+        {
+            recursive: true,
+            concurrency: 1,
+            tick: function(localPath, remotePath, error) {
+                if (error) {
+                    failedList.push(localPath);
+                }
+            }
+        }
+    ).then(status => {
+        if (failedList.length > 0) {
+            console.log("发布失败");
+            console.log("failed transfers", failedList.join(", "));
+        } else {
+            console.log(status ? "发布成功" : "发布失败");
+        }
+        ssh.dispose();
+    });
+});