<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 博文發(fā)布工作流

          共 3845字,需瀏覽 8分鐘

           ·

          2021-01-21 19:25

          最近寫了幾篇文章,想對(duì)每次編寫的文檔做個(gè)版本控制。想到了Github, 將所有的文檔備份到Github。不想每次手動(dòng)運(yùn)行hugo 編譯和發(fā)布腳本,于是就有了下面的GithubActions工作流。借助GitHubActions完成對(duì)博客文章的自動(dòng)化發(fā)布部署。

          版本庫(kù)

          首先,我們?cè)贕ithub上面創(chuàng)建一個(gè)倉(cāng)庫(kù),用于存儲(chǔ)博客的數(shù)據(jù)。靜態(tài)博客推薦使用Hugo,非常簡(jiǎn)單。使用Markdown語(yǔ)法,官方提供了很多不錯(cuò)的主題模板。


          這里我是用主干main 分支存儲(chǔ)項(xiàng)目的代碼, 單獨(dú)創(chuàng)建一個(gè)分支存儲(chǔ)編譯后的靜態(tài)HTML資源文件。我們切換到另外一個(gè)分支看下:


          工作面板

          新建一個(gè)工作板可以自定義狀態(tài),簡(jiǎn)單的將每次的博客優(yōu)化需求記錄在這里。這里的每一項(xiàng)任務(wù)都可以轉(zhuǎn)換為issue,提交代碼可以對(duì)應(yīng)的issue關(guān)聯(lián)。


          CI/CD集成與發(fā)布

          使用Github actions 作為構(gòu)建。設(shè)置在main分支提交代碼即構(gòu)建。

          name:?github?pages
          on:
          ??push:
          ????branches:?[?main?]

          簽出主干分支代碼,刪除pages-git 分支(該分支存放靜態(tài)文件,需要頻繁更新)。

          jobs:
          ??deploy:
          ????runs-on:?ubuntu-18.04
          ????steps:
          ??????-?uses:?actions/checkout@v2
          ????????with:
          ??????????submodules:?true??#?Fetch?Hugo?themes?(true?OR?recursive)
          ??????????fetch-depth:?0????#?Fetch?all?history?for?.GitInfo?and?.Lastmod

          ??????-?name:?Delete?branch
          ????????uses:?dawidd6/action-delete-branch@v3
          ????????with:
          ??????????github_token:?${{?secrets.GIT_TOKEN?}}
          ??????????branches:?"pages-git"


          hugo --minify?生成靜態(tài)文件public?目錄。

          ?-?name:?Setup?Hugo
          ????????uses:?peaceiris/actions-hugo@v2
          ????????with:
          ??????????hugo-version:?'0.74.2'
          ??????????#?extended:?true

          ??????-?name:?Build
          ????????run:?|
          ??????????hugo?--minify
          ??????????
          ??????????ls?public
          ??????????tar?zcf?${version}-public.tar.gz?public
          ??????????ls?

          刪除當(dāng)前目錄除public目錄外的所有文件, 然后將public目錄文件移動(dòng)到當(dāng)前目錄

          ?-?name:?commit
          ????????run:?|
          ??????????rm?-fr?archetypes
          ??????????rm?-fr?content
          ??????????rm?-fr?demo
          ??????????rm?-fr?static
          ??????????rm?-fr?themes
          ??????????rm?-fr?.DS_Store
          ??????????rm?-fr?1.1.0-public.tar.gz
          ??????????rm?-fr?README.md
          ??????????rm?-fr?config.toml
          ??????????mv?public/*?./
          ??????????sleep?3
          ??????????ls?-l?
          ??????????rm?-fr?public?
          [email protected]
          ??????????git?config?--global?user.name?cccc
          ??????????git?add?.
          ??????????git?commit?-m?"update"?-a

          提交當(dāng)前的工作目錄到pages-git?分支。(到此pages-git分支已經(jīng)存儲(chǔ)了更新后的靜態(tài)文件)

          ??????-?name:?Push?changes
          ????????uses:?ad-m/github-push-action@master
          ????????with:
          ??????????github_token:?${{?secrets.GIT_TOKEN?}}
          ??????????branch:?"pages-git"

          github pages訪問(wèn)太慢了, 準(zhǔn)備使用國(guó)內(nèi)的gitee pages服務(wù)。在gitee創(chuàng)建一個(gè)倉(cāng)庫(kù)。最后一部分代碼是將當(dāng)前pages-git?分支代碼鏡像到gitee 項(xiàng)目的pages-git分支。

          -?name:?'get?code?'
          ????????uses:?actions/checkout@v2
          ????????with:
          ??????????submodules:?true??#?Fetch?Hugo?themes?(true?OR?recursive)
          ??????????fetch-depth:?0????#?Fetch?all?history?for?.GitInfo?and?.Lastmod
          ??????????ref:?"pages-git"
          ??????-?name:?'Mirror?to?gitee'
          ????????uses:?pixta-dev/repository-mirroring-action@v1
          ????????with:
          ??????????target_repo_url:
          [email protected]:devopsgo/devopsgo.git
          ??????????ssh_private_key:
          ????????????${{?secrets.GIT_PRIVATE_KEY?}}

          到此,代碼已經(jīng)同步到了Gitee Pages。接下來(lái)觸發(fā)Gitee Pages 服務(wù)更新。(指定靜態(tài)目錄分支部署)



          瀏覽器訪問(wèn)devopsgo.gitee.io?就可以訪問(wèn)了。到此發(fā)布完成了。


          工作流已經(jīng)創(chuàng)建好了, 最后每次發(fā)布博文的時(shí)候。使用vscode編寫markdown文檔,然后本地hugo serve 調(diào)試。完成后提交到主干分支,隨后GitHub Actions 就會(huì)運(yùn)行CI/CD,自動(dòng)發(fā)布。




          擴(kuò)展參考:SSH發(fā)布到云主機(jī)

          ??#?-?name:?copy?file?via?ssh?password
          ??????#???uses:?appleboy/scp-action@master
          ??????#???with:
          ??????#?????host:?${{?secrets.SSH_HOST?}}
          ??????#?????username:?${{?secrets.SSH_USER?}}
          ??????#?????password:?${{?secrets.SSH_PASSWD?}}
          ??????#?????port:?22
          ??????#?????source:?"./${{env.version}}-public.tar.gz"
          ??????#?????target:?"/opt/"
          ??????????
          ??????#?-?name:?executing?remote?ssh?commands?using?password
          ??????#???uses:?appleboy/ssh-action@master
          ??????#???with:
          ??????#?????host:?${{?secrets.SSH_HOST?}}
          ??????#?????username:?${{?secrets.SSH_USER?}}
          ??????#?????password:?${{?secrets.SSH_PASSWD?}}
          ??????#?????port:?22
          ??????????#?script:?|
          ??????????#???rm?-fr?/var/www/newdevops/*
          ??????????#???mv?/opt/${{?env.version?}}-public.tar.gz?/var/www/newdevops/
          ??????????#???cd?/var/www/newdevops/?&&?tar?zxf?${{?env.version?}}-public.tar.gz
          ??????????#???mv?public/*?./??&&?rm?-fr?public?
          ??????????#???chown?nginx:nginx?/var/www/?-R
          ??????????#???systemctl?reload?nginx?

          到此,整個(gè)工作流就完成了。望對(duì)你有所幫助!


          ?點(diǎn)擊屏末?|??|?即刻學(xué)習(xí)
          瀏覽 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>
                  激情网站五月天 | 日本三级视频在线观看历史 | 操学生妹视频 | 亚洲综合免费观看高清完整 | 日韩蜜桃久久久 |