使用 Github Actions 工作流自动部署 Github Pages

GitHub-Actions

actions顾名思义就是一堆动作,是一个持续集成服务,持续集成包含了拉代码、运行测试、编译代码、登录远程服务器,发布到第三方服务等等的操作,GitHub将这些操作称为actions。

概念:Workflows, Events, Jobs, Actions, Runners

  • Workflows 工作流

一个 Workflow 由多个 Jobs 组成

  • Events

定义哪些事件可以触发 Workflow

  • Jobs

一条 Job 由多个 step 组成,每个步骤可以是一条可执行的 shell 脚本或者是一个 action

  • Actions

一个 Action 是一个复杂且重复的任务,可以看成是多个job的组合

  • Runners

跑工作流的 server,由 Github 提供
一个工作流可以由一个或者多个 Job 组成,每个 Job 可以由一个或者多个 Step 和 Action 组成。工作流需要被一个或多个 Event 触发,并由 Runner 执行,执行成功后,最终实现工作目标。

一、建立仓库

首先在github上创建仓库,如果建立的仓库名称是username.github.io,则最后访问的地址username.github.io/。 如果不是这个名称,则最后访问的地址是username.github.io/repo/ ,repo就是仓库名字。

二、添加.github相关配置文件

在项目的根目录下新建.github/workflows目录,workflow就是GitHub Actions 的配置文件。随便新建.yml文件就是一个flow,github会自动运行workflows目录下所有的yml文件。介绍下workflow最重要的几个配置和概念。

  • name

name字段是 workflow 的名称。如果省略该字段,默认为当前 workflow 的文件名

  • on

on字段指定触发 workflow 的条件,通常是某些事件。在本文实例里用的是push,指的就是当git push事件发生时触发该workflow。

  • jobs

jobs是workflow最重要的部分,表示workflow要执行的任务,可以是一个或者多个。

接下里开始就是本文示例的部署内容。我们希望的流程是,本地改完代码,上传到github后能自动打包部署到gh-pages分支。
在项目根目录新建.github/workflows/page.yml文件

// workflows/pages.yml
name: Deploy Pageson:push:branches:- master # 这里只配置了master分支,所以只有推送master分支才会触发以下任务jobs:pages:runs-on: ubuntu-latestpermissions:contents: writesteps:- uses: actions/checkout@v2- name: Use Node.js 16.15.0uses: actions/setup-node@v2with:node-version: "16.x"- name: Cache NPM dependenciesuses: actions/cache@v2with:path: node_moduleskey: ${{ runner.OS }}-npm-cacherestore-keys: |${{ runner.OS }}-npm-cache- name: Install Dependenciesrun: npm install- name: Buildrun: npm run build- name: Deployuses: peaceiris/actions-gh-pages@v3with:github_token: ${{ secrets.GITEE_TOKEN }}publish_dir: ./dist

首先job里配置运行这个脚本需要的虚拟机环境,这个虚拟机环境由github提供,可用的包括windows、linux、macos等环境,具体看官方文档。在此示例中其实不论哪个系统都是可以的,因为我们需要的是node环境,而node本身就是跨平台的。
接下里设置获取源码、需要的node版本、增加缓存依赖,这里使用官方提供的actions/setup-node@v1、setup-node@v1、cache@v2。这里的@表示版本,使用别人的action时最好都加上版本,以防后面更新的action不兼容当前的脚本。最后会自动部署到gh-pages分支,因为要更新github代码,所以还需要配置github_token
在这里插入图片描述
我这里写的是GITEE_TOKEN,名字随便写都行,手动配置不能以GITHUB_xxx开头。变量和yml里的github_token保持一致。
GITEE_TOKEN:复制下面的token配置在仓库GITEE_TOKEN变量里面

在这里插入图片描述
配置也可以这样写:

github_token: ${{ secrets.GITHUB_TOKEN }} 
//请注意这里的,GITHUB_TOKEN令牌不是个人访问令牌。github操作运行者会自动创建一个GITHUB_TOKEN 令牌秘密,以在您的工作流中进行身份验证。
//因此,您可以立即开始部署,而无需进行任何配置。 

三、推送代码,

打开 Github 仓库 Actions 标签页,可以看到workflow 已经开始执行。
在这里插入图片描述

执行完成后,发现多了一个 gh-pages 分支。

设置 Settings/Pages, 将 Source 设置为 gh-pages 分支并保存。等待两三分钟后,打开 Settings/Pages 中提示的url,即可看到项目页面。

运行完后访问 username.github.io/repo 就能看到部署后的效果了。
因为设置了on: push所以以后每当由代码 push 到 master 分支上,都会触发此工作流执行。

源码

gitHub: https://github.com/ytking/ytking
github pages: ytking.github.io/ytking/

有什么说的不对或者有疑问的,欢迎在下面留言交流~~

参考

GitHub Actions 入门教程-阮一峰
Github Actions 官方文档

Github Actions 是 Github 的持续集成服务,和 Gitlab 的 CI/CD 如出一辙。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【常用图像增强技术,Python-opencv】

文章目录 常用图像增强技术调整大小灰度变换标准化随机旋转中心剪切随机裁剪高斯模糊亮度、对比度和饱和度调节水平翻转垂直翻转高斯噪声随机块中心区域 常用图像增强技术 图像增强技术是常用于数据增强的方法,可以帮助增加数据集中图像的多样性,提高深…

实现最简的内核模块

实现最简单的内核模块,可从中窥探内核模块的编写流程。同时,也可以在其上进行扩展,对内核函数和全局变量进行调用和打印,熟悉内核接口。 在实现最简内核模块之前,在本地安装配置开发环境。可用选择使用vagrant工具快速…

React-Router路由

1.React Router的基本使用 安装:安装时,选择react-router-dom,react-router会包含一些react-native的内容,web开发并不需要; npm install react-router-dom 路径模式 BrowserRouter使用history模式; Hash…

深度学习 | Pytorch深度学习实践

一、overview 基于pytorch的深度学习的四个步骤基本如下: 二、线性模型 Linear Model 基本概念 数据集分为测试集和训练集(训练集、开发集)训练集(x,y)测试集只给(x)过拟合&#xf…

TIA博途中如何在网络视图中显示完整的设备名称?

TIA博途中如何在网络视图中显示完整的设备名称? 如下图所示,在网络视图中,当设备名称较长时,不能直接看到完整的设备名称,只有当鼠标悬停在该设备上时,才能看到完整的设备名称, 那么如何设置&am…

python安装gdal

下载whl https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal 安装 pip install GDAL-3.1.4-cp36-cp36m-win_amd64.whl

power point导出pdf保留字体

在 slides 中用到非自带的字体,如 [1],想导出成 pdf 文件(因为导出成图,如 png,放大会蒙),并在别人电脑里也保留字体。除了让别人也装上相应字体,可以: 参考 [2]&#x…

25台兰博基尼跑车赛道巡游!泡泡玛特MOLLY攒的局就是这么拉风

入秋以来气温逐渐转冷,但泡泡玛特的市场活动却持续升温:国内首个潮玩行业沉浸式IP主题乐园泡泡玛特城市乐园正式开园;2023PTS上海国际潮流玩具展;入驻美国第二大商场、布里斯班再拓新店等海外布局步伐不停……将广大消费者的身心带…

TSINGSEE烟火识别算法的技术原理是什么?如何应用在视频监控中?

AI烟火识别算法是基于深度学习技术的一种视觉识别算法,主要用于在视频监控场景中自动检测和识别烟雾、火焰的行为。该技术基于深度学习神经网络技术,可以动态识别烟雾和火焰从有到无、从小到大、从大到小、从小烟到浓烟的状态转换过程。 1、技术原理 1…

Hadoop3教程(十二):MapReduce中Shuffle机制的概述

文章目录 (95) Shuffle机制什么是shuffle?Map阶段Reduce阶段 参考文献 (95) Shuffle机制 面试的重点 什么是shuffle? Map方法之后,Reduce方法之前的这段数据处理过程,就叫做shuff…

vue-cli脚手架创建项目时报错Error: command failed: npm install --loglevel error

项目背景 环境:vue-cli 5.x 在工程文件中,后端模块wms已经创建完成,现在想新建一个名为vue-web的前端模块 执行命令vue create vue-web时, 报错Error: command failed: npm install --loglevel error 问题分析及解决 排查过程…

Talk | 阿里巴巴算法专家王潇斌:开箱即用的文本理解大模型

本期为TechBeat人工智能社区第538期线上Talk! 北京时间10月18日(周三)20:00阿里巴巴算法专家—王潇斌的Talk已准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “开箱即用的文本理解大模型”,介绍了他们提出的SeqGPT以及EcomGPT两个文…