ci.yaml 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. on:
  2. push:
  3. branches: [ staging, trying, master ]
  4. pull_request:
  5. name: Continuous integration
  6. jobs:
  7. ci-linux:
  8. runs-on: ubuntu-20.04
  9. continue-on-error: ${{ matrix.experimental || false }}
  10. strategy:
  11. matrix:
  12. # All generated code should be running on stable now, MRSV is 1.42.0
  13. rust: [nightly, stable, 1.42.0]
  14. include:
  15. # Nightly is only for reference and allowed to fail
  16. - rust: nightly
  17. experimental: true
  18. steps:
  19. - uses: actions/checkout@v2
  20. - uses: actions-rs/toolchain@v1
  21. with:
  22. profile: minimal
  23. toolchain: ${{ matrix.rust }}
  24. override: true
  25. - name: Install all Rust targets for ${{ matrix.rust }}
  26. run: rustup target install --toolchain=${{ matrix.rust }} x86_64-unknown-linux-gnu riscv32imac-unknown-none-elf riscv64imac-unknown-none-elf riscv64gc-unknown-none-elf
  27. - name: Install riscv gcc
  28. run: sudo apt-get update && sudo apt-get install -y gcc-riscv64-unknown-elf
  29. - name: Run CI script for x86_64-unknown-linux-gnu under ${{ matrix.rust }}
  30. run: cargo check --target x86_64-unknown-linux-gnu
  31. - name: Run CI script for riscv32imac-unknown-none-elf under ${{ matrix.rust }}
  32. run: cargo check --target riscv32imac-unknown-none-elf
  33. - name: Run CI script for riscv32imac-unknown-none-elf (inline-asm) under ${{ matrix.rust }}
  34. run: |
  35. if [ "${{ matrix.rust }}" == "nightly" ]; then
  36. cargo check --target riscv32imac-unknown-none-elf --features inline-asm
  37. fi
  38. - name: Run CI script for riscv64imac-unknown-none-elf under ${{ matrix.rust }}
  39. run: cargo check --target riscv64imac-unknown-none-elf
  40. - name: Run CI script for riscv64gc-unknown-none-elf under ${{ matrix.rust }}
  41. run: cargo check --target riscv64gc-unknown-none-elf
  42. - name: Check blobs
  43. run: ./check-blobs.sh
  44. # On macOS and Windows, we at least make sure that the crate builds and links.
  45. build-other:
  46. strategy:
  47. matrix:
  48. os:
  49. - macOS-latest
  50. - windows-latest
  51. runs-on: ${{ matrix.os }}
  52. steps:
  53. - uses: actions/checkout@v2
  54. - uses: actions-rs/toolchain@v1
  55. with:
  56. profile: minimal
  57. toolchain: stable
  58. override: true
  59. - name: Build crate for host OS
  60. run: cargo build