<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Github Actions Hexo 自動(dòng)部署

          共 5272字,需瀏覽 11分鐘

           ·

          2023-05-08 01:36

          來龍去脈

          最近重裝了電腦,近幾年內(nèi)每次重裝也好,裝備新電腦也好,越來越覺得這個(gè)博客是令我比較頭疼的事

          因?yàn)榍皫啄陱?WordPress?遷移到了?Hexo,雖然變成了純靜態(tài),訪問速度上提高了。但本地文件的維護(hù)、文章的發(fā)布就變得很繁瑣

          比如

          • 重裝必須備份

          • 多臺(tái)電腦必須同步最新的

          • 發(fā)布文章需要在本地跑三條命令

          多臺(tái)電腦同步的問題,我在家里樹莓派上建了個(gè)?git?倉庫,專門同步文章。不過大部分時(shí)間都會(huì)忘記,并且配置文件、主題的配置文件都不在文章目錄,所以沒法同步

          覺醒

          最近一次重裝我依然是手動(dòng)備份,重裝后看著這個(gè)備份,覺得這樣下去不行,得趕緊拿出個(gè)更完美(懶)的方案

          想起之前在一個(gè)瀏覽器插件的倉庫看到了自動(dòng)發(fā)布腳本,我有個(gè)瀏覽器插件每次發(fā)布都很繁瑣,因此早就想研究一下自動(dòng)化

          所以這次第一個(gè)念頭也是自動(dòng)化:Github Actions

          舊流程

          按照之前手動(dòng)擋的流程是這樣的

          1. 清除緩存?hexo clean

          2. 生成靜態(tài)文件?hexo g

          3. 部署?hexo d(執(zhí)行一次?git?推送)

          4. 遠(yuǎn)程倉庫?hooks?被觸發(fā),自動(dòng)去網(wǎng)站根目錄,git pull

          最后網(wǎng)站根目錄拉取到文章,部署成功

          其中?3?之前你需要在本地手動(dòng)執(zhí)行的,而且重裝或者換電腦意味著需要在遠(yuǎn)程服務(wù)器配置新的公鑰

          新流程

          新的半自動(dòng)擋解決了?1-3,你只需要進(jìn)行一次 git 提交

          其他的事情交給?Github Actions

          58a194bd66854e395206db8242fa0711.webp

          整個(gè)流程是

          • 創(chuàng)建密鑰,用于連接博客服務(wù)器

          • 安裝?hexo

          • 安裝?hexo?插件

          • 拉取主題

          • 安裝主題依賴包

          • 檢查主題目錄

          • 配置?git

          • 生成靜態(tài)文件

          • 部署!

          工作流配置
                
                  name: publish
                
                
                  
                    
          on: push: branches: - master
          jobs: publish-blog: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: node-version: 14 registry-url: https://registry.npmjs.org/
          - name: create keys run: | mkdir -p ~/.ssh echo '${{secrets.PRIVATE_KEY}}' > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-keyscan -t rsa 1.2.3.4 >> ~/.ssh/known_hosts ls -l -a ~/.ssh - name: install hexo-cli if: steps.cache.outputs.cache-hit != 'true' run: npm i -g hexo-cli
          - name: install hexo dependencies run: npm i working-directory: hexo
          - name: pull themes run: | mkdir -p hexo/themes git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git hexo/themes/butterfly echo 'themes config' cp hexo/themes_butterfly_config.yml hexo/themes/butterfly/_config.yml echo 'background image' cp hexo/images/bg.png hexo/themes/butterfly/source/img/bg.png - name: install themes package run: npm i working-directory: hexo/themes/butterfly
          - name: check themes package run: ls -l working-directory: hexo/themes/butterfly
          - name: git config run: | git config --global user.name imba97 git config --global user.email [email protected] git config --global init.defaultBranch master working-directory: hexo
          - name: hexo generate run: | hexo clean hexo g working-directory: hexo
          - name: deploy! run: | git init git add . git commit -m "deploy!" git remote add origin root@1.2.3.4:/git/blog.git git push --force origin master working-directory: hexo/public

          經(jīng)過了大概?40?次左右的測(cè)試,最后終于是成功部署

          821eebcffe030e71b67e7b802e9ea5b4.webp

          主要問題

          期間主要解決?git push?不成功,私鑰問題

          問題的關(guān)鍵是,你不但需要在?~/.ssh/?下創(chuàng)建私鑰,還需要?jiǎng)?chuàng)建一個(gè)?known_hosts,記錄已知的服務(wù)器?IP

          私鑰創(chuàng)建流程,我是在我本地創(chuàng)建了一對(duì)密鑰,把私鑰復(fù)制出來放到倉庫配置中

          408d4579cf60cb026b1b5d158f402e5a.webp

          工作流使用的時(shí)候就把它寫入到文件

              echo '${{secrets.PRIVATE_KEY}}' > ~/.ssh/id_rsa

          記錄已知的服務(wù)器?IP?也就是工作流的這一步

              ssh-keyscan -t rsa 1.2.3.4 >> ~/.ssh/known_hosts

          其他小問題

          主要是主題,主題自定義的配置文件和圖片,解決方案是直接放在倉庫,復(fù)制過去

          所以如果你打算用以上工作流,還得根據(jù)自己的主題去改改

          收工

          至此,我本地將不在管理博客的任何東西,甚至寫博客都可以隨時(shí)打開?Github?來寫

          4b4519be53bbb59d5cbad364853132a1.webp

          而且依然也可以在本地寫,如果換主題肯定還是要本地跑一下測(cè)一下的

          總之,爽到了

          其他補(bǔ)充

          為啥說是半自動(dòng)擋呢,因?yàn)槲腋杏X服務(wù)器部分也需要繼續(xù)優(yōu)化,不能通過?git hooks?的方式部署,這樣的話遷移到另一臺(tái)服務(wù)器還得配置一遍,也是很麻煩的

          之后考慮在工作流中用?sftp?直接上傳的方式部署,需要解決的問題是生成靜態(tài)文件數(shù)量非常多,目前考慮可以先壓縮,再上傳,再給博客服務(wù)器發(fā)送解壓命令

          等不懶了搞一搞,再水一篇文章 ( ′_ゝ`)


          瀏覽 54
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  AA网址 | 中文字幕永久有效 | 国产精品一二三级 | swag国产在线 | 亚洲性情在线 |