一、创建一个简单的vue项目

1.在gitlab上创建一个前端项目,拉取到本地。

2.在idea中快速构建一个vue项目,前提是本地已经安装了node.js

安装命令如下

#使用淘宝镜像
npm install --registry=https://registry.npm.taobao.org
#保证环境中有webpack
npm install -g webpack 
#全局安装vue-cli脚手架
npm install -global vue-cli
#创建一个基于webpack模板的项目
vue init webpack
#安装依赖
npm install
#运行当前vue项目
npm run dev

在idea中的Terminal中输入命令

二、相关的配置更改

1.更改项目的端口,默认为8080,我这里改为8099

2.编写nginx的配置文件ci-nginx.conf,主要就是监听了8099端口

server {
    listen 8099;
    listen [::]:8099;
    # 接口服务的IP地址
    server_name ci-vue-docker;
    charset utf-8;
    access_log off;

    root /var/www/html;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root html;
    }
}

3.编写Dockerfile,nginx作为镜像,将dist上传到/var/www/html,将ci-nginx.conf配置文件传到/etc/nginx/conf.d,并删除nginx默认的配置,对外端口改为8099

FROM nginx
COPY dist /var/www/html
COPY ci-nginx.conf /etc/nginx/conf.d/
RUN rm /etc/nginx/conf.d/default.conf
EXPOSE 8099
CMD ["nginx","-g","daemon off;"]

4.编写.gitlab-ci.yml文件

简单说明一下,这里分为三个阶段,build为打包阶段,主要用npm命令,deploy发布阶段,主要用docker命令,同样也是要先停止容器,再删除容器,最后删除镜像,再构建镜像。不然下一次就会导致镜像已经存在无法构建的问题。

stages:
  - test
  - build
  - deploy

test:job:
  stage: test
  script:
    - echo "test job"

build:job:
  stage: build
  script:
    - echo "build job"
    - npm config set strict-ssl false
    - npm set registry https://registry.npm.taobao.org
    - npm install
    - npm run build
  artifacts:
    expire_in: 1 week
    paths:
      - dist

deploy:job:
  image: docker
  stage: deploy
  script:
    - echo "deploy job"
    - docker ps -a|grep ci-vue-docker &&  docker stop ci-vue-docker && docker rm ci-vue-docker || echo "not exist"
    - docker images |grep  ci-vue-docker && docker rmi -f ci-vue-docker || echo  "not exist"
    - docker build -t ci-vue-docker .
    - docker run -d --name ci-vue-docker -p 8099:8099 ci-vue-docker

三、结果验证

1.pipeline执行结果,三个阶段都是成功的。

2.页面访问结果,可以访问

四、总结出现的问题

1.无法下载上一个job上传的artifacts的问题,

错误描述

Downloading artifacts for Mavenbuild:artifact (11969)...
ERROR: Downloading artifacts from coordinator... forbidden  id=11969 responseStatus=403 Forbidden status=403 Forbidden token=xxx
FATAL: permission denied                           
ERROR: Job failed: exit code 1

解决方法,不用代理当前服务器

deploy:job:
  image: docker
  stage: deploy
  script:
    - echo "deploy job"
    - docker ps -a|grep ci-vue-docker &&  docker stop ci-vue-docker && docker rm ci-vue-docker || echo "not exist"
    - docker images |grep  ci-vue-docker && docker rmi -f ci-vue-docker || echo  "not exist"
    - docker build -t ci-vue-docker .
    - docker run -d --name ci-vue-docker -p 8099:8099 ci-vue-docker
#一开始出现的一个无法代理的问题,百度找了一个说这么搞就好了,但是后来去掉了也没问题
#  variables:
#    HTTP_PROXY: http://proxy:80
#    HTTPS_PROXY: http://proxy:80
#    NO_PROXY: 192.168.80.5,gitlab.xxx.com

2.npm install ERR! code E400/E404,npm下载依赖错误,找不到,升级服务器的npm

npm rebuild node-sass
npm update
npm install -g npm  
npm -v

好了,就写这么多了,每天写一点,每天就都有进步。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐