成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊聊 GitHub Actions 博文發布工作流程

開發 前端
最近寫了幾篇文章,想對每次編寫的文檔做個版本控制。想到了Github, 將所有的文檔備份到Github。不想每次手動運行hugo 編譯和發布腳本,于是就有了下面的GithubActions工作流。借助GitHubActions完成對博客文章的自動化發布部署。

[[376077]]

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

版本庫

首先,我們在Github上面創建一個倉庫,用于存儲博客的數據。靜態博客推薦使用Hugo,非常簡單。使用Markdown語法,官方提供了很多不錯的主題模板。


這里我是用主干main 分支存儲項目的代碼, 單獨創建一個分支存儲編譯后的靜態HTML資源文件。我們切換到另外一個分支看下:


工作面板

新建一個工作板可以自定義狀態,簡單的將每次的博客優化需求記錄在這里。這里的每一項任務都可以轉換為issue,提交代碼可以對應的issue關聯。


CI/CD集成與發布

使用Github actions 作為構建。設置在main分支提交代碼即構建。

  1. name: github pages 
  2. on
  3.   push: 
  4.     branches: [ main ] 

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

  1. jobs: 
  2.   deploy: 
  3.     runs-on: ubuntu-18.04 
  4.     steps: 
  5.       - uses: actions/checkout@v2 
  6.         with
  7.           submodules: true  # Fetch Hugo themes (true OR recursive) 
  8.           fetch-depth: 0    # Fetch all history for .GitInfo and .Lastmod 
  9.  
  10.       - nameDelete branch 
  11.         uses: dawidd6/action-delete-branch@v3 
  12.         with
  13.           github_token: ${{ secrets.GIT_TOKEN }} 
  14.           branches: "pages-git" 

hugo --minify 生成靜態文件public 目錄。

  1. name: Setup Hugo 
  2.        uses: peaceiris/actions-hugo@v2 
  3.        with
  4.          hugo-version: '0.74.2' 
  5.          # extended: true 
  6.  
  7.      - name: Build 
  8.        run: | 
  9.          hugo --minify 
  10.           
  11.          ls public 
  12.          tar zcf ${version}-public.tar.gz public 
  13.          ls  

刪除當前目錄除public目錄外的所有文件, 然后將public目錄文件移動到當前目錄。

  1. namecommit 
  2.        run: | 
  3.          rm -fr archetypes 
  4.          rm -fr content 
  5.          rm -fr demo 
  6.          rm -fr static 
  7.          rm -fr themes 
  8.          rm -fr .DS_Store 
  9.          rm -fr 1.1.0-public.tar.gz 
  10.          rm -fr README.md 
  11.          rm -fr config.toml 
  12.          mv public/* ./ 
  13.          sleep 3 
  14.          ls -l  
  15.          rm -fr public  
  16.          git config --global user.email xxx@qq.com 
  17.          git config --global user.name cccc 
  18.          git add . 
  19.          git commit -m "update" -a 

提交當前的工作目錄到pages-git 分支。(到此pages-git分支已經存儲了更新后的靜態文件)

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

github pages訪問太慢了, 準備使用國內的gitee pages服務。在gitee創建一個倉庫。最后一部分代碼是將當前pages-git 分支代碼鏡像到gitee 項目的pages-git分支。

  1. name'get code ' 
  2.         uses: actions/checkout@v2 
  3.         with
  4.           submodules: true  # Fetch Hugo themes (true OR recursive) 
  5.           fetch-depth: 0    # Fetch all history for .GitInfo and .Lastmod 
  6.           ref: "pages-git" 
  7.       - name'Mirror to gitee' 
  8.         uses: pixta-dev/repository-mirroring-action@v1 
  9.         with
  10.           target_repo_url: 
  11.             git@gitee.com:devopsgo/devopsgo.git 
  12.           ssh_private_key: 
  13.             ${{ secrets.GIT_PRIVATE_KEY }} 

到此,代碼已經同步到了Gitee Pages。接下來觸發Gitee Pages 服務更新。(指定靜態目錄分支部署)


瀏覽器訪問devopsgo.gitee.io 就可以訪問了。到此發布完成了。


工作流已經創建好了, 最后每次發布博文的時候。使用vscode編寫markdown文檔,然后本地hugo serve 調試。完成后提交到主干分支,隨后GitHub Actions 就會運行CI/CD,自動發布。




擴展參考:SSH發布到云主機

  1. # - name: copy file via ssh password 
  2.     #   uses: appleboy/scp-action@master 
  3.     #   with
  4.     #     host: ${{ secrets.SSH_HOST }} 
  5.     #     username: ${{ secrets.SSH_USER }} 
  6.     #     password: ${{ secrets.SSH_PASSWD }} 
  7.     #     port: 22 
  8.     #     source: "./${{env.version}}-public.tar.gz" 
  9.     #     target: "/opt/" 
  10.          
  11.     # - name: executing remote ssh commands using password 
  12.     #   uses: appleboy/ssh-action@master 
  13.     #   with
  14.     #     host: ${{ secrets.SSH_HOST }} 
  15.     #     username: ${{ secrets.SSH_USER }} 
  16.     #     password: ${{ secrets.SSH_PASSWD }} 
  17.     #     port: 22 
  18.         # script: | 
  19.         #   rm -fr /var/www/newdevops/* 
  20.         #   mv /opt/${{ env.version }}-public.tar.gz /var/www/newdevops/ 
  21.         #   cd /var/www/newdevops/ && tar zxf ${{ env.version }}-public.tar.gz 
  22.         #   mv public/* ./  && rm -fr public  
  23.         #   chown nginx:nginx /var/www/ -R 
  24.         #   systemctl reload nginx  

到此,整個工作流程就完成了。望對你有所幫助!

 

責任編輯:姜華 來源: DevOps云學堂
相關推薦

2023-09-05 08:00:00

開源GreptimeDB

2010-09-27 10:19:09

DHCP工作流程

2009-06-05 10:26:05

struts工作流程

2022-11-02 15:11:44

LightHouseChrome插件

2011-03-31 10:54:01

Cacti工作流程

2020-07-27 08:44:22

存儲Kafka 流程

2010-07-13 16:21:22

FIX協議

2010-07-28 17:19:28

ICMP協議

2010-06-24 16:40:16

Bittorrent協

2015-04-07 11:47:18

運維管理IT運維

2009-07-27 14:13:15

2011-03-29 09:30:12

Cacti

2010-06-12 17:44:19

ARP協議

2010-06-23 14:46:54

DHCP協議

2010-08-30 09:07:12

DHCP工作流程

2023-06-05 08:14:17

RabbitMQ兔子MQ開源

2009-08-07 11:10:40

Netbeans ID

2011-12-14 09:58:58

JavajBPM

2022-12-21 08:20:01

2012-02-01 14:02:00

蘋果產品開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品一区中文字幕 | 国产视频亚洲视频 | 色综合久久天天综合网 | 久久午夜视频 | 日日夜夜草 | 国产高清在线观看 | 少妇无套高潮一二三区 | 91精品国产综合久久久动漫日韩 | 国产精品久久久久久久久污网站 | 久久综合色综合 | 国产精品久久久久久久久久久久 | 久久精品中文字幕 | 中文字幕乱码一区二区三区 | 久久国产综合 | 免费观看a级毛片在线播放 黄网站免费入口 | 一区二区久久 | 91精品国产综合久久婷婷香蕉 | 在线视频亚洲 | 久久精品免费 | 日韩欧美在线一区 | 波多野结衣电影一区 | 国产一区二区在线视频 | 二区在线视频 | 中文字幕a√ | 亚洲精品在线播放 | 国产精品久久久久久久久久久久久 | 成人三区| 91视频精选| 91视视频在线观看入口直接观看 | 久草在线 | 久草免费在线视频 | 成人在线播放 | 天堂中文在线观看 | 欧美6一10sex性hd | 91精品国产综合久久精品 | 伊人网综合在线 | av在线免费看网址 | 精品亚洲一区二区 | 免费看黄色国产 | 午夜合集 | 婷婷久久网|