自己免费网站建设,手机网站域名怎么解析,网站如何做播放线路,前端开发岗位职责本文首发于 Anyeの小站#xff0c;点击跳转 获得更优质的阅读体验
前言
贴一段胡话 在用过 应用#xff1a;静态网页服务 之后#xff0c;事实证明#xff1a; 总而言之#xff0c;自动化是一个很令人着迷的东西#xff0c;摆脱重复繁琐的工作#xff0c;解放了双手的…本文首发于 Anyeの小站点击跳转 获得更优质的阅读体验
前言
贴一段胡话 在用过 应用静态网页服务 之后事实证明 总而言之自动化是一个很令人着迷的东西摆脱重复繁琐的工作解放了双手的同时更是善待了自己。
简介
本文将会以 Github Action 结合 Ryan 大佬 的 Halo 插件 应用静态网页服务 来实现自动将 Github 上的开源项目 CorentinTh/it-tools 自动更新同步部署。
原理
Fork 原项目有微修需求的在 Fork 后的项目中做出修改为 Fork 的项目添加 Upstream Sync · Actions · GitHub 这一 Action该 Action 可以实现同步自己的分支和上游分支并输出一个是否有新提交的变量 has_new_commits 供我们使用使用 corn 计划任务实现定时查询更新。为项目添加 Actions在 has_new_commits 或者 commits 或者手动触发的时候执行构建推送按需添加。
快速使用以 it-tools 项目为例
Fork 我已经修改好的项目 Anyexyz/it-tools 然后按照 此处 操作。
实现以 it-tools 项目为例
Fork 项目
点击 CorentinTh/it-tools 直达。
对项目源码进行修改
在这里我对项目做出修改
必要 修改项目的 web 访问路径为 /tools
将 vite.config.ts:19 的 process.env.BASE_URL ?? /; 改为 process.env.BASE_URL ?? /tools;
修改项目的默认访问语言为中文
将 src/plugins/i18n.plugin.ts:8 的 en 改为 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/checkoutv4- uses: pnpm/action-setupv3with:version: 8- uses: actions/setup-nodev4with:node-version: 20cache: 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/checkoutv4- name: Clean issue noticeuses: actions-cool/issues-helperv3with:actions: close-issueslabels: Sync Fail- name: Upstream Syncid: syncuses: aormsby/Fork-Sync-With-Upstream-actionv3.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 trueuses: actions/github-scriptv7.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-helperv3with:actions: create-issuetitle: 同步失败 | Sync Faillabels: Sync Failbody: |由于上游仓库的 workflow 文件变更导致 GitHub 自动暂停了本次自动更新你需要手动 Sync Fork 一次触发条件
每小时自动执行一次手动触发
检测新的提交
- name: New commits detected actionif: steps.sync.outputs.has_new_commits trueuses: actions/github-scriptv7.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 项目配置相同 创建后会生成一个 ID 保存它。
申请个人令牌
在 Halo 的 UC 页申请一个 个人令牌 权限选择 静态项目 - 项目资源上传。 保存该令牌。
Github 仓库配置
在该仓库的 Github Setting 下找到 Secrets and variables 为 Actions 提供变量添加 Repository secrets 如下
NameSecretExampleENDPOINTHalo API endpointhttps://demo.halo.runIDStatic Page IDproject-FRAuWPATPersonal access tokenpat_abcd
保存可以通过手动触发的方式来测试是否可用。