当前位置: 首页 > news >正文

Github Action 自动部署更新静态网页服务

本文首发于 Anyeの小站,点击跳转 获得更优质的阅读体验

前言

贴一段胡话

|50%x50%

在用过 应用:静态网页服务 之后,事实证明:

|50%x50%
总而言之,自动化是一个很令人着迷的东西,摆脱重复繁琐的工作,解放了双手的同时更是善待了自己。

简介

本文将会以 Github Action 结合 Ryan 大佬 的 Halo 插件 应用:静态网页服务 来实现自动将 Github 上的开源项目 CorentinTh/it-tools 自动更新同步部署。

原理

  1. Fork 原项目,有微修需求的在 Fork 后的项目中做出修改
  2. Fork 的项目添加 Upstream Sync · Actions · GitHub 这一 Action,该 Action 可以实现同步自己的分支和上游分支,并输出一个是否有新提交的变量 has_new_commits 供我们使用,使用 corn 计划任务实现定时查询更新。
  3. 为项目添加 Actions,在 has_new_commits 或者 commits 或者手动触发的时候执行构建推送(按需添加)。

快速使用(以 it-tools 项目为例)

Fork 我已经修改好的项目 Anyexyz/it-tools ,然后按照 此处 操作。

实现(以 it-tools 项目为例)

Fork 项目

点击 CorentinTh/it-tools 直达。

对项目源码进行修改

在这里我对项目做出修改:

  • (必要) 修改项目的 web 访问路径为 /tools

vite.config.ts:19process.env.BASE_URL ?? '/'; 改为 process.env.BASE_URL ?? '/tools';

  • 修改项目的默认访问语言为中文:

src/plugins/i18n.plugin.ts:8en 改为 zh

  • 其他个性化修改

添加工作流

Deploy to Halo

用于构建并部署到 Halo 静态网页服务。

name: Deploy to Haloon:push:branches: [main]repository_dispatch:types: [deploy]workflow_dispatch:jobs:deploy:runs-on: ubuntu-lateststeps:- name: Checkoutuses: actions/checkout@v4- uses: pnpm/action-setup@v3with:version: 8- uses: actions/setup-node@v4with:node-version: '20'cache: 'pnpm'- name: Install dependenciesrun: pnpm install- name: Buildrun: pnpm build- name: Deploy to Halorun: |npx halo-static-pages-deploy-cli deploy -e ${{ secrets.ENDPOINT }} -i ${{ secrets.ID }} -t ${{ secrets.PAT }} -f dist

我在这里添加了三个触发条件:

  • 响应 push 事件到 main 分支。
  • 响应 repository_dispatch 事件,类型为 deploy
  • 手动触发。
Upstream Sync

用于同步上游 commits 并检查是否有更新。

name: Upstream Syncpermissions:contents: writeissues: writeactions: writeon:schedule:- cron: '0 * * * *' # 每小时执行一次workflow_dispatch:    # 手动触发jobs:sync_latest_from_upstream:name: Sync latest commits from upstream reporuns-on: ubuntu-latestif: ${{ github.event.repository.fork }}steps:- uses: actions/checkout@v4- name: Clean issue noticeuses: actions-cool/issues-helper@v3with:actions: 'close-issues'labels: '🚨 Sync Fail'- name: Upstream Syncid: syncuses: aormsby/Fork-Sync-With-Upstream-action@v3.4.1with:target_sync_branch: maintarget_repo_token: ${{ secrets.GITHUB_TOKEN }} # 自动生成的 GitHub token,无需手动设置upstream_sync_repo: CorentinTh/it-toolsupstream_sync_branch: maintest_mode: false- name: New commits detected actionif: steps.sync.outputs.has_new_commits == 'true'uses: actions/github-script@v7.0.1with:script: |github.rest.repos.createDispatchEvent({owner: context.repo.owner,repo: context.repo.repo,event_type: 'deploy'})- name: Sync checkif: failure()uses: actions-cool/issues-helper@v3with:actions: 'create-issue'title: '🚨 同步失败 | Sync Fail'labels: '🚨 Sync Fail'body: |由于上游仓库的 workflow 文件变更,导致 GitHub 自动暂停了本次自动更新,你需要手动 Sync Fork 一次

触发条件:

  • 每小时自动执行一次
  • 手动触发

检测新的提交

- name: New commits detected actionif: steps.sync.outputs.has_new_commits == 'true'uses: actions/github-script@v7.0.1with:script: |github.rest.repos.createDispatchEvent({owner: context.repo.owner,repo: context.repo.repo,event_type: 'deploy'})

如果检测到有新提交,这一步使用 actions/github-script 动作触发一个名为deploy 的事件,用于调用 Deploy to Halo 进行部署。

使用

创建一个静态网页服务

在已经安装 应用:静态网页服务 插件的前提下,添加一个静态网页服务,目录填写 tools (与 Github 项目配置相同)

|50%x100%

创建后会生成一个 ID ,保存它。

申请个人令牌

在 Halo 的 UC 页申请一个 个人令牌 ,权限选择 静态项目 - 项目资源上传

|50%x50%

保存该令牌。

Github 仓库配置

在该仓库的 Github Setting 下找到 Secrets and variables ,为 Actions 提供变量,添加 Repository secrets ,如下:

NameSecretExample
ENDPOINTHalo API endpointhttps://demo.halo.run
IDStatic Page IDproject-FRAuW
PATPersonal access tokenpat_abcd

保存,可以通过手动触发的方式来测试是否可用。

相关文章:

Github Action 自动部署更新静态网页服务

本文首发于 Anyeの小站,点击跳转 获得更优质的阅读体验 前言 贴一段胡话 在用过 应用:静态网页服务 之后,事实证明: 总而言之,自动化是一个很令人着迷的东西,摆脱重复繁琐的工作,解放了双手的…...

如何在CSS中控制动画的触发位置?

如何在CSS中控制动画的触发位置? 在CSS中控制动画的触发位置主要是通过transform属性来实现的。例如,如果你希望动画从某个固定的位置开始,可以设置transform: translate(x, y),其中x和y是你想让元素偏离其原始位置的距离。对于动…...

MFC流的形式读取图片

1.基于对话框布置控件 2.给控件绑定变量 3.给按钮控件添加响应函数 void CMFC流的形式读取图片Dlg::OnBnClickedButton1() {// TODO: 在此添加控件通知处理程序代码//HDC mECGDC; // 设备描述表句柄//CPen mECGDrawPen; // ECG波形画笔//RECT mECGRect; // 在该矩形区域内画…...

查找PPT中某种字体的全部对应文字

本文章的目的是找到某种字体的文字,而不是替换某种字体的文字,也不是将某种字体全部替换为另外一种文字。 第一步:在PPT中按下ALTF11 出现以下窗口 第二步:点击插入->模块 第三步:将以下代码输入到窗体中 Sub F…...

相机光学(三十一)——暗房设置的要求

ISO标准通常在测试相机时指定对周围条件的要求。由于摄影ISO组试图保持这些要求与所有标准一致,所以我们总结了这个“技术说明”中的重要方面。   温度应保持在23C /- 2C的范围内。在设计空调系统时,请记住图表照明的耗电量和发热量。湿度需要在&#…...

Linux安全技术与防火墙

一、安全技术和防火墙 1.1 安全技术 入侵检测系统:特点是不阻断网络访问,主要是提供报警和时候报警,不主动介入。 入侵防御系统:透明模式工作,对数据包、网络监控、服务攻击、木马蠕虫、系统漏洞等等进行准确的分析和…...

C#中简单Socket编程

C#中简单Socket编程 Socket分为面向连接的套接字(TCP套接字)和面向消息的套接字(UDP 套接字)。我们平时的网络编程是对Socket进行操作。 接下来,我用C#语言来进行简单的TCP通信和UDP通信。 一、TCP通信 新建项目SocketTest,首先添加TCP通信的客户端代…...

UNIAPP_ReferenceError: TextEncoder is not defined 解决

错误信息 1、安装text-decoding npm install text-decoding2、main.js import { TextEncoder, TextDecoder } from text-decoding global.TextEncoder TextEncoder global.TextDecoder TextDecoder...

科普文:微服务技术栈梳理

概叙 如上两图所示,微服务架构下,需要的组件很多,上面中也并未列全。下面将梳理一下国内微服务架构下,用到的技术栈,仅供参考。 科普文:12种常见的软件架构-CSDN博客 没有最好的架构,只有最适…...

如何使用HTML和JavaScript读取文件夹中的所有图片并显示RGB范围

如何使用HTML和JavaScript读取文件夹中的所有图片并显示RGB范围 在这篇博客中&#xff0c;我将介绍如何使用HTML和JavaScript读取文件夹中的所有图片&#xff0c;并显示这些图片以及它们的RGB范围。这个项目使用现代浏览器提供的<input type"file" webkitdirecto…...

PDF公式转Latex

文章目录 摘要数据集 UniMER介绍下载链接 LaTeX-OCRUniMERNet安装UniMER 用的数据集介绍下载链接 PDF-Extract-Kit整体介绍效果展示评测指标布局检测公式检测公式识别 使用教程环境安装参考[模型下载](models/README.md)下载所需模型权重 在Windows上运行在macOS上运行运行提取…...

excel 百分位函数 学习

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、函数说明PERCENTILE 函数PERCENTILE.inc 函数PERCENTILE.exc 函数QUARTILE.EXC 函数 二、使用步骤总结 前言 excel 百分位函数 Excel提供了几个函数用于…...

(十一) Docker compose 部署 Mysql 和 其它容器

文章目录 1、前言1.1、部署 MySQL 容器的 3 种类型1.2、M2芯片类型问题 2、具体实现2.1、单独部署 mysql 供宿主机访问2.1.1、文件夹结构2.1.2、docker-compose.yml 内容2.1.3、运行 2.2、单独部署 mysql 容器供其它容器访问&#xff08;以 apollo 为例&#xff09;2.2.1、文件…...

提高项目透明度:有效的跟踪软件

国内外主流的10款项目进度跟踪软件对比&#xff1a;PingCode、Worktile、Teambition、Tower、Asana、Trello、Jira、ClickUp、Notion、Liquid Planner。 在项目管理中&#xff0c;确保进度跟踪的准确性与效率是每位项目经理面临的主要挑战之一。选用合适的项目进度跟踪软件不仅…...

大模型生成人物关系思维导图的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…...

精通 mysqldumpslow:深度分析 MySQL 慢查询日志

引言 在数据库管理与优化的领域中&#xff0c;慢查询日志是识别性能瓶颈的金矿。mysqldumpslow 工具是挖掘这座金矿的利器&#xff0c;它帮助我们分析 MySQL 慢查询日志并提取关键信息。本文将详细介绍 mysqldumpslow 的核心选项&#xff0c;并通过实例展示如何使用这些选项来…...

C# Winform之propertyGrid控件分组后排序功能

在 WinForms 的 PropertyGrid 控件中&#xff0c;你可以通过多种方式对属性进行排序&#xff0c;包括按类别&#xff08;Category&#xff09;排序以及按属性名称排序。默认情况下&#xff0c;PropertyGrid 控件会根据 [Category] 和 [DisplayName] 属性装饰器对属性进行分组和…...

Java基础(十九):集合框架

目录 一、Java集合框架体系二、Collection接口及方法1、添加2、判断3、删除4、其它 三、Iterator(迭代器)接口1、Iterator接口2、迭代器的执行原理3、foreach循环 四、Collection子接口1&#xff1a;List1、List接口特点2、List接口方法3、List接口主要实现类&#xff1a;Array…...

execute_script与JS

JavaScript简称JS&#xff0c;有的测试场景需要JS脚本辅助完成Selenium无法做到的测试工作。webdriver提供了execute_script()方法调用JS代码。execute_script()可以在当前窗口/框架中执行JS脚本&#xff0c;并返回结果。可以使用它操作DOM元素、获取元素属性、执行异步操作等。…...

访问 Postman OAuth 2.0 授权的最佳实践

OAuth 2.0 代表了 web 安全协议的发展&#xff0c;便于在多个平台上进行授权服务&#xff0c;同时避免暴露用户凭据。它提供了一种安全的方式&#xff0c;让用户可以授权应用程序访问服务。 在 Postman 中开始使用 OAuth 2.0 Postman 是一个流行的API客户端&#xff0c;支持 …...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题&#xff1a;阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程&#xff0c;导致后续逻辑无法执行&#xff1a; var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何&#xff0c;是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试&#xff0c;是可以跑通文章里面的代码。训练速度也是很快的。 注意…...