title: 语雀云端写作 Coding 持续集成实现自动部署
date: 2020/4/8 20:46:25
tags:



Hexo:语雀云端写作 Coding 持续集成实现自动部署


ps:参考文章:https://www.yuque.com/u46795/blog/dlloc7 
上文所用的是GitHub action,不过我们用的是coding平台,好处是国内访问速度快,部署简单。
首先要有一个hexo博客,此处略过,下面来介绍一下在部署过程中遇到的一些坑。


原理



coding自动构建hexo



参考文章:http://www.mamicode.com/info-detail-2922484.html
他的pipeline有些坑,node不支持,附上我的配置:
下面这个是直接粘过来的,方便理解



那么我们的访问地址就是[https://root:abcdefg@e.coding.net/test/test.git](https://root:abcdefg@e.coding.net/test/test.git)


pipeline {
  agent any
  stages {
    stage('hexo') {
      steps {
        sh 'npm install -g hexo-cli'
      }
    }
    stage('拉取仓库') {
      steps {
        sh 'git clone https://令牌用户名:令牌密码@e.coding.net/lpdswing/hexo_blog.git .'
        sh 'npm install hexo --save'
        sh 'npm install yuque-hexo --save'
        sh 'npm install hexo-deployer-git --save'
      }
    }
    stage('发布') {
      steps {
        sh 'npm run start'
        sh 'mv source/_yuque/* source/_posts'
        sh 'ls source/_posts'
        sh 'hexo clean && hexo g -d'
        
      }
    }
  }
}


坑1 :yuque-hexo会把我们本来的post文件夹直接删掉覆盖,导致本来有的文章被删除,所以这里再配置yuque的时候文章目录使用的是yuque,一会会介绍到,yuque-hexo的配置。曲线救国,我们再自动构建的时候移动文章到post文件夹,然后再构建静态文章。


腾讯云函数



参考第一个文章的代码,附上配置:


# -*- coding: utf8 -*-
import requests

def main_handler(event, context):


    url = "https://xxxxx" # 这个url再coding自动构建的触发规则>API触发哪里复制过来

    payload = {"ref": "master","envs": []}
    headers = {
    'Content-Type': 'application/json',
    }
    # coding的api触发用到是http basic auth验证,这里的用户密码也去coding的项目token拷贝
    # 开发者选项-项目令牌,如果没有就新建,仓库权限全勾上
    response = requests.post( url, headers=headers, json = payload,auth=('令牌用户名','令牌密码'))

    return response.text



语雀配置



文章发布的时候勾选推送给关注的人选项才会调用webhook。


hexo本地配置



{
  "name": "hexo-site",
  "version": "0.0.0",
  "private": true,
  "yuqueConfig": {
    "baseUrl": "https://www.yuque.com/api/v2",
    "login": "你的个人路径",
    "repo": "你的知识库名称",
    "mdNameFormat": "title",
    "postPath": "source/_yuque",
    "token":"你的token,再用户设置的token那里新建",
    "onlyPublished": false
    
  },
  "scripts": {
    "build": "hexo generate",
    "clean": "hexo clean",
    "server": "hexo server",
    "sync": "yuque-hexo sync",
    "deploy": "hexo deploy",
    "start": "yuque-hexo clean && yuque-hexo sync"
  },
  "hexo": {
    "version": "4.2.0"
  },
  "dependencies": {
    "hexo": "^4.2.0",
    "hexo-generator-archive": "^1.0.0",
    "hexo-generator-category": "^1.0.0",
    "hexo-generator-index": "^1.0.0",
    "hexo-generator-tag": "^1.0.0",
    "hexo-renderer-ejs": "^1.0.0",
    "hexo-renderer-marked": "^2.0.0",
    "hexo-renderer-stylus": "^1.1.0",
    "hexo-server": "^1.0.0",
    "yuque-hexo": "^1.6.4"
  }
}



把hexo的源码push到coding


在语雀发布一篇文章,发现文章同步过去了,大功告成!
ps: coding有时候会有构建失败的问题,目前还不清楚是啥原因,修改一下文章再发布一次搞定。