公司用github管理项目,并且这些项目(包括纯静态和node APP)大都是咱们本身上服务器部署的前端
我正在埋头写代码,忽然,node
pm过来讲:xxx
项目改个东西,很简单(例如换个图片,按钮,文案。。。)webpack
我:哦,那就改呗,按要求先在本地,切到 test
分支改动后的上测试步骤:git
git add .
git commit -m fix(xxx): xxx
git fetch upstream test
git rebase upstream/test test
合并conflict后git push upstream test
以上只是把 test
分支代码同步到github上,接下来,还要上服务器 pull
代码,重启项目:github
ssh ubuntu@xxx
tmux a -t xxx
git checkout test
git log
git pull origin test
npm run build:test
如今成功上到测试了,看看效果,没问题就要上到生产了,步骤和上面差很少,先切到生产(个人是:next
分支)上生产步骤:web
git fetch upstream next
git rebase upstream/next next
git merge test
,合并conflict后git push upstream next
以上只是把 next
分支代码同步到github上,接下来,还要上服务器pull代码,重启项目:docker
ssh ubuntu@xxx
shell
tmux a -t xxx
npm
git checkout next
编程
git log
git pull origin next
npm run build:next
终于完成领导交给的任务了,就为了一个小小的改动,用了这么多步骤,是否是很蛋疼,过了一下子,pm又跑过来讲还有一个地方要改。。。
grunt
,到 glup
,又到如今的 webpack
,以及 rollup
,能够说是很成熟了,可是项目部署,可能不少前端小伙伴接触的还很少,可能只是打包出文件( dist
)甩给后端ci
,仅仅借助webhooks
来简单的实现git push xxx
本地代码提交至远程github仓库Payload url
是来自webhooks的配置)请求Payload url
的服务根据传回来的信息进行提取,拉取最新代码并从新构建项目目的是为webhooks提供payload url,并取得github 回调发来的信息,执行构建部署命令
选择:
a. copy个人github-hook,基于koa
b. 用这个本身写github-webhook-handler,基于node原生http服务的
c. 其余
介绍一下个人 github-hook
:
目录:
.
├── README.md
├── config
│ ├── data.example.js
│ ├── data.js (配置项目的 dir/分支/启动命令)
│ └── index.js (配置secret,与github的webhooks配置相同)
├── ecosystem.config.js (pm2启动配置文件)
├── package-lock.json
├── package.json
└── src
├── controlers
│ └── token.js (用于生成token,webhooks加密用)
├── index.js (启动文件)
├── jobs
│ └── index.js (解析回调发来的信息,执行命令)
└── routes
└── index.js (路由,处理请求)
复制代码
github-hook
服务/var/nodejs
,可根据喜爱本身改,别忘了改对应的 config/data.js
文件的 DIR
)git clone xxxgithub-hook.git
cd github-hook
npm i
npm run start
,用的是pm2,请先全局安装pm2curl ip:9002
,如有success字样,则成功
/index.js
,别忘记安全组开放端口打开github,找到要配置的项目,进入setting-->webhooks-->新增一个:
http://ip:9002/payload/{reponame}
,我这里的reponame即 github-hook
/config/index.js
中的 appSecrcet
保持一致在本机更改 github-hook
代码,提交,而后打开刚刚的github页面看看下面是否有Recent Deliveries:
pull
代码,重启服务,直接在本地提交代码就能够从新构建部署是否是提升了效率?ci
系统,在版本回退,单元测试等方面更完善,也就是我下次要讲的,将项目放到 docker
容器中 "用 jenkins
打包构建部署项目"== ps: ==刚开始写东西,之前没有这个习惯,还请多多提意见,谢谢~