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

保存,可以通過手動觸發的方式來測試是否可用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43603.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43603.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43603.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JCR一區 | Matlab實現GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征輸入數據分類預測/故障診斷

JJCR一區 | Matlab實現GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征輸入數據分類預測/故障診斷 目錄 JJCR一區 | Matlab實現GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征輸入數據分類預測/故障診斷分類效果格拉姆矩陣圖GAF-PCNN-MATTGASF-CNNGADF-CNN 基本介紹程序設計參考資料 分…

【45 Pandas+Pyecharts | 去哪兒海南旅游攻略數據分析可視化】

文章目錄 🏳??🌈 1. 導入模塊🏳??🌈 2. Pandas數據處理2.1 讀取數據2.2 查看數據信息2.3 日期處理,提取年份、月份2.4 經費處理2.5 天數處理 🏳??🌈 3. Pyecharts數據可視化3.1 出發日期_…

華南師范大學“大學生校外實踐教學基地”授牌儀式暨見習參觀活動圓滿結束

為促進校企合作的深入發展,培育出具有實際應用技能的人才,7月9日,華南師范大學數學科學院與廣東泰迪智能科技股份有限公司聯合開展“大學生校外實踐教學基地”授牌儀式暨見習參觀活動。華南師范大學數學科學院數據科學系主任陳艷男、副主任陳…

深入理解model.eval()與torch.no_grad()

model.eval() 使用model.eval()切換到測試模式,不會更新模型的w(權重),b(偏置)參數通知dropout層和batchnorm層在train和val中間進行切換: 在train模式,dropout層會按照設定的參數p…

Idea 2023 使用GitLab提交代碼提示輸入Token

項目場景: 今天電腦換硬盤了,安裝了 IDEA2023 款的社區版開發工具,下載代碼后,提交并推送代碼到遠程服務器的時候,提示輸入Token,并不是用戶名和密碼。 問題描述 推送代碼到遠程GitLab本地倉庫的時候&…

單鏈表--續(C語言詳細版)

2.6 在指定位置之前插入數據 // 在指定位置之前插入數據 void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x); 分為兩種情況:1. 插入的數據在鏈表中間;2. 插入的數據在鏈表的前面。 // 在指定位置之前插入數據 void SLTInsert(SLTNode** …

AI繪畫何以突飛猛進? 從歷史到技術突破, 一文讀懂火爆的AI繪畫發展史

前言 自從前段時間偶然間被當下AI繪畫的水平震住之后(超越一切的AI作畫神器,和它創作的234個盔甲美女未來戰士) ,作者深感當今AI繪畫的飛速進展或許已遠超所有人的預期。 而這里的前因后果,包括AI繪畫的歷史&#xff…

十九.升職加薪系列-JVM優化-解決JVM性能瓶頸的JIT即時編譯器

前言 在很多年以前,做C或者C的程序員經常說Java語言的運行速度不如C或C,Java運行速度慢主要是因為它是解釋執行的,而C或C是編譯執行的,解釋執行需要通過JVM虛擬機將字節碼實時翻譯成機器碼(邊翻譯邊執行)&…

Rust 版本升級:rustup update stable 報錯

Rust 版本升級 rustup update stable 報錯 一、報錯內容 error: could not download file from ‘https://static.rust-lang.org/dist/channel-rust-stable.toml.sha256’ to ‘/Users/xxx/.rustup/tmp/rv6vdfu3eupwo64m_file’: failed to make network request: error sendi…

【實戰場景】@Transactional中使用for update的注意點

【實戰場景】Transactional中使用for update的注意點 開篇詞:干貨篇:知識回顧注意點1.鎖的范圍和粒度:2.事務的隔離級別:3.死鎖:4.性能影響:5.事務的邊界:6.異常處理:7. 數據庫和存儲…

【漏洞復現】網神 SecGate 3600 防火墻 sys_export_conf_local_save 任意文件讀取

免責聲明: 本文內容旨在提供有關特定漏洞或安全漏洞的信息,以幫助用戶更好地了解可能存在的風險。公布此類信息的目的在于促進網絡安全意識和技術進步,并非出于任何惡意目的。閱讀者應該明白,在利用本文提到的漏洞信息或進行相關測…

javaweb學習day5--《HTML篇》Springboot的模塊創建、HTML的相關知識點詳解

一、前言 從今天開始,就要啟動后端的學習了,Springboot會貫穿到底,一定要跟著小編嚴謹的去搭建Springboot環境,依賴添加的過程可能需要2分鐘左右,讀者們要耐心等待一下,搭建好Springboot之后才算正式的開始…

算力革命:彈性租賃,解鎖無限可能

華為創始人任正非曾在一場程序設計競賽中說道,我們即將進入第四次工業革命,基礎就是大算力。事實上,隨著5G、人工智能等信息技術的迅猛發展,算力需求持續增長,但高昂的成本和快速的技術迭代讓許多中小企業和個人開發者…

Covalent Network(CXT)通過社區投票將代幣遷移并更名為 CXT,以推動人工智能更深層次的創新

專注于人工智能和 Web3 的模塊化數據基礎設施 Covalent Network(CXT)宣布,其治理提案已通過社區投票并順利實施,即將原生代幣 CQT 遷移為新的 CXT 代幣,并部署至新的合約。這一關鍵性轉變標志著 Covalent Network&…

git刪除提交記錄,并使用idea將代碼重新提交到gitee倉庫

git 新建分支將之前的記錄刪除重新提交 轉載鏈接 https://blog.csdn.net/qq_37142541/article/details/139860956

03-NoSQL之Redis配置與優化

一、redis與memcache總體對比 1.性能 Redis:只使用單核,平均每一個核上Redis在存儲小數據時比Memcached性能更高。 Memcached:可以使用多核,而在100k以上的數據中,Memcached性能要高于Redis。 2.內存使用效率 MemC…

springboot文達辦公物資管理系統-計算機畢業設計源碼51191

摘要 本文介紹了一種名為"文達辦公物資管理系統"的基于JAVA語言、基于Springboot框架和MYSQL數據庫開發的管理系統。該系統主要分為管理員和員工用戶兩個角色,以滿足不同用戶的需求。 對于管理員用戶,系統提供了儀器設備管理、設備借用管理、設…

【大數據技術】換新電腦了,如何快速遷移MySQL到新電腦上(含程序+數據),這樣既快速又高效,省去了“各種安裝+各種配置+各種遷移數據”帶來的麻煩和時間

【大數據技術】換新電腦了,如何快速遷移MySQL到新電腦上(含程序數據 背景步驟總結 背景 很久沒有寫博文了哦,最近我換了新的筆記本,于是需要在新筆記本電腦上搭建MySQL環境,因為我原電腦上是安裝的MySQL解壓版,故我想偷偷懶&…

可理解性評估:使用Google Gemini優化語音識別的意義保留

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎?訂閱我們的簡報,深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同,從行業內部的深度分析和實用指南中受益。不要錯過這個機會,成為AI領…

nftables(5)表達式(3)PAYLOAD EXPRESSIONS

PAYLOAD EXPRESSIONS Payload expressions在nftables中扮演著重要的角色,因為它們允許用戶定義復雜的規則,這些規則可以基于數據包的內容(即有效載荷)來過濾、修改或允許數據包通過。這些表達式可以執行諸如數據拷貝、比較、位操…