使用 GitLab CI/CD 和阿里云 CLI 自动部署前端项目
一、什么是 CI/CD?
CI(持续交付)是功能迭代后自动构建、打包、校验代码格式、跑单测、单测覆盖率,常见的就是 Webpack、Rollup、ESLint等。
CD(持续部署)是经过 CI 后,代码自动部署到服务器。
在 GitLab 中部署 CI、CD
GitLab CI/CD 通 .gitlab-ci.yml 配置文件来部署。
cd project_path
touch .gitlab-ci.yml
创建一个简单的 CI/CD 配置:
# 指定使用的镜像
image: node:latest
# 执行步骤,依次执行
stages:
- install
- build
- deploy
# 安装依赖 job 下面的 stage 字段和 stages 下面的步骤一一对应
install-job:
stage: install
only: # 限定执行脚本的条件,only 支持 branch、tag、change、正则
- master
- develop
- master
script: # 此 stage 要执行的脚本
- npm i
# 打包
build-job:
stage: build
only:
- master
- develop
- master
script:
- npm run build
# 上传到服务器
deploy-job:
stage: deploy
only:
- master
- develop
- master
script:
- npm run deploy
.gitlab-ci.yml 常用配置:
| 配置 | 说明 |
|---|---|
| image | 镜像 |
| jobs | 如上所示:install-job、build-job 便是 jobs,是 .gitlab-ci.yml 最基本的元素。 |
| stages | 用来组合 jobs 按步骤工作,jobs 下面对应的 stage 和 stages 的子集对应。 |
| only | 指定 jobs 的执行场景,相对应的是 except。 |
二、什么是 CLI
CLI(命令行界面)和 CI 类似,都是解决重复劳动,例如用来初始化项目的 Vue-Cli、Create-React-App 和上传静态资源到阿里云的 aliyunoss-cli。
使用 aliyunoss-cli 自动上传阿里云 OSS
下载安装 CLI:
npm install aliyunoss-cli --save-dev
npx aliyunoss-cli --version
1.1.1
创建配置文件 alioss.config.json:
{
"region": "-",
"accessKeyId": "-",
"accessKeySecret": "-",
"bucket": "-"
}
在配置文件中添加各环境对应 OSS 路径:
{
"region": "-",
"accessKeyId": "-",
"accessKeySecret": "-",
"bucket": "-",
"releaseEnvConf": {
"dev": {
"source": "dist/",
"target": "home/dev/"
},
"pre": {
"source": "dist/",
"target": "home/pre/"
},
"prd": {
"source": "dist/",
"target": "home/prd/"
}
}
}
发布命令:
# 测试
npx aliyunoss-cli --releaseEnv dev
# 预发布
npx aliyunoss-cli --releaseEnv pre
# 生产
npx aliyunoss-cli --releaseEnv prd
直接使用命令行拼接参数指定路径:
# 测试
npx aliyunoss-cli --source dist/ --target home/dev/
配合 .gitlab-ci.yml 添加 script 命令行:
"deploy": "aliyunoss-cli --releaseEnv dev",
"publish": "npm i && npm run build && npm run deploy"
版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者后除和本文原始地址:https://blog.mazey.net/1695.html
使用 GitLab CI/CD 和阿里云 CLI 自动部署前端项目的更多相关文章
- 如何在阿里云linux上部署java项目
前2天把git练了下,敲了很多命令,也借助图形界面增强自己的理解,乘着余热把linux在熟悉下.然后想起以前婷主有让我帮忙搭建的阿里云服务器,所以就想自己试着在阿里云的linux上搭建自己的jav ...
- 阿里云服务器上部署java项目(安装mysql)
安装mysql步骤如下: 1.安装MySQL官方的yum repository: wget -i -c http://dev.mysql.com/get/mysql57-community-relea ...
- 图文并茂基于阿里云linux服务器部署nodejs项目并添加pm2守护nodejs项目运行进程(Linux version 4.19.81-17.1.al7.x86_64)
首先你要有一台LINIX服务器,登入以后按下面步骤执行命令,可查看系统版本以及配置 查看Linux 内核 通过 uname -a 命令查看系统位数是64位 x86_64表示64位系统, i686 i3 ...
- 阿里云服务器上部署java项目(安装jdk,tomcat)
安装JDK a.执行下面的yum指令安装,无线配置环境变量. 1.yum -y update #首先更新一下YUM源2.yum list Java* ---------#列出所有的JDK 3.yum ...
- GitLab CI/CD的官译【原】
CI / CD方法简介 软件开发的持续集成基于自动执行脚本,以最大限度地减少在开发应用程序时引入错误的可能性.从新代码的开发到部署,它们需要较少的人为干预甚至根本不需要干预. 它涉及在每次小迭代中不断 ...
- .NetCore 配合 Gitlab CI&CD 实践 - 开篇
引言 这是一个系列的文章,讲述的是一个中小型开发团队如何从零开始使用搭建基建 GitLab 代码托管平台,以及使用 GitLab Runner 实现 CI/CD 的故事.本系列通过部署一个完整的 .n ...
- .NetCore 配合 Gitlab CI&CD 实践 - 单体项目
前言 上一篇博文 .NetCore 配合 Gitlab CI&CD 实践 - 开篇,主要简单的介绍了一下 GitLab CI 的持续集成以及持续部署,这篇将通过 GitLab CI 发布一个 ...
- 官网GitLab CI/CD英文文档翻译
在查阅GitLab官网的CI/CD功能说明时,全是英文看起来不方便,通过翻译软件自动翻译后"内容失真",看起来很变扭.查阅了百度上的资料发现很多翻译很老旧,有些甚至是挂羊头卖狗肉. ...
- [转]GitLab Continuous Integration (GitLab CI/CD)
本文转自:https://docs.gitlab.com/ee/ci/README.html GitLab Continuous Integration (GitLab CI/CD) The bene ...
- 使用阿里云cli管理安全组
相比于python SDK方式,阿里云基于GO SDK开发了一整套CLI工具,可以通过调用RPC API来管理云资源,对编程能力不够的人来说是个福音. 而且,阿里云CLI的文档比SDK的文档更加全面, ...
随机推荐
- unrar命令
解压提取RAR压缩文件 语法格式:unrar 参数 压缩包 常用参数 e 将文件解压缩到当前目录 o - 不要覆盖现有文件 l 显示文件列表 p 设置压缩包密码 p 将文件显示到标准输出 r 递归处理 ...
- socket及黏包现象及解决黏包---day28
1.四次挥手(补充) 客户端向服务端发送一个请求消息,断开连接(代表客户端没有数据传输了) 服务端接收请求,发出响应 等到服务端所有数据收发完毕之后 服务端向客户端发送断开连接的请求 客户端接收请求后 ...
- chrome浏览器配置自定义搜索引擎
chrome谷歌浏览器配置自定义搜索引擎 放弃百度搜索已经酝酿许久,现在搜索结果简直不忍直视.如果你想放弃使用百度搜索,并转向其他搜索引擎,头条搜索可能是一个不错的选择. 使用以下方式可以丝滑的使用其 ...
- postgresql表结构查询sql
数据库表结构查询sql SELECT t1.attnum as "序号", t1.attname as "字段名", concat_ws ( '', t2.ty ...
- 【Azure Cloud Service(Extended Support)】如何使用外延服务迁移应用?
问题一:迁移到云服务扩展后,之前经典版的云服务的部署槽会变成单一的部署槽,关于两个云服务扩展版之间的部署交换能否提供一个演示? 对于具有双槽的云服务(Classic),根据文档中的建议,在迁移到云服务 ...
- BeanShell Sampler 前置处理器
一概念: 前置处理器主要作用: 用于修改即将发送的http的请求数据 BeanShell预处理器可以在取样器发送请求之前被执行,可以通过它完成发送请求所需的数据 其中的ctx.vars.props.p ...
- Codeforces Round 922 (Div. 2)(A~D)补题
A题考虑贪心,要使使用的砖头越多,每块转的k应尽可能小,最小取2,最后可能多出来,多出来的就是最后一块k=3,我们一行内用到的砖头就是\(\frac{m}{2}\)下取整,然后乘以行数就是答案. #i ...
- Codeforces Round 914 (Div. 2)A~C
A 反过来考虑,由皇后和国王的位置去寻找骑士的位置,当一个点既可以被皇后找到,也可以被国王找到时就说明这个点是满足条件的 #include <bits/stdc++.h> #define ...
- Vue3.x知识图谱
Vue3.x知识图谱 https://gitee.com/jishupang/vue3-knowledge-map/tree/master 回头有时间再贴图吧
- 数据湖-Hudi/IceBerg