Vue + GitLab 实现自动化部署

背景

 由于前端每次发布版本,需要手动打包,将dist包再登录服务器后,放入指定位置,这时需要考虑的问题就是,手动操作会出现打错包,包放错的问题,所以希望可以实现自动安装依赖,代码检查,打包,部署四个步骤一体化的过程

一、Linux 安装nginx

在Linux上安装NGINX的步骤如下:

  1. 打开终端(命令行界面)。

  2. 使用以下命令安装NGINX:

      • 对于Ubuntu/Debian系统:

        sudo apt-get install nginx
      • 对于CentOS/RHEL系统:

        sudo yum install nginx
  3. 等待安装完成。

  4. 使用以下命令启动NGINX服务:

      • 对于Ubuntu/Debian系统:

        sudo systemctl start nginx
      • 对于CentOS/RHEL系统:

        sudo service nginx start
  5. 访问服务器的IP地址或域名,如果看到NGINX的默认欢迎页面,则表示安装成功。

  如果你想修改NGINX的配置文件,你可以找到NGINX的配置文件路径(一般在/etc/nginx/目录下),然后使用文本编辑器进行修改。例如,可以使用以下命令打开配置文件:

sudo nano /etc/nginx/nginx.conf

完成修改后,保存并退出编辑器。然后,重新加载NGINX配置文件的命令为:

sudo systemctl reload nginx

  

二、linux 安装node

在Linux上安装Node.js可以按照以下步骤进行操作:

1.  打开终端,以管理员身份登录到Linux系统。确定你的Linux系统是基于Debian/Ubuntu还是基于Red Hat/CentOS。可以使用以下命令来确定你的Linux发行版:

 

cat /etc/os-release

或者 

lsb_release -a

 

2. 安装 nodejs

  • 在Debian/Ubuntu系统中,你可以使用以下命令来安装Node.js:
    sudo apt update
    sudo apt install nodejs
    

    如果你还需要安装Node.js的包管理工具npm,则可以使用以下命令:

    sudo apt install npm
  • 在Red Hat/CentOS系统中,你可以使用以下命令来安装Node.js:
    sudo yum update
    sudo yum install nodejs
    

    如果你还需要安装Node.js的包管理工具npm,则可以使用以下命令:

    sudo yum install npm
    // npm 配置指向淘宝镜像
    npm config set registry https://registry.npm.taobao.org/
    // 安装 yarn,yarn打包更快
    npm install -g yarn
    

      

三、linux 安装 git 

  1. 添加 End Point 到 CentOS 7 仓库

    sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
  2. 安装 Git

    sudo yum -y install git

  

四、 安装 gitlabRunner

  1. 添加官方 GitLab 存储库:

    对于 Debian/Ubuntu/Mint:

    curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
  2. 对于 RHEL/CentOS/Fedora:

    curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash
  3. 安装最新版本的 GitLab Runner,或跳到下一步 安装特定版本:

    对于 Debian/Ubuntu/Mint:

    sudo apt-get install gitlab-runner
    

    对于 RHEL/CentOS/Fedora:

    sudo yum install gitlab-runner
    

    4. 要安装特定版本的 GitLab Runner,请执行以下操作:

    • 对于基于 DEB 的系统:
      apt-cache madison gitlab-runner
      sudo apt-get install gitlab-runner=15.11.0
      

       

    • 对于基于 RPM 的系统:
      yum list gitlab-runner --showduplicates | sort -r
      sudo yum install gitlab-runner-15.11.0-1
    5. gitlab 中配置

 

 

 

 

 

 

 

  6.  启动运行器

gitlab-runner run

 

六、项目根目录新建 .gitlab-ci.yml文件

#缓存 node_modules/目录 下次构建不会删除
cache:
    paths:
        - node_modules/

stages: # 分段
    - install
    - eslint
    - build
    - deploy

# 1. 安装依赖阶段
install:
    tags:
        - web
    only:
        - test
    stage: install

    script:
        #判断文件是否存在
        - |
            pwd
            if [ !-f "package.json.md5" ];then
              echo "文件不存在,需要重新安装依赖"
              yarn install
              md5sum package.json > package.json.md5 #把文件的md5值写入到目标文件中
            else
              echo "文件已经存在"
              if [ md5sum -c package.json.md5 ];then #检查md5sum是否有变更
               echo "md5值一致"
              else
               echo "md5值不一致,需要重新安装依赖"
               yarn install
               md5sum package.json > package.json.md5
              fi
            fi

# 2. Eslint阶段
eslint:
    tags:
        - web
    only:
        - test
    stage: eslint
    script:
        - yarn run lint

# 3. 打包阶段
build:
    tags:
        - web
    only:
        - test
    stage: build
    script:
        - yarn run build:dev #打包可修改为yarn run build,我这边区分了测试环境
    artifacts:
        paths:
            - dist/

# 4. 将dist文件放在/root/web目录下
deploy:
    tags:
        - web
    only:
        - test
    stage: deploy
    script:
        - zip dist.zip ./dist
        - cp ./dist.zip /opt/project/test-web/ # /为根目录,可自己查看服务器根目录路径
        - cd /opt/project/test-web
        - cp -r dist /opt/project/web-bak/test/dist-`date +%y%m%d-%H:%M:%S` #主要用于备份dist文件
        - rm -rf dist #删除dist文件
        - unzip dist.zip #解压dist.zip文件
        - echo "deploy...finished"

   

八、安装

1. 压缩 dist 文件

yum install zip

2. 解压

yum install unzip

  

  

 

七、遇到的问题:

1. ERROR: Preparation failed: ssh command Connect() error: getting SSH authentication methods: open ~/.ssh/id_rsa: no such file or directory
原因: ~/.ssh/id_rsa 文件路径访问错误
解决办法:/root/.ssh/id_rsa
2. fatal: git fetch-pack: expected shallow list
 原因: Centos 7 服务器上默认安装的 Git 是 1.8.3.1 版本的 ,git 版本太低
解决办法: 更新 git 版本
a、卸载

首先,把老版本的 Git 卸掉。

sudo yum -y remove git
sudo yum -y remove git-*

b、安装

  1. 添加 End Point 到 CentOS 7 仓库

    sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
  2. 安装 Git

    sudo yum -y install git
  3. 查看安装后的 Git 版本、

    $ git version
    git version 2.36.0

3. FATAL: Failed to start gitlab-runner: exit status 5

1. 服务不存在

1. 查看服务是否存在
cd /etc/systemd/system/gitlab-runner.service 

a. 如果不存在则,重新安装
gitlab-runner install --working-directory /home/gitlab-runner --user gitlab-runner

b. 启动服务
gitlab-runner start

  

2. 原因:gitlab-runner -v 提示有安装版本,但执行 gitlab-runner  start / restart / stop 所有相关命令都提示failed

解决办法: 

a、gitlab 中删除 runner 后,新建 runner 

 

 

b、将新建的token在linux服务器中更换

[root@localhost gitlab-runner]# cd ~
[root@localhost ~]# cd /etc/gitlab-runner/
[root@localhost gitlab-runner]# vim config.toml 

 点击 i 进入编辑

 修改 token

 点击 esc 退出编辑,:wq 保存并关闭

c、观察 gitlab-runner 是否异常

gitlab-runner --debug run

4. ERROR: Preparation failed: ssh command Connect() error: getting host key callback: open /root/.ssh/known_hosts: no such file or directory

原因:未发现该文件

解决办法:在 config.toml 中新增内容如下

disable_strict_host_key_checking = true

打开文件请参照问题3

 

 5. npm ERR! Missing script: "build"

原因:“npm ERR! missing script: build” 错误通常发生在执行 npm run build 命令时,表示在 package.json 文件中未定义名为 “build” 的脚本。

// package.json
{
  "name": "my-project",
  "version": "1.0.0",
  "scripts": {
    "start": "node server.js"
    // 缺少 "build" 脚本
  },
  "dependencies": {
    // 依赖列表
  }
}

 

6. ssh: Could not resolve hostname : Name or service not known

 

7. npm install 太慢

解决办法:在linux服务器中 更换镜像源:使用淘宝镜像源或其他国内镜像源可以加速下载速度,可以通过以下命令进行设置

npm config set registry https://registry.npm.taobao.org/

  

8. cp: 无法创建普通文件"/sys/dev/Hello.java": 权限不够  

 解决办法:linux 给一个目录增加写入权限, 一般文件默认没有写入权限
chmod 777 fileName

  

9. cp: cannot create regular file ‘/root/opt/project/test-gitlab/’: No such file or directory

提示路径错误,解决办法:从服务器中查找且确认该路径是否正确,一般情况下是错的

ls /  

从根目录查看要找的路径,一层一层找,来确认路径是否正确

 

 

posted @ 2023-09-06 17:20  小短腿奔跑吧  阅读(722)  评论(0编辑  收藏  举报