Google Bazel
Google Bazel https://bazel.build/ Google 开源的构建工具.
Facebook Docusaurus
Facebook Docusaurus https://docusaurus.io/ Facebook 开源的项目文档快速构建工具.
在 Travis CI 中安装 Bazel 并配置 Docusaurus 自动部署环境变量.
- dist: trusty
- sudo: required
- osx_image: xcode8
- language: java
- os:
- - Linux
- - OS X
- env:
- - V=0.21.0
- - V=0.20.0
- before_install:
- - OS=Linux
- - ARCH=x86_64
- - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then OS=darwin; fi
- - GH_BASE="https://github.com/bazelbuild/bazel/releases/download/$V"
- - GH_ARTIFACT="bazel-$V-installer-$OS-$ARCH.sh"
- - CI_BASE="http://ci.bazel.io/job/Bazel/JAVA_VERSION=1.8,PLATFORM_NAME=$OS-$ARCH/lastSuccessfulBuild/artifact/output/ci"
- - CI_ARTIFACT="bazel--installer.sh"
- - URL="$GH_BASE/$GH_ARTIFACT"
- - if [[ "$V" == "HEAD" ]]; then CI_ARTIFACT="`wget -qO- $CI_BASE | grep -o'bazel-[-_a-zA-Z0-9\.]*-installer.sh'| uniq`"; fi
- - if [[ "$V" == "HEAD" ]]; then URL="$CI_BASE/$CI_ARTIFACT"; fi
- - echo $URL
- - wget -O install.sh $URL
- - chmod +x install.sh
- - ./install.sh --user
- - rm -f install.sh
- - export GIT_USER="${GH_NAME}"
- - Git config --global user.name "${GH_NAME}"
- - Git config --global user.email "${GH_EMAIL}"
- - echo "machine github.com login ${GH_NAME} password ${GH_TOKEN}"> ~/.netrc
使用 Bazel 来构建 Node.JS 应用 (Docusaurus)
在 WORKSPACE 中添加 https://github.com/bazelbuild/rules_nodejs
- load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
- git_repository(
- name = "build_bazel_rules_nodejs",
- remote = "https://github.com/bazelbuild/rules_nodejs.git",
- tag = "0.16.5",
- )
- load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies")
- rules_nodejs_dependencies()
- load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories")
- node_repositories(["//website:package.json"])
使用 Makefile 简化 Bazel 构建命令
- BAZEL := "bazel"
- all: build website-deploy
- website-install:
- $(BAZEL) run @Node.JS//:NPM install
- website-start: website-install
- $(BAZEL) run @Node.JS//:NPM start
- website-build: website-install
- $(BAZEL) run @Node.JS//:NPM run build
- website-deploy: website-install
- $(BAZEL) run @Node.JS//:NPM run publish-gh-pages
- build: website-build
- $(BAZEL) build
- clean:
- $(BAZEL) clean --expunge
- rm -rf website/node_modules website/I18N website/build website/package-lock.JSON
其他
需要操作 Travis 为项目添加三个环境变量, 分别为 GH_NAME, GH_EMAIL, GH_TOKEN. 当然也可以该成为其他名字, 只要和 .travis.YAML 中对应就好了. 在创建 access token 的时候记得给添加 deploy 权限, 否则 travis 任务会出错.
示例
这是现在正在开发的 Pumpkin IM https://deepinthink.com/pumpkin , 可以在本项目中查阅所有关于本文中提到的使用方式.
来源: https://www.cnblogs.com/bluearty/p/10280351.html