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, 可以在本项目中查阅所有关于本文中提到的使用方式。