Bootstrap

Gitbook自动发布GitHub脚本

GitBook自动发布到GitHub脚本

GitHub地址
码云地址

概述

我在使用GitBook的时候,搭配使用了GitHub Pages搭建主页。由于GitBook静态文件发布到GitHub较为繁琐,故开发了脚本来实现自动发布。

本地文件介绍

首先在本地创建了一个存放Gitbook基础文件的目录gitbook,创建了一个Java项目用来同步GitBook生成的静态文件GitHub

  • gitbook文件目录

    gitbook目录

  • java项目结构

    Java项目结构

传统发布流程

  1. 编写md文章。

  2. 使用gitbook build命令生成html静态文件,使用后会在gitbook基础文件目录下的_book文件夹生成静态文件。

  3. 复制_book文件夹下所有文件到java项目根路径下。

  4. 使用git命令将java项目新增内容同步到github。

    由于发布流程的第2、3、4步太过繁琐,故开发一个脚本,按照顺序执行2、3、4步完成自动发布的功能。

自动脚本发布

支持手动同步和定时同步,可实现gitbook文件一键gitbook build,然后发布到GitHub上。

手动同步

不需要部署服务器

  1. 跳转到手动脚本:GitbookManualScript.java

  2. 手动指定必要参数

    /**
     * gitbook本地目录
     */
    private final static String GITBOOK_PATH = "/Users/yangjunwei/gitbook";
    /**
     * github对应本地项目目录
     */
    private final static String GITHUB_PROJECT_PATH = "/Users/yangjunwei/IdeaProjects/gitbook-technology";
    /**
     * github对应remote
     */
    private final static String GITHUB_REMOTE = "origin";
    /**
     * github分支名称
     */
    private final static String GITHUB_BRANCH = "main";
    
  3. 执行main()方法

定时同步

可部署到服务器,参考安装教程

  1. 修改配置文件:application.properties中的属性值

    #gitbook本地目录
    gitbook.path=/Users/yangjunwei/gitbook
    #github项目本地路径
    github.project.path=/Users/yangjunwei/IdeaProjects/gitbook-technology
    #github的remote值
    github.remote=origin
    #github分支名称
    github.branch=main
    #定时同步gitbook的cron表达式
    auto.sync.gitbook.cron='0 0 23 * * *'
    

2.启动 Application.java

实现思路

1.使用Java执行命令gitbook build

2.Java实现复制文件夹下的所有文件,将_book文件夹下所有文件复制到Java项目根路径下。

3.使用git命令将java项目新增内容同步到github。

​ 同第一步一样,使用Java依次执行以下命令:

  • git add .
  • git commit -m {msg}
  • git push {remote} {branch}
参考链接

Java实现执行系统命令
Java实现复制文件夹下的所有文件

;