.travis.yml 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. language: rust
  2. # Caching of the runtime .wasm blob poses a problem.
  3. # See: https://github.com/Joystream/joystream/issues/466
  4. cache: cargo
  5. rust:
  6. - 1.43.0
  7. matrix:
  8. include:
  9. - os: linux
  10. env: TARGET=x86_64-unknown-linux-gnu
  11. # - os: linux
  12. # env: TARGET=arm-unknown-linux-gnueabihf
  13. # services: docker
  14. # - os: osx
  15. # env: TARGET=x86_64-apple-darwin
  16. # - os: linux
  17. # env: TARGET=wasm-blob
  18. # services: docker
  19. before_install:
  20. # This is not needed since travis will install rust stable as the default, and just specifying
  21. # stable might be newer that version defined in the .travis.yml file and available
  22. # as an env var: TRAVIS_RUST_VERSION
  23. # - rustup default stable
  24. # ensure main version is the default
  25. - rustup default $TRAVIS_RUST_VERSION
  26. # We need nightly for WASM build, we choose a specific version so the built and cached artifacts
  27. # do not get invalidated every time a new nightly is released.
  28. # Nightly isn't always released for all platforms on the same date, so we pick based on target
  29. - |
  30. if [ "$TARGET" = "x86_64-apple-darwin" ]
  31. then
  32. export NIGHTLY_RELEASE_DATE=2020-05-14
  33. else
  34. export NIGHTLY_RELEASE_DATE=2020-05-23
  35. fi
  36. - rustup update nightly-${NIGHTLY_RELEASE_DATE}
  37. - rustup target add wasm32-unknown-unknown --toolchain nightly-${NIGHTLY_RELEASE_DATE}
  38. # travis installs rust using rustup with the "minimal" profile so these tools are not installed by default
  39. - rustup component add rustfmt
  40. - rustup component add clippy
  41. - cargo fmt --all -- --check
  42. install:
  43. - |
  44. if [ "$TARGET" = "arm-unknown-linux-gnueabihf" ]
  45. then
  46. docker pull joystream/rust-raspberry
  47. fi
  48. script:
  49. - |
  50. if [ "$TARGET" = "arm-unknown-linux-gnueabihf" ]
  51. then
  52. docker run -u root \
  53. --volume ${TRAVIS_BUILD_DIR}:/home/cross/project \
  54. joystream/rust-raspberry \
  55. test --release && \
  56. docker run -u root \
  57. --volume ${TRAVIS_BUILD_DIR}:/home/cross/project \
  58. joystream/rust-raspberry \
  59. build --release
  60. sudo chmod a+r ${TRAVIS_BUILD_DIR}/target/${TARGET}/release/joystream-node
  61. elif [ "$TARGET" = "wasm-blob" ]
  62. then
  63. docker build --tag joystream/node \
  64. --file ./devops/dockerfiles/node-and-runtime/Dockerfile \
  65. .
  66. docker create --name temp-container-joystream-node joystream/node
  67. docker cp temp-container-joystream-node:/joystream/runtime.compact.wasm joystream_runtime.wasm
  68. docker rm temp-container-joystream-node
  69. else
  70. cargo test --release --verbose --all --target=${TARGET} && \
  71. BUILD_DUMMY_WASM_BINARY=1 cargo clippy --release --target=${TARGET} -- -D warnings && \
  72. cargo build --release --target=${TARGET}
  73. fi
  74. before_deploy:
  75. - |
  76. if [ "$TARGET" = "wasm-blob" ]
  77. then
  78. export ASSET="joystream_runtime.wasm"
  79. else
  80. cp ./target/${TARGET}/release/joystream-node .
  81. if [ "$TARGET" = "arm-unknown-linux-gnueabihf" ]
  82. then
  83. export FILENAME="joystream-node-armv7-linux-gnueabihf"
  84. else
  85. export FILENAME=`./joystream-node --version | sed -e "s/ /-/g"`
  86. fi
  87. tar -cf ${FILENAME}.tar ./joystream-node
  88. gzip ${FILENAME}.tar
  89. export ASSET=${FILENAME}.tar.gz
  90. fi
  91. deploy:
  92. - provider: releases
  93. api_key:
  94. secure: FfxZGQexxAGT0Skbctl1FuqmEvNHejPDPtNG8Du1ACSGjS7Y+M6o/aPqE6HL158AmddOgndsIPR+HM7VfMDAUMkLTbOhv3nMpDBZu1h25vwk+jHOM65tm5LWUu/ROWBpaAQiG7NKrvtfkNfbNBSETsEbWBt/DPrhlIfSbgsXBFDiid7uRrCiwvDUJ097/EUOJ9OVUrk+O4ebSzfIfKPGPtRU2rQQ0eNX7yX3TCm3jbQm/kplkQNRL9mnAJNxtKuvuko4LqZ6jN4XLoLTHUMjO7E0r6wXVB4GVjA4HA214eLlQD6BhgTbWMDxKgWyuKzPG+2GLKyluSSn0RurSl8tYryXKxKxuN3H1FX9r23a8AzGtpRACJtIePC2YmPuQRSnz2Bw8jlSP2WPLJtXGD036J/wVMj6W9TROm7IBigiC7QlqAqCYNByOnoKyhRCgYyAJZb0Jpa3qWaFhA6b6gCGhyH85QCcrc0q6JAB3oqH8Wfm/K2HVzBobmKaSFu5DpwInNnUXnLWGVzhSt3oCq6ld773izReGdLJtLC2vaJ9rZVaVw29s9M662EEuAGgaVLO/sinZJFeIIaCF4i4zUXwXSLIdfKXGOR0ZibkyT2FS6qPGvl/lLN5IREzD7v/rV8htGMLmw4jpPLNskvRjCHX42ewRRYdMvZzQQOAvSlWcsw=
  95. file: ${ASSET}
  96. on:
  97. tags: true
  98. repo: Joystream/joystream
  99. draft: true
  100. overwrite: true
  101. skip_cleanup: true
  102. - provider: releases
  103. api_key:
  104. secure: FfxZGQexxAGT0Skbctl1FuqmEvNHejPDPtNG8Du1ACSGjS7Y+M6o/aPqE6HL158AmddOgndsIPR+HM7VfMDAUMkLTbOhv3nMpDBZu1h25vwk+jHOM65tm5LWUu/ROWBpaAQiG7NKrvtfkNfbNBSETsEbWBt/DPrhlIfSbgsXBFDiid7uRrCiwvDUJ097/EUOJ9OVUrk+O4ebSzfIfKPGPtRU2rQQ0eNX7yX3TCm3jbQm/kplkQNRL9mnAJNxtKuvuko4LqZ6jN4XLoLTHUMjO7E0r6wXVB4GVjA4HA214eLlQD6BhgTbWMDxKgWyuKzPG+2GLKyluSSn0RurSl8tYryXKxKxuN3H1FX9r23a8AzGtpRACJtIePC2YmPuQRSnz2Bw8jlSP2WPLJtXGD036J/wVMj6W9TROm7IBigiC7QlqAqCYNByOnoKyhRCgYyAJZb0Jpa3qWaFhA6b6gCGhyH85QCcrc0q6JAB3oqH8Wfm/K2HVzBobmKaSFu5DpwInNnUXnLWGVzhSt3oCq6ld773izReGdLJtLC2vaJ9rZVaVw29s9M662EEuAGgaVLO/sinZJFeIIaCF4i4zUXwXSLIdfKXGOR0ZibkyT2FS6qPGvl/lLN5IREzD7v/rV8htGMLmw4jpPLNskvRjCHX42ewRRYdMvZzQQOAvSlWcsw=
  105. file: ${ASSET}
  106. on:
  107. branch: development
  108. repo: Joystream/joystream
  109. draft: true
  110. prerelease: true
  111. overwrite: true
  112. skip_cleanup: true