gitlab CI/CD 自动化部署vue项目到阿里云服务器步骤

news2025/2/22 12:41:05

目录

    • 1,gitlab托管vue项目
    • 2,本地项目连接到远程仓库
    • 3,设置gitlab-runner
    • 4,编写yml文件
    • 5,部署到阿里云服务器(本地设置)
      • 5.1 安装相关依赖
      • 5.2 vue项目中添加deploy.js文件
      • 5.3 注册deploy命令
      • 5.4 验证deploy.js
    • 6,部署到阿里云--gitlab设置
    • 7,遇到的问题。

1,gitlab托管vue项目

只要用过git托管工具的,相信这一步都是没问题的。
先在gitlab中创建一个空的项目。
新建一个分支。
这时候,仓库是空的。
在这里插入图片描述

2,本地项目连接到远程仓库

在本地创建一个vue项目,vue-cli创建即可。
将本地项目连接远程仓库。
可见博客本地项目连接远程仓库

3,设置gitlab-runner

这是CI/CD流程中,比较重要的步骤,后序的流程都依赖于这个runner进行。
可见专门写的一个博客安装gitlab-runner步骤
保证gitrunner安装成功。
重要的是,一个gitlab项目有专属的gitlabRunner,不同的项目需要注册多个runner。

4,编写yml文件

yml文件的所在的位置:
在这里插入图片描述
我的简单的yml文件,需要深究内容,里面大有学问,可以在shell脚本中去配置一些内容,可以进行优化项目打包编译部署的过程。可见(gitlab-ci.yml的配置参照官网)

stages:
  - install-build-job
  - deploy_pages
# 部署所需要的环境
image: node:15.14.0
# 缓存(默认情况下,每个pipelines和jobs中可以共享一切,从GitLab 9.0开始)
cache: {}
# 构建工作并且编译
install-build-job:
    # stages中的一个job
  stage: install-build-job
  # 只有在dev和master分支才触发CICD
  only:
    - dev
    - master
  # 运行指定tag的gitlab-runner
  tags:
    - platform-tag
  # 在执行命令前执行的操作
  before_script:
    - chcp.com 65001
  # 命令操作
  script:
    - npm config set registry https://registry.npm.taobao.org/
    - npm install
    - npm run build
  # 在执行命令后执行的操作
  after_script:
    - rm -r node_modules/*
  # 制品,即build之后的生成物
  artifacts:
    paths:
      - dist/*

这时候就可以保存yml文件,看一下流水线是否运行成功。
出现绿色的标志就可。
在这里插入图片描述

5,部署到阿里云服务器(本地设置)

在进行这部分时候,首先要保证你已经开通了阿里云服务器的账号。
并且在阿里云服务器上安装了nginx服务器。
没有安装的朋友可以参照阿里云服务器安装nginx
在做这个实验的时候,可以看一下这个博客服务器手动部署vue项目,理解一下发布vue项目的内在原理。
我们使用gitlab自动化部署正是省略掉了手动部署这一步。
无论自动化部署还是手动部署,万变不离其宗。

5.1 安装相关依赖

首先安装依赖

npm i scp2
npm i ora
npm i ssh2

5.2 vue项目中添加deploy.js文件

添加deploy.js命令最好放在package.json 文件的同级目录下

deploy.js内容

const scpClient = require('scp2')
const ora = require('ora')
const loading = ora('正在部署中');
const Client = require('ssh2').Client;
let inputArr = ['服务器用户名','服务器密码']
let server = {}
// 依次执行命令行交互语句
function runQueLoop() {
        server["username"] = inputArr[0]
        server["password"] = inputArr[1]
        deployFile()
}
function deployFile() {
    const service = {
        host: '填自己的',//服务器IP
        port: 22,//服务器端口
        username:server.username,//服务器ssh登录用户名
        password: server.password,//服务器ssh登录密码
        path: '/'//服务器web目录
    }
    var conn = new Client();
    conn.on('ready', function () {
        // 删除上个版本的文件
        conn.exec('rm -rf /project/vue/vuePre/dist/*', function (err, stream) {
            if (err) throw err;
            stream.on('close', function (code, signal) {
                loading.start();
                scpClient.scp(
                    './dist', service,
                    function (err) {
                        loading.stop();
                        if (err) {
                            console.log('发布失败!');
                            throw err;
                        } else {
                            console.log('成功发布!');
                        }
                    }
                );
                conn.end();
            }).on('data', function (data) {
                console.log('STDOUT: ' + data);
            }).stderr.on('data', function (data) {
                console.log('STDERR: ' + data);
            });
        });
    }).connect(service);
}
runQueLoop()

5.3 注册deploy命令

在这里插入图片描述

5.4 验证deploy.js

本地:

npm run build
npm run deploy

运行之后,看是否显示发布成功
在这里插入图片描述
如果没有,就看一下服务器的相关信息是否写对。
最好之前,将服务器设置免密登录。
简单原理就是将本地的公钥上传到服务器端即可。

6,部署到阿里云–gitlab设置

直接修改yml文件即可。主要修改的地方就是 job_deploy_test 步骤,也是和配置到gitlab page中不同的地方。

stages:
  - install-build-job
  - deploy
# 部署所需要的环境
image: node:15.14.0
# 缓存(默认情况下,每个pipelines和jobs中可以共享一切,从GitLab 9.0开始)
cache: {}
# 构建工作并且编译
install-build-job:
    # stages中的一个job
  stage: install-build-job
  # 只有在dev和master分支才触发CICD
  only:
    - dev
    - master
  # 运行指定tag的gitlab-runner
  tags:
    - platform-tag
  # 在执行命令前执行的操作
  before_script:
    - chcp.com 65001
  # 命令操作
  script:
    - npm config set registry https://registry.npm.taobao.org/
    - npm install
    - npm run build
  # 在执行命令后执行的操作
  after_script:
    - rm -r node_modules/*
  # 制品,即build之后的生成物
  artifacts:
    paths:
      - dist/*
# 构建工作-部署阿里云服务器
job_deploy_test:
 stage: deploy
 tags:
    - platform-tag
 only:
   - master
 script:
   - echo 'job start'
   - npm run deploy

7,遇到的问题。

看了很多的博客,都是可以使用scp写脚本,直接可以将生成的dist文件移动到阿里云服务器上。
我使用本地的powershell,手动移动dist文件是没有问题的,可以顺利移动。
但是我在giblab的yml文件中,写了同样的语句,但是会超时连接。
有解决这个问题的uu,可以帮忙解答一下,感谢感谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/28910.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文本生成图像工作简述2--常用数据集分析与汇总

文本到图像的 AI 模型仅根据简单的文字输入就可以生成图像。用户可以输入他们喜欢的任何文字提示——比如,“一只可爱的柯基犬住在一个用寿司做的房子里”——然后,人工智能就像施了魔法一样,会产生相应的图像。 文本生成图像(te…

实验2:Arduino的nRF24L01双向收发实验

实验结果: 00节点向01发送:00ReqMesFor01 01节点向00发送:CodeNewNiceBoy 并且在串口打印出相应信息 硬件电路: 01 软件 00节点代码: /*00 */#include <SPI.h> #include <nRF24L01.h> #include <RF24.h> RF24 radio(9, 10);// CE, CSNconst char te…

dolphinscheduler 2.0.5 性能手动测试

目录&#x1f42c;官方配置文件说明&#x1f42c;测试并发量&#x1f420;线程数量设置100&#x1f420;线程数量设置200&#x1f420;线程数量设置500&#x1f42c;测试结论&#x1f42c;官方配置文件说明 官方说明 master.exec.threads&#xff1a; master工作线程数量,用于…

智能晾衣架(二)--功能实现

本文素材来源于红河学院 工学院 作者&#xff1a;赵德森 张艺锦 潘志慧 曹紫康 指导老师&#xff1a;江洁 张龙超 1. 自动升降功能 我们设计时采用了热释电传感器&#xff08;人体红外传感器&#xff09;&#xff0c;在热释电传感器感应到有人靠近时&#xff0c;晾衣架通…

C++:内存管理:C++内存管理详解(二):带你攻破内存管理

前言&#xff1a; 任何程序运行起来都需要分配内存空间存放该进程的资源信息&#xff0c;C程序也不例外。C程序中的变量、常量、函数、代码等等信息所存放的区域都有所不同&#xff0c;不同的区域又有不同的特性。 欺骗C进程 每一个C语言的程序被执行起来的时候系统为了方便开…

字符串的简单介绍和字符串的大小比较

以前就写过一篇关于String的文章&#xff0c;今天再来写一篇&#xff0c;更加深入了解一下String类 &#x1f550;1.String类的定义 &#x1f551;2.String类的创建 &#x1f552;3.字符串的大小比较 1.之前在C语言中我们已经学到了字符类型&#xff0c;但是C语言没有Strin…

Oracle-Rman duplicate文件坏块问题处理ORA-19849 19612

前言: 最近&#xff0c;在使用rman duplicate进行备库环境搭建时&#xff0c;遇到了ORA-19849 19612坏块报错&#xff0c;最终分析是发现由于网络的配置导致。 问题: 在 ORACLE 12.2.0.1.180417 通过RMAN duplicate进行备库初始化&#xff0c;在复制文件的过程中&#xff0c;…

FTP服务器移植到Linux开发板

FTP服务器移植到Linux开发板 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录FTP服务器移植到Linux开发板前言一、vsftpd源码下载二、vsftpd移植及配置1.vsftpd移植2.vsftpd配置2.1 配置vsftpd.conf2.2 添加新用户2…

LVS+Keepalived群集

目录 一.keeepalived工具介绍 1.1 专为LVS和HA设计的一款健康检查工具 1.2 Keepalived实现原理剖析 1.3 VRRP工作过程 1.4 Keepalived&#xff0c;VRRP及其工作原理 1.5 Keepalived体系主要模块及其作用 二、LVSKeepalived 高可用群集的搭建步骤 1、配置负载调度器&…

项目管理(PMO的作用)

项目管理办公室 (PMO) 是对与项目相关的治理过程进行标准化&#xff0c;并促进资源、方法论、工具和技 术共享的一个组织结构。PMO 的职责范围可大可小&#xff0c;从提供项目管理支持服务&#xff0c;到直接管理一个 或多个项目。 PMO的三种类型&#xff1a; PMO的作用&#…

ppt背景图片怎么设置?6步教你快速搞定!

在制作 ppt的过程中&#xff0c;需要将一些内容进行设置&#xff0c;来保证整体美观&#xff0c;也就是将背景图片设置好。背景图片设置的好&#xff0c;可以很好地体现页面上的内容&#xff0c;提高页面上的内容展示效果。所以大家在制作 ppt时&#xff0c;需要将一些背景图片…

进程和线程详解

目录 前言&#xff1a; 操作系统定位 并发 并行 并发 进程 描述 PCB 管理 内存管理 进程间通信 线程 小结&#xff1a; 前言&#xff1a; 当一个程序运行起来时&#xff0c;操作系统要为之分配一些资源&#xff0c;这样的运行起来的程序称之为一个进程。为了有效解…

huffman编译码

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 利用哈夫曼编码进行信息通信可以较大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码;在接收端将传来的数据进行译码(复原)。对…

Python期末复习题:文件

Python期末复习题&#xff1a;文件 文章目录Python期末复习题&#xff1a;文件一、二手房数据统计二、学生成绩统计一、二手房数据统计 附件文件house.csv 中存储一些二手房数据&#xff0c;中文编码为GBK&#xff0c;对文件中的数据进行统计分析。 文件中数据格式如下所示&…

理解Attention机制的query key value

背景 在Attention机制引入前&#xff0c;自然语言处理里的深度学习模型有以下缺点&#xff1a; 长序列的推理存在信息损失/梯度消失&#xff1a;输入序列越长&#xff0c;模型越难保存初始输入信息。运算量大并且不能并行&#xff1a;RNN的每一步推理都是基于上一个步的结果。…

Python小游戏自己动手编写,你能写出几个(分享版)

今天分享一个有趣的Python游戏库freegames&#xff0c;它里面包含经典小游戏&#xff0c;像贪吃蛇、吃豆人、等等。可以通过1行代码重温这些童年小游戏&#xff0c;后面还会分享源码&#xff0c;可以自己学习游戏编写&#xff0c;相信你会超有成就感&#xff01; Paint 涂鸦 在…

Springboot Websocket一般封装方法

此方法不是唯一&#xff0c;只是自己对于Springboot中关于Websocket处理思路比较清晰的一种&#xff0c;在此记录下来。总共不过就四个文件而已。 一、创建Springboot项目&#xff0c;添加不可或缺的pom <dependency><groupId>org.springframework.boot</grou…

内存模块 --- 基础扫盲

SDRAM synchronous dynamic random-access memory 同步动态随机存储器 同步&#xff1a;需要同步时钟支持工作&#xff0c;内部命令的发送与数据的传输都是以这个时钟为基准 动态&#xff1a;内部的存储阵列需要不断地刷新来保证数据不丢失 随机&#xff1a;可以自由地在指定地…

MyBatis进阶版

本文有点难 目录 1.一些区分 1.1参数占位符#{}和${} 1.1.1SQL注入 1.1.2like查询 1.2resultType和resultMap 2.映射查询 2.1一对一表映射 2.2一对多表映射 3.动态SQL 3.1标签 3.2标签 3.3标签 3.4标签 3.5标签 1.一些区分 1.1参数占位符#{}和${} ①什么是#{}&a…

【CSS】表布局,浮动布局

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录表布局表层表标题(caption)border-collapse边框隐藏表大小table-layout(表宽度)vertical-align例…