.travis.yml 5.0 KB

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