Travis-CI 仅在所有构建完成后部署一次

Cur*_*tLH 2 travis-ci

我正在尝试编写一个基本的 Travis-CI 脚本来测试构建我的 Python 包并为 Python 3.5 到 3.8 版运行 pytest。一旦这一切成功通过,我就希望 Travis-CI 构建文档并更新 GitHub 页面。我已经能够成功地测试构建包并按预期运行测试,我什至可以构建文档,但文档被构建了 4 次。我只希望在其他一切成功后构建和更新文档一次。我读过关于Jobs,但没有成功地让它与deploy关键字一起工作。

这是我目前的回购链接:https : //github.com/CurtLH/my_pkg

这是我现有的 Travis-CI 脚本,它可以工作但部署到 GitHub 页面 4 次。如何调整脚本以仅构建和部署文档一次?

language: python
python:
  - 3.8
  - 3.7
  - 3.6
  - 3.5
install:
  - pip install -e .[dev]
script:
  - pytest
  - sphinx-build -n -b html -d docs/build/doctrees docs/source docs/build/html
  - touch docs/build/html/.nojekyll

deploy:
  provider: pages
  skip_cleanup: true
  github_token: $GITHUB_TOKEN
  keep-history: true
  on:
    branch: master
  local_dir: docs/build/html
Run Code Online (Sandbox Code Playgroud)

ama*_*lla 7

您可以将构建分为两个阶段,一个阶段使用不同 Python 版本的矩阵,另一个阶段用于部署步骤:https : //docs.travis-ci.com/user/build-stages/matrix-expansion/

然后,在您的部署阶段,您可以为特定的 Python 版本构建代码并进行部署,您的.travis.yml配置将变为:

language: python
python:
  - 3.8
  - 3.7
  - 3.6
  - 3.5
install:
  - pip install -e .[dev]
script:
  - pytest
  - sphinx-build -n -b html -d docs/build/doctrees docs/source docs/build/html
  - touch docs/build/html/.nojekyll

jobs:
  include:
    - stage: deploy
        python: 3.8
        install: pip install -e .[dev]
        script:
          - pytest
          - sphinx-build -n -b html -d docs/build/doctrees docs/source docs/build/html
          - touch docs/build/html/.nojekyll
        deploy:
          provider: pages
          skip_cleanup: true
          github_token: $GITHUB_TOKEN
          keep-history: true
          on:
          branch: master
          local_dir: docs/build/html
Run Code Online (Sandbox Code Playgroud)

您还可以使用工作区(在 Beta 版中)存储所需的包版本,然后在将其发布到 GitHub 页面之前获取它:https : //docs.travis-ci.com/user/using-workspaces/