主頁 > 軟體工程 > 博客搬家 - 記第四次搬家(hugo建站推送到谷歌云存盤)

博客搬家 - 記第四次搬家(hugo建站推送到谷歌云存盤)

2020-09-10 14:19:26 軟體工程

寫在前面,搬遷記錄

記錄我的博客這次搬家程序,我的博客之前經歷過:

  1. wordpress
  2. github page
  3. Bitcron - 機制很不錯(寫完的博客自動保存到dropbox并發布,可惜搜索引擎的收錄不是很好,)
  4. 這次搬遷 2020年4月10日 初步完成

博客的架構

現在寫博客一直采用 markdown 語法,所以也是本次可以順利遷移的一大前提, 最近兩年一直用的是 Bitcron ,非常順滑,每次寫完 md 檔案,直接保存即可(博客立即更新可見),不過一直搜索引擎的收錄不是很好,如我直接搜索 "Bob Jiang" 我的博客始終排不到第一個,很奇怪......

索性現在申請了一年免費的 google cloud,就做個搬遷,

搬遷之后的博客存盤在 google cloud storage 上,DNS也順便切換到 Cloudfare 上了, 博客系統使用的是 hugo ,主題用的是 Ezhil,博客整體存放于 github上,每次提交到github會自動出發一次 github action,推送到谷歌存盤,

博客的作業流

博客的作業機制如下:

  1. 本次撰寫博客(md檔案) 并本次檢查 (hugo server)
  2. github push 到 github 倉庫
  3. 每次 push 或者 pull request 會出發 github action
  4. github action 進行 hugo 編譯
  5. github action 推送博客靜態檔案到 谷歌存盤

博客的配置 (手把手教你配置)

第一步,配置hugo

安裝 hugo 可以參考我朋友的博客,免費搭建一個靜態博客,搭建完成后,關于主題,這里我采用的 hugo 主題是 Ezhil,可以直接用 github fork一份 hugo 主題,具體操作參考 Ezhil,

hugo和主題都準備好后,目錄結構如下:

  • content/ 博客的源檔案,markdown格式
  • public/ 博客的靜態網頁,hugo自動生成(根據你選擇的模板生成漂亮的靜態網頁)
  • static/ 博客的全域靜態資源,如全域使用的圖片
  • theme/ 博客的主題
  • config.toml 博客的組態檔

第二步,新建github倉庫

github上需要創建一個新的倉庫 (假設你已經有了github賬號),然后把本地的博客目錄中,除了 public/ 目錄的內容推送到代碼倉庫中,

  1. 訪問 github,登錄(注冊)賬號
  2. 新建一個倉庫,如下圖,點擊 New Repository

new github repository

  1. 填寫倉庫的名字,選擇倉庫的可見性(默認公開的、可以選擇私有的),勾選初始化時創建 README 檔案,如下圖:

create github repository

下一步需要創建并配置 谷歌存盤 - Google Cloud Storage,然后再回來配置 github secrets

第三步,google cloud storage

這里我用的谷歌存盤,也可以選擇國內的阿里云,騰訊云的OSS服務,

谷歌存盤 - Google Cloud Storage,需要創建一個存盤, 訪問 Console 如下圖google cloud storage console

3.1 創建存盤(bucket)

google cloud storage create bucket

創建存盤,注意:名字必-須是 www.yourdomain.com 不能設定為根域名(即這里需要是 CNAME 的名字設定bucket名字), 根域名可以通過 DNS 的設定來實作,

注意存盤磁區(bucket)名字必須是 CNAME 域名的名字(必須是完全一致),如我的磁區名字是 www.bobjiang.com,存盤磁區不支持直接改名,可以先創建新名字的存盤磁區,然后把資料轉移過去來實作,

input bucket name

訪問權限,可以修改為"統一"方式,這樣可以簡單操作,bucket permission

3.2 增加訪問權限

下面是為新建的存盤磁區(bucket)增加訪問權限,點擊"修改存盤磁區權限"bucket update permission點擊"添加成員"add all Users輸入 新成員:allUsers, 角色:Storage Object Viewer (要嚴格檢查這里的角色權限)add roles to allUsers

最后可以檢查一下權限的設定,這里應該提示如下:"在互聯網上公開"check bucket public

3.3 權限設定

這里主要設定 服務賬號 (service account),為了給其他的第三方進行服務(如接下來我們用 github action 連接)授權,

  1. 進入服務賬號頁面,選擇"IAM和管理",點擊"服務賬號",如圖

google service account

  1. 點擊"創建服務賬號"

google service account

  1. 輸入"服務賬號名稱","服務賬號ID",和"服務賬號說明"

google service account

  1. 第二步默認值即可,進入第三步如下圖,點擊"創建密鑰"

google service account

  1. 選擇密鑰型別 JSON

google service account

  1. 密鑰生成后,保存到本地(一定保存好密鑰,不要丟失),使用這個密鑰和服務賬號,就可以訪問你的谷歌云存盤,

google service account

  1. 記住服務賬號的郵箱,如下圖:

google service account email

下一步配置 github secrets

第四步,github secrets

如圖創建如下的兩個 github secrets:

  1. GCP_SA_EMAIL - 值可以參考 服務賬號的創建小節
  2. GCP_SA_KEY - 值為下面命令的結果(用本地的 JSON 密鑰生成,命令如下)

cat your-json-key.json | base64

add github secrets

第五步,github action

Github action的作用是:

  1. 有代碼push 或者pull request到倉庫時,自動出發下列動作
  2. 準備一個 ubuntu 編譯環境
  3. 準備 hugo 環境
  4. 進行 hugo 編譯
  5. 編譯后的 public 目錄 (靜態網頁) 上傳到 谷歌存盤 - Google Cloud Storage

新建 github action ,并點擊 "set up workflow yourself"

github actiongithub action setup your workflow

我的 github action 代碼如下:

# github action的名字,可以隨意改
name: build hugo and deploy to google cloud platform (storage)

# 什么時候呼叫 action,這里是當 master 上有代碼 push 或者 pull request 會觸發 github action
on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

# 環境變數的設定,下面會用到
env:
  GCP_SA_EMAIL: ${{ secrets.GCP_SA_EMAIL }}
  GCP_SA_KEY: ${{ secrets.GCP_SA_KEY }}
  GCP_BUCKET: www.bobjiang.com

# 任務的準備,用 ubuntu最新的環境
jobs:
  setup-deploy:
    name: Setup and Deploy
    runs-on: ubuntu-latest
    steps:

# 檢出master分支的代碼 checkout
    - name: Checkout
      uses: actions/checkout@v2

# 準備hugo環境
# hugo ready & build
    - name: Setup Hugo
      uses: peaceiris/actions-hugo@v2
      with:
        hugo-version: '0.62.2'
        # extended: true

# hugo 編譯生成靜態網頁 public目錄內的內容
    - run: hugo --minify

# deploy to google storage
# 準備 連接到 google 云
    - uses: GoogleCloudPlatform/github-actions/setup-gcloud@master
      with:
        version: '285.0.0'
        project_id: ${{ secrets.GCP_PROJECT_ID }}
        service_account_email: ${{ secrets.GCP_SA_EMAIL }}
        service_account_key: ${{ secrets.GCP_SA_KEY }}
        export_default_credentials: true
# 檢查 google 云的連接結果
    - run: gcloud info
# 用 gsutil 推送 public 目錄內容到谷歌云存盤
    - run: gsutil -m rsync -d -c -r public gs://$GCP_BUCKET
    - run: gsutil -m setmeta -h "Cache-Control:public, max-age=3600" gs://$GCP_BUCKET/**/*.html
    - run: gsutil -m setmeta -h "Cache-Control:public, max-age=31536000" gs://$GCP_BUCKET/js/*.js
    - run: gsutil -m setmeta -h "Cache-Control:public, max-age=31536000" gs://$GCP_BUCKET/css/*.css

總結

經過本次梳理后,寫博客完全是本地操作且可以本地除錯, 寫博客在 hugo 專案的 content 目錄內寫 markdown 檔案 除錯可以用 hugo server 本地訪問 http://localhost:1313/

效果滿意后,可以把 content 目錄內的改動 推送到 github 倉庫 后面就是自動化準備環境編譯、部署(github action)到谷歌云存盤,

所以作為一個業余寫手,需要更加關注的是內容產出,
自動化啦......

本文首發于 Bob Jiang的博客 ,轉載請聯系 Bob Jiang

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/2430.html

標籤:其他

上一篇:權威的國際敏捷認證Certified Scrum Master (CSM)

下一篇:解決docker中apt-get不管用

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more