Hugo博客双线部署

目录

前言

Hugo 是由 Go 语言实现的静态网站生成器。简单、高效、快速部署,可以自定义使用各种开源主题,本站采用 LoveIt。

静态网站托管,考虑到国内、国外的差异,可选用不同的静态网站托管服务,国内Coding.net,国外有Netlify、GitHub,都提供了免费的托管服务及构建服务,通过域名解析,根据ip来源实现dns解析访问。

源码库托管

  • Coding.net
  • Github

git提交代码推送,调整.git配置config文件,实现push同时推送到分两个仓库

1
2
3
[remote "origin"]
    url = https://github.com/linsage/blog.git
    url = https://e.coding.net/linsage/blog.git

发布库托管

发布库 = 静态网站资源

  • Coding.net:定义发布库(区别于源代码库,方便管理和部署)并开启静态网站服务
  • Github:定义 xxx.github.io 来实现托管
  • Netlify:提供直接托管

Coding.net(国内线)

主机位置:新加坡 腾讯云

定义构建计划

基于Jenkinsfile,基于docker环境,公开镜像库,https://hub.docker.com/

发布库项目令牌:项目-开发者选项-定义

参考如下

 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
46
47
48
49
pipeline {
  agent {
    docker {
      image 'monachus/hugo:v0.68.3'
    }
  }
  stages {
    stage('检出(源码库)') {
      steps {
        checkout([$class: 'GitSCM', branches: [[name: 'master']],
        userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])
      }
    }
    stage('构建并推到成品库') {
      steps {
        sh 'hugo version'
        sh 'export HUGO_ENV=production'
        sh 'hugo --minify --gc'
        sh 'tar -czf latest.tar.gz -C ./public .'
        sh 'curl -T latest.tar.gz -u 用户名:密码 https://用户名-generic.pkg.coding.net/源码库/composer/latest.tar.gz'
      }
    }
    stage('清除临时目录') {
      steps {
        sh 'rm -rf *'
        sh 'ls'
      }
    }
    stage('下载成品并发布(发布库)') {
      steps {
        sh 'rm -rf .git'
        sh 'curl -L -u 用户名:密码 \'https://用户名-generic.pkg.coding.net/源码库/composer/latest.tar.gz\' -o latest.tar.gz'
        sh 'ls'
        sh 'tar -xvf latest.tar.gz'
        sh 'ls'
        sh 'git init'
        sh 'git remote add origin https://e.coding.net/用户名/发布库.git'
        sh 'git add --all'
        sh 'git commit -m ${GIT_COMMIT} '
        sh 'git push -f https://发布库项目令牌(用户名):发布库项目令牌(密码)@e.coding.net/用户名/发布库.git HEAD:master'
      }
    }
    stage('通知') {
      steps {
        sh 'echo '推送通知'
      }
    }
  }
}

开启静态网站

Netlify(国外线)

主机位置:新加坡 digitalocean

配置相当简单,界面化配置,配置hugo环境及触发条件即可

域名解析

访问效果

效果:https://linsage.com

根据访问者ip的来源,通过dns解析线路实现

国内IP

国外IP