# TIP 第一种【AMD】的处理器
arch : amd64          # optional, this is default, routes to a full VM
os : linux            # optional, this is default
dist : focal          # or bionic | xenial | trusty | precise with xenial as default

# TIP 第二种【ARM】的处理器
## 处理器架构，影响【VM】和【LXD】的选用
#arch: arm64-graviton2 # in AWS over Graviton2 CPU
## 虚拟机的架构类型
#virt: vm              # required, routes to a 'full VM' instance
## 操作系统
#os: linux             # required for arch different than amd64
## 发行版本
#dist: focal           # or bionic | xenial | trusty | precise with xenial as default
#group: edge
#

# ————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

# 设置语言
language : node_js

# 设置语言版本
node_js : "12.16.1"

# 这种方式，更为专业，会从【$HOME/.npm or node_modules】中自动选择。（【npm install】和【npm ci】，存在区别）
cache : npm
# 这种方式，较为死板
#cache:
#  directories:
#    - node_modules #缓存依赖



before_cache :
- echo 'before_cache'

# 构建生命周期
# S: Build Lifecycle


# 【install】阶段之前执行
before_install :
- echo 'before_install'
# 后续很多命令，都要用到【nps】这个工具
# WARN 此处，关于【清除缓存】的处理
- pwd
- ls node_modules
# WARN 如果没有【npm install "github:hanshou101/use-on-demand#master" --force】的话，则【Travis】必须要清除缓存，才能正常运行这个项目。（就很奇怪？？？？？？）
#- echo '清除缓存开始'  &&  npm cache clean --force  &&  rm -rf node_modules package-lock.json  &&  echo '清除缓存完毕'
- npm i nps -g
- npm i codecov -g
install :
# WARN 在【npm install】之前使用这句话，避免了【找不到  use-on-demand/node_modules/use-on-demand】的错误。
- npm install "github:hanshou101/use-on-demand#master" --force
- npm i

# 【script】阶段之前执行
before_script :
- echo 'before-script'
script :
# 开始进行测试报告
- npm run test____jest
# 分成两句写，这样前面的【测试】失败后，后面的【codecov】仍然能执行。
- codecov
# 生成静态文件
- npm run vuepress____docs:build
- npm run vuepress____gen-sitemap
# 生成【typedoc】TypeScript文档
- npm run ts____build-typedoc


# 【script】阶段失败时执行
after_failure :
- echo 'after_failure'

# 【script】阶段成功时执行
after_success :
- echo 'after_success'

# 【deploy】步骤之前执行
before_deploy :
- echo 'before_deploy'

# 以下，是【GitHub Pages】的另外一种配置方法
deploy :
#  provider: pages
#  skip_cleanup: true
#  github_token: $GITHUB_TOKEN # Set in travis-ci.org dashboard
#  on:
#    branch: master
#
#
#
#
# WARN 【deploy】的配置方法和常规的不同！！！不能用常规的思路去配置
# 命令里面的变量都是在Travis CI里配置过的。
#  - echo '这里，经过了重新改造'
#  - cd "../../lib-docs-dist"
#  - git config user.name "${GitHub_UserName}"
#  - git config user.email "${GitHub_UserEmail}"
#  - git init
#  - git add .
#  - git commit -m ":construction_worker:- Build & Deploy by Travis CI"
#  #  - git push --force --quiet "https://${GitHub_Token}@${GH_REF}" gh-pages:${D_BRANCH}
#  - git push -f  "${GitHub_Pages_Repo_Url}"  ${GitHub_Pages_Repo_Branch}
#  - cd -

# 【deploy】步骤之后执行
after_deploy :
- echo 'after_deploy'

# 【script】阶段之后执行
after_script :
- echo 'after_script'
# after_script前5句是把部署分支的.git文件夹保护起来，用于保留历史部署的commit日志，否则部署分支永远只有一条commit记录。
#  - echo "开始备份【历史部署的commit日志】"
#  - git clone https://${GH_REF} .temp
#  - cd .temp
#  - git checkout gh-pages
#  - cd ../
#  - mv .temp/.git dist
#  - cd dist
# 命令里面的变量都是在Travis CI里配置过的。
#  - git config user.name "${U_NAME}"
#  - git config user.email "${U_EMAIL}"
#  - git add .
#  - git commit -m ":construction_worker:- Build & Deploy by Travis CI"
#  - git push --force --quiet "https://${Travis_Token}@${GH_REF}" gh-pages:${D_BRANCH}
#
# 命令里面的变量都是在Travis CI里配置过的。
- echo '这里，经过了重新改造'
- cd "./lib-docs-dist"
- git init
- git add .
- git config user.name "${GitHub_UserName}"
- git config user.email "${GitHub_UserEmail}"
- git commit -m ":construction_worker:- Build & Deploy by Travis CI"
#  - git push --force --quiet "https://${GitHub_Token}@${GH_REF}" gh-pages:${D_BRANCH}
# WARN 务必要开启【quiet】选项，不然你的【API TOKEN】可能会泄露！
- git push -f -q "https://hanshou101:${GitHub_Token}@github.com/hanshou101/hanshou101.github.io.git"  ${GitHub_Pages_Repo_Branch}
- cd -
# End结束: Build LifeCycle






# 只有指定的分支提交时才会运行脚本
branches :
  only :
  - master
