Coding持续集成概述

这篇还是需要在本地处理好静态网站推送到coding,如果不想在本地环境用hexo生成好静态网站,可以试试《Github Actions自动部署Hexo博客

如果Github访问总是不太稳定,可以试试《Coding持续集成自动部署Hexo博客

一直以来,本站都是以 GitHub为主, Coding为辅,但每次更新网站文章,都需要部署两次,有点麻烦。尽管我用 Windows脚本语言实现了双击一次自动部署一个站点,双击两次全部搞定。

但今天发现可以通过 Coding来实现同步到 GitHub上,当然还是要试试看。早上发现一篇文章是关于 GitHub自动推送到 Coding的,但需要借助 zeit now来实现,而且过程有点复杂对于我来说,最要紧的它不是从 CodingGitHub

配置Coding-Ci

首先进入 Coding中的项目页面左侧栏找到 持续集成中的 构建计划,如果没有则需要自行开启,步骤为左下方的项目设置→项目与成员→功能开关,找到持续集成这一项打开后,返回之前的项目页面。

可以看到在左上方的构建计划旁边有一个蓝色+按钮,点击它则进入到选择构建计划模板页面,拉到网页最底部可看到 自定义构建过程,或者通过 Ctrl+F搜索 Jenkinsfile,也能快速找到,点击 自定义构建过程进入下一步操作。

构建计划名称自己命名,代码仓库下的代码源选择你要处理的仓库名,我这里是 Coding,配置来源为使用静态配置的Jenkinsfile,然后确定后进入 流程配置,选择 文本编辑器

这时候先暂停一会,得先去登录 GitHub,定位到如此网址 https://github.com/settings/profile,点击 Developer settings,新建一个token,然后勾选 repo后确定申请,记下这个token。

github token

然后把下面代码粘贴到文本编辑器中保存一下,如果复制不便可进入 https://gitee.com/ct2/web/blob/master/coding-sync-github.md复制。

pipeline {
 agent any
 stages {
   stage('检出') {
     steps {
       checkout([
         $class: 'GitSCM',
         branches: [[name: env.GIT_BUILD_REF]],
         userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]
       ])
     }
   }
   stage('推送部署') {
     steps {
       echo '正在推送文件...'
       sh 'git fetch $FETCH'
       sh 'git push -f $FETCH HEAD:master'
       echo '已完成推送.'
     }
   }
 }
}

看下图,这个时候我们来配置一下环境变量, https://用户名:token@github.com/用户名/仓库名.git,这里的用户名为你github的用户名。这段配好后,看下面图,添加到环境变量,勾选保密,这样就不会把token在构建日志中输出了,提高了安全性。

coding-ci添加环境变量

这样就算完成了。进入 coding中的代码仓库,用 web上传一个文件看看,然后你会发现后台自动进行构建,此时你打开 GitHub的代码仓库,刷新一下看看,如果成功的话,通过 coding网页上传的文件在 GitHub上也会出现,删除刚上传的这个文件也会发现 GitHub中的文件被删除了。

Coding-Ci免费额度

不过 Coding持续集成是有一定免费额度的,就在持续集成中的 构建节点中即可看到,每周构建次数200次,单次构建时长上限为30分钟,每月总构建时长为1000分钟,也足够用了。同样目前一个仓库是 2 GiB,在仓库设置中可以看到。

2020年9月5日,Coding对免费额度又进行了“优化”,不按次数了,按每月总时长计算,每月 1 日的 0 点将会重置每月构建分钟数,额度还是1000分钟,单次构建时长上限为30分钟,但因为不计算次数,类似于推送同步到Github,构建hexo这种时常不到1分钟的来讲,是有利的。

如此一来,即可每次生成好网站文件后,还可以通过coding的网页上实现文件和文件夹的上传更新,对于非程序员来讲,有时候通过web端上传可能对新手更为友好。

尽管 Github也能实现网页端的文件和文件夹的上传,但稳定性似乎不如 Coding的网页版上传,不过 Github Pages的服务倒是比 Coding Pages要稳定些,对于我这边的网络来说。

在强调一点,由于 coding是不需要 CNAME文件的,如果这个时候coding中没有 CNAME,那么就会自动删除 GithubCNAME,导致 Github Pages 无法正常访问,解决办法就是在coding代码仓库根目录也放置一个 CNAME文件,并且文件内容填写你的域名即可,不需要写 http协议。

最后你还可以通过《Vercel Zeit now自动部署Github为hexo博客加速》,目前(2020年),国内访问Vercel的速度还是很不错的。