ci.yml 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. name: ci
  2. on: [pull_request, push]
  3. env:
  4. # Just a reassurance to mitigate sudden network connection problems
  5. CARGO_NET_RETRY: 10
  6. RUSTUP_MAX_RETRIES: 10
  7. CARGO_INCREMENTAL: 0
  8. RUST_BACKTRACE: full
  9. # We don't need any debug symbols on ci, this also speeds up builds a bunch
  10. RUSTFLAGS: --deny warnings -Cdebuginfo=0
  11. RUSTDOCFLAGS: --deny warnings
  12. jobs:
  13. rust-lint:
  14. runs-on: ubuntu-latest
  15. steps:
  16. - uses: actions/checkout@v2
  17. - uses: actions-rs/toolchain@v1
  18. with:
  19. toolchain: stable
  20. profile: minimal
  21. components: rustfmt, clippy
  22. - run: cargo clippy --workspace
  23. - run: cargo fmt --all -- --check
  24. rust-test:
  25. runs-on: ${{ matrix.os }}
  26. continue-on-error: ${{ matrix.continue-on-error }}
  27. strategy:
  28. matrix:
  29. os:
  30. - ubuntu-latest
  31. - windows-latest
  32. - macos-latest
  33. toolchain:
  34. - stable
  35. features:
  36. - --all-features
  37. - --no-default-features
  38. - --no-default-features --features colors
  39. - --no-default-features --features timestamps
  40. continue-on-error:
  41. - false
  42. exclude:
  43. - { os: macos-latest, toolchain: stable, features: --all-features }
  44. - {
  45. os: macos-latest,
  46. toolchain: stable,
  47. features: --no-default-features --features timestamps,
  48. }
  49. include:
  50. - {
  51. os: ubuntu-latest,
  52. toolchain: beta,
  53. features: --all-features,
  54. continue-on-error: true,
  55. }
  56. - {
  57. os: ubuntu-latest,
  58. toolchain: nightly,
  59. features: --all-features,
  60. continue-on-error: true,
  61. }
  62. - {
  63. os: macos-latest,
  64. toolchain: stable,
  65. features: --all-features,
  66. continue-on-error: true,
  67. }
  68. - {
  69. os: macos-latest,
  70. toolchain: stable,
  71. features: --no-default-features --features timestamps,
  72. continue-on-error: true,
  73. }
  74. steps:
  75. - uses: actions/checkout@v2
  76. - uses: actions-rs/toolchain@v1
  77. with:
  78. toolchain: ${{ matrix.toolchain }}
  79. profile: minimal
  80. - run: cargo +${{ matrix.toolchain }} build ${{ matrix.features }}
  81. - run: cargo +${{ matrix.toolchain }} test ${{ matrix.features }}
  82. rust-publish-crates:
  83. if: startsWith(github.ref, 'refs/tags/')
  84. runs-on: ubuntu-latest
  85. needs:
  86. - rust-lint
  87. - rust-test
  88. steps:
  89. - uses: actions/checkout@v2
  90. - uses: actions-rs/toolchain@v1
  91. with:
  92. toolchain: stable
  93. profile: minimal
  94. - run: cargo publish --token ${{ secrets.CRATES_TOKEN }}