Vue + GitLab 实现自动化部署
背景
由于前端每次发布版本,需要手动打包,将dist包再登录服务器后,放入指定位置,这时需要考虑的问题就是,手动操作会出现打错包,包放错的问题,所以希望可以实现自动安装依赖,代码检查,打包,部署四个步骤一体化的过程
一、Linux 安装nginx
在Linux上安装NGINX的步骤如下:
-
打开终端(命令行界面)。
-
使用以下命令安装NGINX:
-
对于Ubuntu/Debian系统:
sudo apt-get install nginx
-
对于CentOS/RHEL系统:
sudo yum install nginx
-
-
等待安装完成。
-
使用以下命令启动NGINX服务:
-
对于Ubuntu/Debian系统:
sudo systemctl start nginx
-
对于CentOS/RHEL系统:
sudo service nginx start
-
-
访问服务器的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
-
添加 End Point 到 CentOS 7 仓库
sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
-
安装 Git
sudo yum -y install git
四、 安装 gitlabRunner
-
添加官方 GitLab 存储库:
对于 Debian/Ubuntu/Mint:
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
-
对于 RHEL/CentOS/Fedora:
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash
-
安装最新版本的 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
- 对于基于 DEB 的系统:
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
七、遇到的问题:
首先,把老版本的 Git 卸掉。
sudo yum -y remove git sudo yum -y remove git-*
b、安装
-
添加 End Point 到 CentOS 7 仓库
sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
-
安装 Git
sudo yum -y install git
-
查看安装后的 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": 权限不够
chmod 777 fileName
9. cp: cannot create regular file ‘/root/opt/project/test-gitlab/’: No such file or directory
提示路径错误,解决办法:从服务器中查找且确认该路径是否正确,一般情况下是错的
ls /
从根目录查看要找的路径,一层一层找,来确认路径是否正确