你们公司的前端代码如何部署的?

2018-03-13 09:52:22 +08:00
 LeungJZ

前提:

  1. 纯前端,不涉及后端框架(如 TP,laravel 等)。

  2. 单独一个域名,nginx 会解析目录。

  3. 服务器配置貌似是 4C8G 还是 8C16G 的。

要求:

  1. 不用 ftp 上传,不用 scp 传输

  2. 开发文件在 src 目录下,打包文件在 dist 目录下,可参考 vue。

我现在个人能想到的方法有:

  1. 用 githook 去实现 在服务器中新建一个空仓库,开发完成后,push 到服务器的仓库中,然后自动拉取,打包。

  2. 用 gitlab 的 webhook 实现 在 gitlab 的项目中新建一个 deploy 分支,开发完后打包文件,将打包好的文件 push 到 deploy 分支中,通过 webhook 去触发服务器中某个脚本,脚本 reset --hard 去拉取 deploy 的文件。

第一种方法可以实现。

第二种方法不知道可行不可行。

不知道大家有没有其他更好的方法?

10917 次点击
所在节点    程序员
80 条回复
zarte
2018-03-13 18:43:38 +08:00
@LeungJZ 为啥不用 svn 了?
gxm44
2018-03-13 18:50:50 +08:00
jenkins + aws s3
polun
2018-03-13 19:12:46 +08:00
都用 Gitlab 了, 就用 GitLab CI/CD。
HowToMakeLove
2018-03-13 19:17:40 +08:00
最简单的方式
在服务器目录创建一个可 web 方式访问的程序,里面创建子进程 执行 git pull 命令。
每次要上线,就先上传指定分支,然后访问一下写的有钩子的网页
graysheeep
2018-03-13 19:25:52 +08:00
@youEclipse 哥们能说下具体方案么 很好奇
yuanfnadi
2018-03-13 19:53:28 +08:00
Dockerfile 构建之后把结果放到一个 nginx 镜像里。
然后外部 nginx 指向这个镜像
Bijiabo
2018-03-13 19:56:32 +08:00
scottyjs 部署亚马逊 S3
loveCoding
2018-03-13 20:26:41 +08:00
交给专业的持续集成工具来做
LeungJZ
2018-03-13 22:55:28 +08:00
@zarte
因为麻烦,一个项目一个 svn。
打包完后,就要两边发布。
LeungJZ
2018-03-13 22:56:26 +08:00
@polun
gitlab 是线上的 gitlab 不是自己搭建的。


@HowToMakeLove
现在采取的是,gitlab 的 webhook 去触发一个脚本去拉取。
tairan2006
2018-03-13 23:26:37 +08:00
用 CI,或者写部署脚本
yuanfnadi
2018-03-13 23:27:00 +08:00
@LeungJZ
@graysheeep

关键词 gitlab-ci.

gitlab 的项目可以绑定 gitlab-runner。然后在项目中写一个.gitlab-ci.yml 设定构建发布的流程。
每当项目有变化时候,gitlab-runner 就会自动把代码拉取到镜像 /机器中执行你需要到操作。
例如我自己的博客。我每次提交 commit gitlab 就会把我博客到代码拉到一个构建镜像中执行构建。
构建完成后会把构建出来的结果复制到一个 nginx 的镜像。然后再会把镜像推送到阿里云仓库。
之后 gitlab runner 会执行部署操作。从阿里云拉取镜像。部署前端项目。
在外部还有一个 nginx 指向发布的新 nginx。 写的有点乱。







image: docker:ci

stages:
- build
- deploy

build:
stage: build
script:
- build
only:
- master
- tags
when: on_success
tags:
- aliyun-hk-1

deploy:
stage: deploy
script:
- deploy-docker-compose
only:
- master
- tags
when: on_success
tags:
- aliyun-hk-1
xiadd
2018-03-13 23:52:17 +08:00
我比较 low 用的 fabric
LeungJZ
2018-03-14 09:09:49 +08:00
@yuanfnadi
关键是,runner 哪来?要在自己的服务器搭一个 runner,不搭 gitlab 吗?
tianakong
2018-03-14 09:18:43 +08:00
java 版的 Jenkins
php 版的 walle
horizon
2018-03-14 09:42:55 +08:00
用 docker 拉取 gitlab 仓库代码,执行构建脚本。拿到构建产物上传 CDN。。
LeungJZ
2018-03-14 09:59:42 +08:00
@horizon
那前置条件就是,如何提醒 docker 去拉取呢?还是得用上 webhook 吗?

@tianakong
walle 的看上去配置比较简单。
XyCinus
2018-03-14 12:19:28 +08:00
@LeungJZ Continuous Integration/Continuous Deploy (CI/CD) 持续集成 /持续部署
horizon
2018-03-14 16:46:49 +08:00
@LeungJZ 我们是自己做了一个发布平台,用户自己上去点部署。并不是每一次 push 都要构建的吧。。。
chen90902
2018-05-23 17:03:16 +08:00
@youEclipse docker+ jenkins,思路不错。小公司也想弄一套出来

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/437489

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX