Travis根据矩阵参数进行部署

Ada*_*ies 5 release release-management travis-ci github-release

我有一个可以在Linux和OSX上运行的travis作业,我希望能够使用它为GitHub发行版的每个平台部署不同的构建工件。我的.travis.yml文件当前看起来像这样:

language: rust

cache: cargo

os:
  - linux
  - osx

rust: 
  - stable
  - beta
  - nightly 

script: 
  - cargo build --release -vv
  - cargo test --release --all -vv

matrix:
  allow_failures:
    - rust: nightly
  fast_finish: true

deploy:
  - provider: releases
    skip_cleanup: true
    api_key:
      secure: <encrypted key here, removed for brevity> 
    before_deploy: 
      - cargo install cargo-deb
      - cargo deb --no-build --no-strip
      - ./scripts/package_linux.sh .
    file_glob: true
    file: 
      - "target/debian/ellington_0.1.0_amd64.deb"
      - "releases/*_linux.zip"
    on:
      tags: true
      os: linux
      rust: stable
Run Code Online (Sandbox Code Playgroud)

我假设我添加了第二个部署步骤(例如,请参见下文),但是我找不到有关如何执行此操作的任何文档,更不用说是否有可能。有大量文档介绍了如何部署到多个提供程序,但是没有多次部署到不同平台上的同一提供程序。

  - provider: releases
    skip_cleanup: true
    api_key:
      secure: <encrypted key here, removed for brevity> 
    before_deploy: 
      - ./scripts/package_osx.sh .
    file_glob: true
    file: 
      - "releases/*_osx.zip"
    on:
      tags: true
      os: osx
      rust: stable
Run Code Online (Sandbox Code Playgroud)

Sam*_*ena 4

看看这个链接!

要点是,是的,您走在正确的轨道上,您可以像这样定义多个部署:

deploy:
    - provider: releases
      api_key: "<deploy key>"
      file:
        - "target/release.deb"
      skip_cleanup: true
      on:
        tags: true

    - provider: releases
      api_key: "<deploy key>"
      file:
        - "target/release.dmg"
      skip_cleanup: true
      on:
        tags: true

    - provider: releases
      etc...
Run Code Online (Sandbox Code Playgroud)

还可以在此处找到此功能的相关文档。条件部署部分大约进行到一半。