前言
開發中各種測試開發環境,開發環境,生產環境。需要多次頻繁打包上傳專案。當開發的專案過多,容易導致包上錯環境,手動scp rm backup 容易出錯。
本專案提供一次配置多次執行,一鍵操作,解決重複操作
node auto deploy
專案技術
- 後臺使用 node express開發
- 資料庫使用mysql
- 前端使用 Nuxt vue 開發
- ui 使用 element-ui
核心
node—auto-deploy 主要目的是代替手動執行 打包專案 上傳到運程伺服器 資料備份 等命令,使用node child_process模組進行衍生的子程式執行各種命令
專案啟動
安裝
- 程式需要ssh 要用 password 登入 要裝sshpass
yum install -y wget && wget http://sourceforge.net/projects/sshpass/files/sshpass/1.06/sshpass-1.06.tar.gz && tar xvzf sshpass-1.06.tar.gz && cd ./sshpass-1.06 && ./configure && make && make install
複製程式碼
- 修改資料庫配置 /server/config/index.js
module.exports = {
mysql:{
host : '127.0.0.1',
user : 'root',
password : '123456',
database : 'auto_deploy',
port:'3306'
}
};
複製程式碼
-
匯入sql到資料庫 sql檔案在 /server/sql/iauto_deploy_2019-04-19.sql
-
安裝依賴 打包
# install dependencies
$ npm install
# serve with hot reload at localhost:3000 // 開發環境 埠可以 nuxt.confing.js 修改
$ npm run dev
# build for production and launch server
$ npm run build
複製程式碼
For detailed explanation on how things work, checkout Nuxt.js docs.
- 使用pm2為專案守護啟動
# 安裝pm2
$ npm install pm2 -g
# 啟動
$ pm2 start npm --name "autodeploy" -- run start
# 重新啟動
$ pm2 restart autodeploy
複製程式碼
使用者/密碼 admin/123456 (執行不了任務)
專案git 地址 <=
歡迎各位大神提出問題<=,
開發功能
- 核心功能自動部署
- 使用者許可權
- 定時任務
- 支援SVN
歡迎提出您想要的功能 =>入口<=
專案目錄結構
├── README.md
├── api // 前端介面
│ ├── login.js
│ ├── task.js
│ └── user.js
├── assets // 靜態資源
├── components // 元件
│ ├── Breadcrumb
│ │ └── index.vue
│ ├── Hamburger
│ │ └── index.vue
│ ├── Pagination
│ │ └── index.vue
│ ├── README.md
│ ├── SvgIcon
│ │ └── index.vue
│ ├── downTmp
│ │ └── downTemplate.vue
│ ├── editor.vue
│ ├── history.vue
│ └── taskDetail.vue
├── layouts // ui佈局
│ ├── README.md
│ ├── components
│ │ ├── AppMain.vue
│ │ ├── Navbar.vue
│ │ ├── Sidebar
│ │ │ ├── Item.vue
│ │ │ ├── Link.vue
│ │ │ ├── SidebarItem.vue
│ │ │ └── index.vue
│ │ ├── headNav.vue
│ │ └── index.js
│ ├── default.vue
│ ├── empty.vue
│ └── mixin
│ └── ResizeHandler.js
├── log // 日誌
├── middleware // 前端中介軟體
│ ├── README.md
│ └── login.js
├── nuxt.config.js // nuxt 配置
├── package-lock.json
├── package.json
├── pages // 頁面
│ ├── 404.vue
│ ├── README.md
│ ├── index.vue
│ ├── login
│ │ └── index.vue
│ └── user.vue
├── plugins // 外掛
│ ├── README.md
│ ├── directive.js
│ ├── element-ui.js
│ ├── icons.js
│ └── socket.js
├── server // 伺服器程式碼
│ ├── config
│ │ └── index.js
│ ├── controllers
│ │ ├── authController.js
│ │ ├── homeController.js
│ │ ├── permissController.js
│ │ ├── settingController.js
│ │ └── userController.js
│ ├── index.js
│ ├── model
│ │ ├── permissions.js
│ │ ├── permissionsSqlMap.js
│ │ ├── task.js
│ │ ├── taskList.js
│ │ ├── taskListSqlMap.js
│ │ ├── taskSqlMap.js
│ │ ├── user.js
│ │ ├── userPermissionsSqlMap.js
│ │ ├── userPrmissions.js
│ │ └── userSqlMap.js
│ ├── plugins
│ │ ├── log4j.js
│ │ └── socket.js
│ ├── routes
│ │ ├── auth.js
│ │ ├── home.js
│ │ ├── index.js
│ │ ├── permiss.js
│ │ ├── setting.js
│ │ └── user.js
│ ├── server
│ │ ├── cmd
│ │ │ ├── README.md
│ │ │ ├── branchListTask.js
│ │ │ ├── deleteDirTask.js
│ │ │ ├── historyTask.js
│ │ │ ├── localTask.js
│ │ │ ├── pullTask.js
│ │ │ ├── remoteTask.js
│ │ │ ├── scpTask.js
│ │ │ ├── startTask.js
│ │ │ └── test.js
│ │ ├── cmd.js
│ │ ├── ssh-pool
│ │ │ ├── Connection.js
│ │ │ ├── ConnectionPool.js
│ │ │ ├── README.md
│ │ │ ├── commands
│ │ │ │ ├── cd.js
│ │ │ │ ├── mkdir.js
│ │ │ │ ├── raw.js
│ │ │ │ ├── rm.js
│ │ │ │ ├── rsync.js
│ │ │ │ ├── scp.js
│ │ │ │ ├── ssh.js
│ │ │ │ ├── tar.js
│ │ │ │ └── util.js
│ │ │ ├── index.js
│ │ │ ├── remote.js
│ │ │ └── util.js
│ │ └── util
│ │ ├── argv.js
│ │ ├── git.js
│ │ ├── local.js
│ │ ├── log4j.js
│ │ ├── remote.js
│ │ └── ws.js
│ ├── sql
│ │ └── auto_deploy_2019-04-19.sql
│ └── util
│ ├── mysql.js
│ ├── startCmd.js
│ └── token.js
├── static //
│ ├── README.md
│ └── favicon.ico
├── store //資料
│ ├── README.md
│ ├── actions.js
│ ├── app.js
│ ├── index.js
│ ├── mutation-types.js
│ ├── mutations.js
│ └── user.js
└── utils // 工具
├── auth.js
├── index.js
├── request.js
├── scrollTo.js
└── validate.js
複製程式碼