Blog Migration Cloudflare Pages

起因

一開始我的blog就選了這種靜態的blog,後來github帳號不小心踩到TOS被封掉就沒了,弄一弄變成wordpress了,但wordpress在Markdown上的支援還是不夠好。故想了兩周還是再把他轉回來。

演變

graph LR hugo-->wordpress-->h[hugo]

遷移過程

文章

其實我在wordpress上面也適用markdown寫文章的,所以文章的遷移就只是複製貼上。

轉址

wordpress時期,我有使用sitemap extension做一點簡單的SEO,所以可以在google Search Console看到有一些網址是有被google索引起來的。 在Google 搜尋結果裡面雖然排名沒有很前面,但是總不能讓人點進去都是404,所以這邊稍微翻了一下hugo 的doc,比較少提到這點, 只有在這邊有一點點Automatic loading,後來去看到Hugo有推薦的部屬方式Netlify上有提供redirect的方式,所以就朝這方向去查。

我後來用cloudflare pages做部屬

在Cloudflare 上 ,有提供Redirect,做網頁的轉址,只要在網站上提供static file 給cloudflare看

內容為

[source] [destination] [code?]
[來源相對地址] [目標相對地址] [轉址 HTTP code]

e.g.

/home/ / 308

就可以做redirect

資料夾格式

+---archetypes
+---content
|   +---about
|   \---posts
+---data
+---layouts
|   \---shortcodes
+---static

_redirects 要放在static底下

Cloudflare有支援一些placeholder,splats 去做簡單的redirect規則,可以自己看文件XD

部屬

cloudflare page的部屬我目前的流程

  1. 在電腦上建立專案並做第一次部屬
    • wrangler pages deploy [DIRECTORY] [OPTIONS]
    • wrangler會提示你要建立新專案還是使用既有專案
    • 然後再詢問你要使用哪個git branch作為production
  2. 寫進Jenkinsfile
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    
    pipeline {
        agent any
    
    
         stages {
            stage('Checkout') {
                steps {
                    script {
                        sh 'git submodule init'
                        sh 'git submodule update --recursive'
                    }
                }
    
            }
    
            stage('Hugo Building') {
                steps {
                    script {
                       sh 'hugo'
                    }
                }
            }
    
    
            stage("Cloudflare Pages Deploy..."){
                steps{
    
                    echo 'Deploying....'
                    nodejs('LTS') {
                        withCredentials(
                            [string(credentialsId: '2c1e51e1-f360-4e21-95d2-bf710722b8c6', variable: 'APITOKEN')])
                            {
                            sh 'CLOUDFLARE_API_TOKEN=$APITOKEN wrangler pages deploy public --project-name blogs --branch=master'
                            }
                        }
                    }
                }
    
                }
        post {
            always {
                    cleanWs()
                    }
            }
    }
    

CLOUDFLARE_API_TOKEN=$APITOKEN wrangler pages deploy public --project-name blogs --branch=master

--branch=master 是為了讓他使用master branch 這個參數去部屬,我Jenkins 沒有很熟,拉下來在部屬的時候他都用Head去Deploy,上去都只會在Preview env,故新增此參數

有知道為什麼的在留言跟我講一下 謝謝

  1. Push to Git
  2. Jenkins pipeline 部屬

有問題可以在下方utterances留言喔

updatedupdated2024-08-192024-08-19
載入評論