Github Actions简单部署一个vue/react项目
大体介绍
本文对github actions部署前端项目做一个简单的总结,总体来说,我感觉用它想要部署一个前端项目,可以说非常简单,简单得令人震惊。但是高度的封装,会让人没有那种以前travis书写shell的畅快体验感。
不过这也是github actions的初衷所在:开发者不用自己写很多脚本,而是直接拿别人写好的action,经过自己的搭配组合,形成自己项目的脚本。 所以从其诞生来说,就是为了共享而生,如果你无法忍受你的脚本里出现什么Bob、Nancy、Jack这样的字眼,选择自己手撸,那也就意味着你放弃了github actions的优势。
所以,这是一种天生的拿来主义,你可以在市场marketplace里自由挑选,搭配组合。
给项目一个token️
首先我们需要给即将开启github actions的项目一个token,这步操作的目的是给shell脚本的一些行为授权,正所谓没有规矩不成方圆,试想一下,假设有很多人都能向一个项目推送代码,假设某个小子突然有一天推送了一个脚本,这个脚本的目的是为了删除项目,然后项目真的被删除了,其他人都没得玩了。
所以这里必须要有一个授权的过程:只有该github所有者的做了某一步只能他自己完成的操作,给项目颁发了一个具有某些权限的令牌(权限完全由所有者配置),该项目的脚本拿到这个令牌,才能做一些权限内的事情。
首先进入github主页-->Settings-->Developer settings-->Personal access tokens-->Generate new token生成token,注意这里会让你输入密码,这就是为什么说这个授权的操作只能由github所有者本人来完成。
生成token时,你可以自由配置这个token所拥有的权限,勾选️得越多,这个token权限越高,像一个持续集成部署的token,我并不希望它拥有过多的权限,所以只勾选了repo项目基础权限和workflow工作流权限,足矣。
生成token后,复制它,然后切换到你希望开启github actions的项目目录中,依次点击该项目的Settings-->Secrets-->New Secrets。
将刚刚复制的token粘贴进去,并取一个名字,保存。一般这种大家都很喜欢叫ACCESS_TOKEN。当然喜欢叫其他的名字也可以,但是后面的脚本也要跟着改。 `
配置项目路径
关于如何创建一个react/vue项目,这里不再赘述,因为这确实属于非常基础的操作了。我们打开项目的package.json,配置一下项目地址。这一步的操作是为了确定项目的根目录,项目在加载js,css等资源文件时能引用到正确的路径。
格式为:https://[你的github用户名].github.io/[你的项目名]。对照着图中改一下即可。
为项目开启actions
将上一步配置好的项目路径推送到远程,进入项目主页,可以看到一个很醒目的Actions。
点击Actions-->set up a workflow yourself,就会进入到一个yml文件的编辑页面,这个脚本默认放在项目根目录/.github/workflows/下面,然后书写以下脚本:
name: CI
on:
push:
branches:
- master
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
persist-credentials: false
# react项目为npm run-script build,vue项目改为npm run build
- name: Install and Build
run: |
npm install
npm run-script build
# react项目的FOLDER为build,vue项目改为dist
- name: Deploy
uses: JamesIves/github-pages-deploy-action@releases/v3
with:
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
BRANCH: gh-pages
FOLDER: build
首先我们形成一个基本的观念,对于一个workflow来说,从大到小可以按以下划分: workflow(最大) --> job --> step --> action(最小)
然后依次解释一下这个shell脚本。
name。这个工作流的名称,没什么好说的。
name: CI
on。定义工作流触发的时机,这里表示master分支有push事件时,本工作流会触发。
on:
push:
branches:
- master
jobs。表示任务,可以有多个任务,注意,如果不特殊指定,️多个任务默认是同时执行的,我们可以通过设定needs来控制执行顺序,如下面的shell脚本,表示当first job执行完后才执行second job。
jobs:
first_job:
second_job:
needs: first_job
而对于当前项目来说,拆分多个job感觉有点没必要,因为一共也就才那么几行shell脚本,我们写在一个job里面就好。
runs-on,指定这个工作流会运行在哪个虚拟机,可选windows、macos、ubuntu,除了辣鸡windows,其他两个都可以,默认的是ubuntu。
runs-on: ubuntu-latest
steps表示当前任务下的步骤,一个或多个都可以,从上到下依次执行。每个step可指定以下字段:
name步骤名run步骤执行的命令env步骤所需环境uses步骤使用的actions,可以是一个或多个
steps:
- name: Checkout
uses: actions/checkout@v2
with:
persist-credentials: false
# react项目为npm run-script build,vue项目改为npm run build
- name: Install and Build
run: |
npm install
npm run-script build
# react项目的FOLDER为build,vue项目改为dist
- name: Deploy
uses: JamesIves/github-pages-deploy-action@releases/v3
with:
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
BRANCH: gh-pages
FOLDER: build
这里首先第一步为Checkout,用到了一个checkout的action,其作用是拉取你的代码;
第二步为Install and Build,其作用就是安装依赖、打包。
第三步为Deploy,用到了一个名叫JamesIves写的action,我们传入一些基本配置,比如权限钥匙ACCESS_TOKEN,要推送的分支BRANCH,取打包好的静态文件目录FOLDER。
注意️:shell脚本文件是严格缩进的,因为它需要根据空格个数来区分数据结构。如果你的脚本运行报错了,首先检查一下shell的缩进是否正确。
写在最后
在master分支提交脚本后,等待工作流️跑完(工作流流水线和日志可点击项目的Actions入口进入查看)。
打开之前在package.json文件书写homepage地址,即可看到如下效果:
Github Actions简单部署一个vue/react项目的更多相关文章
- 使用Linux、Nginx和Github Actions托管部署ASP.NET Core 6.0应用
使用Linux.Nginx和Github Actions托管部署ASP.NET Core 6.0应用 前言 本文主要参考微软这篇文档而来 Host ASP.NET Core on Linux with ...
- 用GitHub Actions自动部署Hexo
什么是 GitHub Actions ? GitHub Actions 是一个 CI/CD(持续集成/持续部署)工具,GitHub 于 2018 年 10 月推出,正式版于 2019 年 11 月正式 ...
- 学习一个Vue模板项目
最开始学习Vue的时候,不建议直接使用模板,而应该自己从头写起.模板都是人写的,要坚信"人能我能".只有自己亲自实践,才能促进自己主动思考,才能对模板.框架有深刻的理解. 在Git ...
- 【vue】创建一个vue前端项目,编译,发布
npm: Nodejs下的包管理器. webpack: 它主要的用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源做相应的准备,比如资源的合并和打包. vue-cli: 用户生成Vue工 ...
- webpack 打包和手动创建一个vue的项目
首先我们为啥要用webpack,为啥不用其他的打包的工具. 先听我捋捋, Webpack有人也称之为 模块打包机 ,由此也可以看出Webpack更侧重于模块打包,当然我们可以把开发中的所有资源(图片. ...
- eclipse配置tomcat,并部署一个Java web项目到tomcat上
引用链接:https://blog.csdn.net/cincoutcin/article/details/79408484 eclipse配置tomcat 1.windows——preference ...
- 前端项目优化 -Web 开发常用优化方案、Vue & React 项目优化
github github-myBlob 从输入URL到页面加载完成的整个过程 首先做 DNS 查询,如果这一步做了智能 DNS 解析的话,会提供访问速度最快的 IP 地址回来 接下来是 TCP 握手 ...
- 基于 Github Actions 自动部署 Hexo 博客
前言 前不久使用了 Hexo 搭建独立博客,我是部署在我的腾讯云轻量应用服务器上的,每次都需要 hexo deploy 然后打包.上传.解压和刷新 CDN,非常麻烦.我的服务器配置也不高 2C2G 无 ...
- 使用 Github Actions 自动部署 Angular 应用到 Github Pages
前言 最近在学习 Angular,一些基础的语法也学习的差不多了,就在 github 上新建了一个代码仓库,准备用 ng-zorro 搭个后台应用的模板,方便自己以后写些小东西时可以直接使用.前端项目 ...
随机推荐
- Vue中解决新脚手架3创建项目的移动端双击屏幕放大,双手拉动放大的方法
替换新版vue-cli创建项目的public>index.html <!DOCTYPE html> <html lang="en"> <head ...
- python2.7 函数的参数学习
1.默认参数 默认参数可以简化函数的调用. 设置默认参数时,有几点要注意: 一.必选参数在前,默认参数在后,否则Python的解释器会报错. 二.当函数有多个参数时,把变化大的参数放前面,变化小的参数 ...
- 如何打包发布加密的 Python 源代码
这里介绍一种使用 PyInstaller 和 PyArmor 来发布加密 Python 源代码的方式,能够达到以下目的 把所有 Python 源代码打包成为可执行文件,客户不需要 Python 就可以 ...
- MSCHART控件中长字符的X轴坐标标注全部显示
X轴坐标如果超过9位的话,就不能完全显示了,就会一个隔一个的显示,解决的办法: Chart1.ChartAreas[].AxisX.Interval = ; //设置X轴坐标的间隔为1 Chart1. ...
- 基于mykernel2.0编写一个操作系统内核
基于mykernel2.0编写一个操作系统内核 一. 实验准备 详细要求 基于mykernel 2.0编写一个操作系统内核 按照https://github.com/mengning/mykernel ...
- 【服务器】VMware Workstation Pro虚拟机搭建本地服务器CentOs7和宝塔面板(保姆式教程)
内容繁多,请耐心跟着流程走,在过程中遇到问题请在下面留言. 前言 这几天一直在复习thinkphp5.1,学习环境是phpStudy8.1,但是遇到了文件有缓存的问题(thinkphp5.1.39,修 ...
- Module Error (from ./node_modules/eslint-loader/index.js):解决办法
vue启动项目报如下错误: Failed to compile. ./src/components/Vcontent.vue Module Error (from ./node_modules/esl ...
- Downloadmanager实现app实现的升级下载使用
1.app升级下载现在不推荐使用downloadmanager下载: 原因有下面的几个方面: (1)三星note系列部分手机需要手动打开这个权限才能用这个功能,而有些国产手机更加nb了直接个阉割了(d ...
- Python3-os模块-操作系统的各种接口
Python3中的os模块提供了一个便携的方式去使用操作系统的相关功能 os.name 返回导入的操作系统相关模块的名字,如 posix(unix/linux),nt(windows)等 os.env ...
- Jmeter(十三) - 从入门到精通 - JMeter定时器 - 上篇(详解教程)
1.简介 用户实际操作时,并非是连续点击,而是存在很多停顿的情况,例如:用户需要时间阅读文字内容.填表.或者查找正确的链接等.为了模拟用户实际情况,在性能测试中我们需要考虑思考时间.若不认真考虑思考时 ...