首页 > 其他分享 >持续集成指南:Gitlab CI/CD 自动部署前端项目

持续集成指南:Gitlab CI/CD 自动部署前端项目

时间:2022-09-30 22:44:14浏览次数:73  
标签:CI code Gitlab CD nginx build docker

前言

之前陆续写了 Gitlab 的安装使用还有 Gitlab CI/CD 的配置使用,已经把 AspNetCore 的后端项目都做了持续集成了,尝到甜头之后,现在前端的项目也要加入自动化部署,所以经过一番折腾,有了本文~

前文回顾:

跟之前的 AspNetCore 项目操作差不多,我依然使用 docker 部署的方式,不依赖服务器环境,就一个方便优雅~

Docker配置

我第一次用 docker 来构建前端项目,遇到很多坑,不过最终还是参考我之前的 DjangoStarter 项目和 AspNetCore 的 Dockerfile 搞定了~

思路是两个容器,一个 node 容器用来编译项目,另一个 nginx 用来提供静态文件服务,也就是说我把项目 build 出来之后,直接在容器里提供web服务,不复制出来放到服务器共享的 nginx 里了。

然后再服务器的 nginx 里做一下转发,就跟原来的使用体验一样了。(或者不转发直接用也行,取决于实际情况)

在 docker 里使用 nginx 更好,这体现在配置复杂度、权限管理、安全/审计检查之类的方面上,我就不展开了,用就完事了~

Dockerfile

FROM node:lts-alpine as build

RUN mkdir /code
WORKDIR /code

ADD package.json /code
RUN npm install --registry=http://registry.npmmirror.com

ADD . /code
RUN npm run build

FROM nginx:alpine as final
LABEL maintainer="DealiAxy <[email protected]>"

COPY --from=build /code/dist/ /usr/share/nginx/html/

EXPOSE 80

注意在nginx容器内的 COPY 一定要设置 --from 参数,不然是读取不到 node 容器里 build 好的文件的~

完成之后这个 Dockerfile 文件就是固定的,以后没有特殊情况都不需要修改了~

docker-compose.yml

没啥好说的了,其实这个 compose 也可以省略,只是我不想打 docker 命令偷懒而已~

version: '3.4'

services:
  web:
    restart: always
    build:
      context: .
    ports:
      - "8080:80"

Gitlab CI配置

没啥特别的

variables:
  GIT_STRATEGY: none
stages:
  - deploy
deploy_job:
  stage: deploy
  only:
    - master
  script:
    - cd /home/gitlab-runner/projects/0_frontend/dashboard-front
    - rm -rf dashboard-front
    - git clone http://127.0.0.1:8080/deali/dashboard-front.git
    - cd dashboard-front
    - docker-compose up --build -d

小结

搞定,第一次搞这个还是遇到了很多坑,所幸没有放弃然后把问题一步步解决了。

之后每个项目只需要修改 docker-compose.yml 文件指定开放端口和 .gitlab-ci.yml 文件指定要构建的文件夹即可,比原来手动构建发布方便很多。

参考资料

注意:参考资料的这篇文章里 Dockerfile 是错的,请以本文为准。

抛开错误,参考资料这篇文章还是有些地方可以参考一下,请自行验证~

标签:CI,code,Gitlab,CD,nginx,build,docker
From: https://www.cnblogs.com/deali/p/16746454.html

相关文章

  • LCD屏幕驱动解析(一)如何在LCD屏幕上画出点和线
    ============= 目标 =====================如何在LCD屏幕上画出点和线=======================================一、学习体悟1.如何编写测试程序?如何与makefile综合起来......
  • devops学习笔记-jenkins实现基础CI/CD操作
    在之前的devops工具链中完成了jenkins以及gitlab配置之后,可以实现基础的CI/CD操作。操作流程整体的操作的流程如下所示:在开发环境配置好代码之后,将代码上传到gitlab,jenkins......
  • 如何获取Citrix授权?
    我们聊到关于CitrixSD-WAN的问题,那当我们拿到一台SD-WAN设备时,第一步要做的就是激活设备,那就跟着小壳一起来看看如何获取Citrix设备的授权。一、账号注册 首先登录htt......
  • gitlab拉取指定目录
    1.新建目录mkdirgit2.初始化本地目录gitinit3.启用过滤的配置项gitconfigcore.sparsecheckouttrue4.想要拉取哪个文件夹,就将其写入下述文件中,注意.git......
  • gitlab备份迁移
    1.备份#/bin/bash#用途:备份gitlabDAY=`date+%Y-%m-%d`BAK_DIR=/data/backup/chown-Rgit.git$BAK_DIRmkdir-p$BAK_DIR/logs/gitlab-rakegitlab:backup:cr......
  • IfcDynamicViscosityMeasure
    IfcDynamicViscosityMeasure类型定义IfcDynamicViscosityMeasure是对介质粘性阻力的测量。通常以帕斯卡秒(Pas)测量。类型:REALIFC2.0中的新类型。  EXPRESSSpeci......
  • IfcElectricCapacitanceMeasure
    IfcElectricCapacitanceMeasure类型定义IfcElectricCapacitanceMeasure是对电容的测量。通常以法拉(F,C/V=As/V)测量。类型:REALIFC2x中的新类型。  EXPRESSSpecif......
  • Syncios Data Transfer for Mac(IOS数据传输工具)
    想要在Mac电脑上实现手机之间的一键式传输?SynciOSDataTransferformac是一款ios设备数据传输工具,借由这款软件你可以将iphone与Android设备中的数据互相传输,支持传输的数......
  • CDN的缓存与回源机制解析
    CDN(ContentDeliveryNetwork,即内容分发网络)指的是一组分布在各个地区的服务器。这些服务器存储着数据的副本,因此服务器可以根据哪些服务器与用户距离最近,来满足数据的......
  • 基于信迈AM5728_am5718开发板的LCD触摸屏接口
    1开发套件简介 基于TIAM5728浮点双DSPC66x+双ARMCortex-A15工业控制及高性能音视频处理器;多核异构CPU,集成双核Cortex-A15、双核C66x浮点DSP、双核PRU-ICSS......