Google Bazel

Google Bazel Google 开源的构建工具。

Facebook Docusaurus

Facebook Docusaurus Facebook 开源的项目文档快速构建工具。

在Travis CI中安装 Bazel 并配置 Docusaurus 自动部署环境变量。

dist: trusty
sudo: required
osx_image: xcode8
language: java

os:
  - linux
  - osx

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 来构建 nodejs 应用(Docusaurus)

在 WORKSPACE 中添加 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 @nodejs//:npm install

website-start: website-install
    $(BAZEL) run @nodejs//:npm start

website-build: website-install
    $(BAZEL) run @nodejs//:npm run build

website-deploy: website-install
    $(BAZEL) run @nodejs//: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.yml 中对应就好了。在创建 access token 的时候记得给添加 deploy 权限,否则 travis 任务会出错。

示例

这是现在正在开发的 Pumpkin IM, 可以在本项目中查阅所有关于本文中提到的使用方式。

01-17 09:27