将博客迁移到了 COS 上...

将博客迁移到了 COS 上...

发表于 2022/07/23 更新于 2022/07/23 501 字 2 分钟
AI 摘要 由 AI 自动生成

|

之前博客一直是放在 CloudBase 云开发上的。主要用了云开发的静态网站托管和云函数功能。自从评论系统维护之后,云函数也不再使用了。

前几天收到了腾讯云的通知,云开发计费方式调整,将于 8 月后使用“基础套餐 + 按量付费”模式,需先购买带有一定配额的基础套餐,超出配额部分再按使用量付费。

20220724135514

虽然仍然有免费版本,但静态网站托管必须使用按量计费套餐才能使用,换言之,免费用户就不能再使用云开发做静态网站托管了。

在我理解下,CloudBase 是一个能力集合服务,静态网站托管依赖于 COS 和 CDN,云函数依赖于 Serverless,云托管依赖于容器服务。其它服务都可以非常灵活的按量计费的,为什么到云开发这打包之后就有了门槛了。。。

最后决定还是迁移吧。迁到 COS 去。

本次调整

  • 原站迁移到腾讯云 COS 成都节点
  • 全站支持 IPv6 访问
  • 调整了打包流程,增加了对静态网站的制品管理

CODING Jenkinsfile

还是放一个 CODING 的 Jenkinsfile,如果有一样想迁移的小伙伴,可以简单改改就能用了。

pipeline {
  agent any
  stages {
    stage('Checkout') {
      steps {
        // 企业微信通知
        sh '''curl \'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=\'"${WEWORK_BOT}"\'\' \\
-H \'Content-Type: application/json\' \\
-d \'{
"msgtype": "markdown",
"markdown": {
"content":
"# \'$JOB_ID\' 开始构建
>项目名称:\'$PROJECT_NAME\'
>Git Commit:\'$GIT_COMMIT_SHORT\'
>Git 提交人:\'$GIT_COMMITTER_NAME\'"
}
}\''''
        checkout([
          $class: 'GitSCM',
          branches: [[name: env.GIT_BUILD_REF]],
          userRemoteConfigs: [[
            url: env.GIT_REPO_URL,
            credentialsId: env.CREDENTIALS_ID
          ]]])
        }
      }
      stage('Node.js') {
        steps {
          // CODING自己带的 nodejs 版本太低了,换成12.x版本
          dir('/root/.cache/downloads') {
            sh 'wget -nc "https://coding-public-generic.pkg.coding.net/public/downloads/node-linux-x64.tar.xz?version=v12.22.7" -O node-v12.22.7-linux-x64.tar.xz | true'
            sh 'tar -xf node-v12.22.7-linux-x64.tar.xz -C /usr --strip-components 1'
          }
          sh 'node -v'
        }
      }
      stage('Build') {
        steps {
          // 博客前台的 GIT 提交标记
          sh 'sed -i \'s/Preview/\'"$GIT_COMMIT_SHORT"\'/g\' _config.butterfly.yml'
          sh '''npm install -g hexo-cli@4.3.0
npm install -g
hexo version'''
          sh 'hexo g'
        }
      }
      stage('COS Deploy') {
        steps {
          // 上传到 COS
          sh "coscmd config -a ${COS_SECRET_ID} -s ${COS_SECRET_KEY} -b ${COS_BUCKET_NAME} -r ${COS_BUCKET_REGION}"
          sh 'coscmd upload -r ./public/ /'
        }
      }
      stage('CODING Upload') {
        steps {
          // 将最新版本的打包文件发布到 CODING 的一个 GIT 仓库中
          sh 'hexo d'
          script {
            // 定义了一个制品版本号,GIT-提交标记
            ARTIFACT_VERSION = "GIT-${env.GIT_COMMIT_SHORT}"
          }
          // 调用 CODING 插件上传制品到制品库
          codingArtifactsGeneric(files: 'public/*', repoName: 'static_html', version: ARTIFACT_VERSION, zip: 'web_static.zip')
        }
      }
    }
    post {
      // 构建成功的企业微信通知
      success {
        sh '''curl \'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=\'"${WEWORK_BOT}"\'\' \\
-H \'Content-Type: application/json\' \\
-d \'{
"msgtype": "markdown",
"markdown": {
"content":
"# \'$JOB_ID\' 构建成功
>项目名称:\'$PROJECT_NAME\'
>Git Commit:\'$GIT_COMMIT_SHORT\'
>Git 提交人:\'$GIT_COMMITTER_NAME\'"
}
}\''''
      }
    }
  }

需要关联的环境变量

COS_BUCKET_NAME:COS 桶名称 COS_BUCKET_REGION:COS 桶所在地域 COS_SECRET_KEY:有 COS 操作权限的腾讯云访问密钥 KEY COS_SECRET_ID:有 COS 操作权限的腾讯云访问密钥 ID WEWORK_BOT:企业微信 BOT 的 KEY

制品库的效果

之前使用hexo d的方式推送打包的静态文件,我们没法看到提交历史。所以打算使用制品库来管理一下打包的文件。

20220724143840

这样可以清晰的 Get 到每次提交打包出来的静态文件了。

作者: 小谈谈
声明: 本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。