<!--more-->
前言
Hugo 是由 Go 语言实现的静态网站生成器。简单、高效、快速部署,可以自定义使用各种开源主题,本站采用 LoveIt。
静态网站托管,考虑到国内、国外的差异,可选用不同的静态网站托管服务,国内Coding.net,国外有Netlify、GitHub,都提供了免费的托管服务及构建服务,通过域名解析,根据ip来源实现dns解析访问。
源码库托管
- Coding.net
- Github
git提交代码推送,调整.git配置config文件,实现push同时推送到分两个仓库
[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/
发布库项目令牌:项目-开发者选项-定义
参考如下
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环境及触发条件即可
域名解析
访问效果
根据访问者ip的来源,通过dns解析线路实现
国内IP
国外IP
公众号:静哥Coder