一、scp2介绍
随着技术的发展,如今开发项目已经成为了一项复杂的任务。为了保证项目的质量和可靠性,需要开发人员和运维人员之间进行高效的沟通和协作。因此,自动化部署已成为现代软件开发中不可或缺的一部分。
scp2是一个高效的自动化部署工具,它可以帮助开发人员在多个环境之间快速、安全的部署他们的应用程序。在本文中,我们将讨论如何使用SPC2实现项目的多环境自动化部署。
二、先说思路
1、使用cross-env修改系统常量,使程序知道接下来的操作要想那个服务器自动部署
2、使用ssh2操作服务器,将服务器上原有的项目改名,并放入记录文件夹
3、使用scp2将打包后的文件发送到对应的服务器的指定位置
三、示例代码
var scpClient = require("scp2");
var Client = require("ssh2").Client; //连接远程服务器
var dayjs = require("dayjs");
const load = process.env.TARGET;
let nowTime = dayjs().format("YYYY.MM.DD.HH.mm.ss");
let temp = {
dev: {
host: "152.136.XX.XX", //服务器IP地址
port: 22, //SSH端口号
username: "ssh用户名", //服务器SSH登录用户名
password: "ssh密码",
shell:
`cd /www/server/project\n` +
`mv test test-${nowTime}-replace\n` +
`mv test-${nowTime}-replace record/`,
filePath: "test",
path: "/www/server/project/test",
},
};
var conn = new Client();
conn
.on("ready", function () {
console.log("ssh ready");
conn.exec(temp[load].shell, function (err, stream) {
if (err) throw err;
stream
.on("close", function (code, signal) {
// 在执行shell命令后,把开始上传部署项目代码放到这里面
console.log("正在部署至" + temp[load].host);
scpClient.scp(temp[load].filePath, temp[load], (err) => {
if (err) {
console.log("部署失败", err);
throw err;
} else {
console.log("部署成功");
}
});
conn.end();
})
.on("data", (data) => {
console.log("STDOUT: " + data);
})
.stderr.on("data", (data) => {
console.log("STDERR: " + data);
});
});
})
.on("error", function (err) {
console.log("error" + err);
})
.connect({
host: temp[load].host,
port: temp[load].port,
username: temp[load].username,
password: temp[load].password,
});