Gitlab CI 自动打包推送dist到服务器

前端项目推送到master上自动build 打包并推送打包资源到服务器对应文件夹中

背景

前端项目部署,最基本的原理就是把html及css\js等资源放到服务器上,或通过nginx分发,或直接访问。普遍来说,通过nginx分发是常见办法,也可以一并处理跨域问题。
前端部署项目并没有太多复杂的配置,服务器配好nginx分发,把静态资源放到对应的服务器上的目录内,就OK。
所以利用gitlab的CI做自动打包、自动部署。

1. 服务器上nginx配置
  • 配置资源目录以及跨域转发
server {
    listen       80; # 监听端口
    server_name "xxx.xxx.xxx.xx"; # 可以是服务器IP,也可以是绑定的域名
    error_page   500 502 503 504  /usr/share/nginx/html/50x.html; # 错误页
    access_log  /var/log/nginx/host.access.log  main; # log目录

    location / {
        root   /etc/nginx/html/test; # 资源目录
        index  index.html index.htm; # index文件
    }

    location /api/ {  # 如果是/api/xxx 就发到 http://xxx.xx.xxx.xx:xxxx/xxx
        proxy_pass  http://xxx.xx.xxx.xx:xxxx/; # 接口转发地址
    }
}
2.项目CI配置
  • 首先配置私钥:Settings->CI/CD->Environment variables -> 写入私钥


  • 项目中添加.gitlan-ci.yml配置文件,写入
image: node # 使用node 镜像

build_test:
  only:
    - master # 只有master更新的时候才执行命令
  script: # 执行的命令
    - npm install  # 安装
    - npm run build # 打包
    - eval $(ssh-agent -s) # 使用ssh
    - bash -c 'ssh-add <(echo "$SSH_PRI_KEY")' # 缓存ssh key
    # 推送打包后的dist 文件夹的文件到服务器对应的文件夹内
    - scp -o StrictHostKeyChecking=no -r dist/* root@xxx.xx.xxx.xx:/etc/nginx/html/test/ 

然后每次master更新就会执行打包~

Pipelines:

Running with gitlab-runner 11.7.0 (8bb608ff)
  on fintek-runnner b1xoMf8b
Using Docker executor with image node ...
Pulling docker image node ...
Using docker image sha256:9289251188dedce7f1ddbb3edbd4473bec2e0f7ba25713c84e9da2625b95621a for node ...
Running on runner-b1xoMf8b-project-28-concurrent-0 via fintek-base-01...
Fetching changes...
Removing dist/
Removing node_modules/
HEAD is now at 535b637 Update README.md
From http://gitlab.91fintek.com/frontend/fastloan
   d25a0ad..9afc606  master     -> origin/master
Checking out 9afc6060 as master...
Skipping Git submodules setup
$ npm install

> uglifyjs-webpack-plugin@0.4.6 postinstall /builds/frontend/fastloan/node_modules/webpack/node_modules/uglifyjs-webpack-plugin
> node lib/post_install.js

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.7 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.7: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

added 1327 packages from 750 contributors and audited 11310 packages in 31.076s
found 17 vulnerabilities (1 low, 8 moderate, 8 high)
  run `npm audit fix` to fix them, or `npm audit` for details
$ npm run build

> fastloan@1.0.0 build /builds/frontend/fastloan
> node build/build.js

Hash: 4356a1a189ef9d6f7326
Version: webpack 3.12.0
Time: 37296ms
                                              Asset       Size  Chunks                    Chunk Names
                          static/img/bg.e709b51.png    59.1 kB          [emitted]         
            static/img/login-background.1677aba.jpg    90.6 kB          [emitted]         
             static/fonts/element-icons.6f0a763.ttf      11 kB          [emitted]         
                static/js/0.5b4b7d1da5d59b886716.js    2.74 kB       0  [emitted]         vendor-async
                static/js/1.2eb98e667282a8ae276f.js     688 kB       1  [emitted]  [big]  
                static/js/2.bb7b8fce953ccca48a5d.js    31.8 kB       2  [emitted]         
                static/js/3.769faa260c8e789843ca.js    8.45 kB       3  [emitted]         
                static/js/4.313ef90807138764470a.js    6.91 kB       4  [emitted]         
                static/js/5.8b3d9f9c5dd306fa3391.js    4.48 kB       5  [emitted]         
                static/js/6.30f2f609901d433dad37.js    7.71 kB       6  [emitted]         
                static/js/7.8f345ca1e44734d67aac.js    4.04 kB       7  [emitted]         
           static/js/vendor.c96b49ec238ea33118d9.js       1 MB       8  [emitted]  [big]  vendor
              static/js/app.b7174ee2dafd84d95201.js    28.2 kB       9  [emitted]         app
         static/js/manifest.1c45557a7cd708eb2313.js    1.58 kB      10  [emitted]         manifest
static/css/app.561e2411eb1445dc3a2c90753b709d69.css     194 kB       9  [emitted]         app
                                         index.html  626 bytes          [emitted]         
                                    static/logo.png    5.03 kB          [emitted]         

  Build complete.

  Tip: built files are meant to be served over an HTTP server.
  Opening index.html over file:// won't work.

$ eval $(ssh-agent -s)
Agent pid 64
$ bash -c 'ssh-add <(echo "$SSH_PRI_KEY")'
Identity added: /xx/xx/xx (xx@fxxxxxxx.xx)
$ scp -o StrictHostKeyChecking=no -r dist/* root@xxx.xx.xxx.xx:/etc/nginx/html/test/
Warning: Permanently added 'xxx.xxx.xxx.xxx' (ECDSA) to the list of known hosts.
Job succeeded
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,039评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,426评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,417评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,868评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,892评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,692评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,416评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,326评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,782评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,957评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,102评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,790评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,442评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,996评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,113评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,332评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,044评论 2 355

推荐阅读更多精彩内容