.travis.yml 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. cache:
  2. timeout: 1000
  3. directories:
  4. - $HOME/.opam
  5. - $HOME/neko
  6. - $HOME/apt-cache
  7. - $HOME/hxcache
  8. - $HOME/lua_env
  9. - $HOME/.luarocks
  10. before_cache:
  11. - if [ $TRAVIS_OS_NAME = 'linux' ]; then
  12. sudo apt-get autoclean;
  13. sudo rm -f $HOME/apt-cache/lock || true;
  14. fi
  15. # somehow these files are recreated everytime
  16. - rm -f $HOME/lua_env/lib/liblua51.a
  17. - rm -f $HOME/lua_env/lib/liblua52.a
  18. - rm -f $HOME/lua_env/lib/liblua53.a
  19. - rm -f $HOME/lua_env/lib/libluajit-5.1.a
  20. #- if [ $TRAVIS_OS_NAME = 'osx' ]; then brew cleanup; fi
  21. env:
  22. global:
  23. - OPAMYES=1
  24. # make variables
  25. - ADD_REVISION=1
  26. # nightly builds submit
  27. - secure: "UoGjYvQqt66GWmeLC4Pih1iue5AufVgW8XQOd2Bx839NN/2mQQ9bD1HuONJe+taWBJ+PHInkAjYROYYaiCQUA7B1SXs3oQD7Og6arVcR7kY7XOdAQ2t8ZkxJHTnuYGWW/2gNFBESv+3H17bkXG4rzaSn2LV5PJLOxSjw0ziBUMY="
  28. - secure: "ugpxt+zeYiAiMYKLK96f5TLSxbQAtmDWiumdwaLHl88fIUeefxJJPIF1Xm0AHeYEJE7sD8dLE1dMbRSzOpXFfTmJoQZv19Wjv+2N5B+DaabKjGj1nZG7q3blGa3nUYzWVfFNFiIpM9c5fvW8yiUFzacZE5itEY8+lZQeGsNh+WQ="
  29. # SauceLabs
  30. - secure: SjyKefmjUEXi0IKHGGpcbLAajU0mLHONg8aA8LoY7Q9nAkSN6Aql+fzS38Boq7w1jWn+2FOpr+4jy0l6wVd/bftsF+huFfYpFJmdh8BlKmE0K71zZAral0H1c7YxkuQpPiJCIFGXqtkvev7SWTy0z31u7kuuQeEyW27boXe5cDA=
  31. - secure: sUvWUjCyPuWht4seNa4f2VG9DkvXkhZyLZfjJO9TUAHB2JndS16E2j/qrvKEjycyH6w8tU/B9vnjDRvvGrYXxEXcBEwsJVfkorFnRl9uwGCGIYrzjMhssEl3fMYZK7P304f+gAp5ULrDBX2gIaKeSa8lUNRtz2PsZOieE4kMdhk=
  32. # Bintray
  33. # - secure: "ETbwZaeRq8wIVZVyUk1IsNctYVuQa/U2biRkF9pQkz3MEXpaneynclVzNjm8rnm8JqfKcjUDUvQJBP1KYrJYq3tAJFhl31YUnS0FsF3sgLIcnHkhbRA24xJdIlCwHP6QUPoiyPbkec43NRwrF0071KOMD51vgUToXRtAe3o/15g="
  34. # - secure: "Fcrrge2f4jFYDOopig2rwkQvgJw6Ra8UK6OwTVk08wecytzVaOJK1TcB22PSvZ+h0ZLJs34T+pXHFjlNuSWm4+CwGSvnltRD1/svjS8zOqK7RzuUdzHz87yruz9PFqV63HTas6qtmgLqp8n/Q6AhtDLF39BTZPyDzEbi9qkwRuI="
  35. # - secure: "VBJDQNJ9uvdt0aszo7oU3txuRvjkuLmuHZGOkrd4wE/5B4sX5jzx/+dnrKcNTXJCmQ/rVLuMu9GyxqVjNHlzce678voxdQNOtNkNgpkr1qN9/A9rRnCp77hH27ErdthpWxbmcnE62hAJ83TIKSvn//5lAkx4sMCKS1NXEWQ5qec="
  36. # PPA configs
  37. - PPA="ppa:haxe/snapshots"
  38. - DEBFULLNAME="Haxe CI Bot"
  39. - DEBEMAIL="[email protected]"
  40. sudo: required
  41. dist: trusty
  42. install_linux: &install_linux
  43. # Install dependencies
  44. - export APT_CACHE_DIR=~/apt-cache && mkdir -pv $APT_CACHE_DIR
  45. - sudo apt-get install --reinstall ca-certificates # workaround for "Cannot add PPA: 'ppa:haxe/ocaml'. Please check that the PPA name or format is correct."
  46. - sudo add-apt-repository ppa:haxe/ocaml -y
  47. - sudo apt-get update -y
  48. - sudo apt-get -o dir::cache::archives="$APT_CACHE_DIR" install -y
  49. ocaml
  50. ocaml-native-compilers
  51. ocaml-findlib
  52. camlp4
  53. libpcre3-dev
  54. zlib1g-dev
  55. libgtk2.0-dev
  56. ninja-build
  57. awscli
  58. $JOB_DEPENDENCIES
  59. - wget https://raw.github.com/ocaml/opam/master/shell/opam_installer.sh -O - | sh -s /usr/local/bin system
  60. - opam install sedlex xml-light extlib rope ptmap
  61. # install neko
  62. - if [ ! $DEPLOY_NIGHTLIES ]; then
  63. sudo add-apt-repository ppa:haxe/snapshots -y;
  64. sudo apt-get -o dir::cache::archives="$APT_CACHE_DIR" install -y neko neko-dev;
  65. else
  66. if [ ! -d "$HOME/neko" ]; then
  67. mkdir $HOME/neko;
  68. pushd $HOME/neko;
  69. git clone https://github.com/HaxeFoundation/neko.git .;
  70. git submodule update --init --recursive;
  71. else
  72. pushd $HOME/neko;
  73. if [ ! -d "$HOME/neko/.git" ]; then
  74. git clone https://github.com/HaxeFoundation/neko.git .;
  75. git submodule update --init --recursive;
  76. else
  77. git fetch --all;
  78. git reset --hard origin/master;
  79. git submodule update --init --recursive;
  80. fi;
  81. fi;
  82. cmake . -DSTATIC_DEPS=all -G Ninja || (git clean -dfx && cmake . -DSTATIC_DEPS=all -G Ninja);
  83. ninja download_static_deps || ninja download_static_deps || ninja download_static_deps;
  84. ninja -j 4;
  85. sudo ninja install;
  86. popd;
  87. fi
  88. # Setup JDK
  89. - jdk_switcher use oraclejdk7
  90. - java -version
  91. # Build haxe
  92. - make package_src -s
  93. - opam config exec -- make -s STATICLINK=1 libs
  94. - opam config exec -- make -s -j STATICLINK=1 haxe
  95. - opam config exec -- make -s haxelib
  96. - make package_bin -s
  97. - ls -l out
  98. - ldd -v ./haxe
  99. - ldd -v ./haxelib
  100. - export PATH="$PATH:$TRAVIS_BUILD_DIR"
  101. - export HAXE_STD_PATH="$TRAVIS_BUILD_DIR/std"
  102. install_osx: &install_osx
  103. # Install dependencies
  104. - travis_retry brew update --merge
  105. - brew uninstall --force brew-cask # https://github.com/caskroom/homebrew-cask/pull/15381
  106. - travis_retry brew tap Homebrew/bundle
  107. - travis_retry brew bundle --file=tests/Brewfile
  108. - opam init
  109. - eval `opam config env`
  110. - opam install camlp4 sedlex ocamlfind xml-light extlib rope ptmap
  111. # install neko
  112. - if [ ! $DEPLOY_NIGHTLIES ]; then
  113. brew install neko --HEAD;
  114. else
  115. if [ ! -d "$HOME/neko" ]; then
  116. mkdir $HOME/neko;
  117. pushd $HOME/neko;
  118. git clone https://github.com/HaxeFoundation/neko.git .;
  119. git submodule update --init --recursive;
  120. else
  121. pushd $HOME/neko;
  122. if [ ! -d "$HOME/neko/.git" ]; then
  123. git clone https://github.com/HaxeFoundation/neko.git .;
  124. git submodule update --init --recursive;
  125. else
  126. git fetch --all;
  127. git reset --hard origin/master;
  128. git submodule update --init --recursive;
  129. fi;
  130. fi;
  131. cmake . -DSTATIC_DEPS=all -G Ninja || (git clean -dfx && cmake . -DSTATIC_DEPS=all -G Ninja);
  132. ninja download_static_deps || ninja download_static_deps || ninja download_static_deps;
  133. ninja -j 4;
  134. sudo ninja install;
  135. popd;
  136. fi
  137. # Build haxe
  138. - make -s STATICLINK=1 "LIB_PARAMS=/usr/local/opt/zlib/lib/libz.a /usr/local/lib/libpcre.a" libs
  139. - make -s -j STATICLINK=1 "LIB_PARAMS=/usr/local/opt/zlib/lib/libz.a /usr/local/lib/libpcre.a" haxe
  140. - make -s haxelib
  141. - make package_bin -s
  142. - ls -l out
  143. - otool -L ./haxe
  144. - otool -L ./haxelib
  145. - export PATH="$PATH:$TRAVIS_BUILD_DIR"
  146. - export HAXE_STD_PATH="$TRAVIS_BUILD_DIR/std"
  147. matrix:
  148. include:
  149. #########
  150. # linux #
  151. #########
  152. - os: linux
  153. env:
  154. - TEST=neko
  155. - DEPLOY_API_DOCS=1
  156. - DEPLOY_NIGHTLIES=1
  157. # haxeci_decrypt (Deploy source package to ppa:haxe/snapshots.)
  158. - secure: "Mw3p6bDZuqVQ6u7GrwLQfje5hhIOA4+mdqqLXYHP79UKdhgqb91Dn6IbG9vQ1VXVe64W4YZbQAMBMMRX5kEPDl6JvTVGSBhg00Mi69oO5qrCMcBI6f9FntG72YaVvLf+PA7co+vKrnJzaP2M9pe4SH9Ztbhy0YNxULp7NQ8FLsM="
  159. addons:
  160. ssh_known_hosts:
  161. - haxe.org
  162. - api.haxe.org
  163. before_install:
  164. - eval `ssh-agent -s` # for deployment to haxe.org
  165. install: *install_linux
  166. - os: linux
  167. env:
  168. - TEST=macro,js,php,flash9,as3,java,cs,python,lua
  169. - SAUCE=1
  170. addons:
  171. sauce_connect: true
  172. before_install:
  173. - "export DISPLAY=:99.0"
  174. - "sh -e /etc/init.d/xvfb start"
  175. - "export AUDIODEV=null"
  176. install: *install_linux
  177. - os: linux
  178. env:
  179. - TEST=cpp
  180. - HXCPP_COMPILE_THREADS=4
  181. - HXCPP_COMPILE_CACHE=~/hxcache
  182. - JOB_DEPENDENCIES="gcc-multilib g++-multilib"
  183. install: *install_linux
  184. #######
  185. # osx #
  186. #######
  187. - os: osx
  188. osx_image: xcode7.3 # to compile binaries that support older versions of Mac, and 10.11 is the min version that brew provides bottles
  189. env:
  190. - TEST=neko
  191. - DEPLOY_NIGHTLIES=1
  192. install: *install_osx
  193. - os: osx
  194. osx_image: xcode9.1 # to compile faster
  195. env:
  196. - TEST=macro,java,cs,lua,js,php,flash9,python
  197. install: *install_osx
  198. - os: osx
  199. osx_image: xcode9.1 # to compile faster
  200. env:
  201. - TEST=cpp
  202. - HXCPP_COMPILE_CACHE=~/hxcache
  203. - HXCPP_COMPILE_THREADS=4
  204. install: *install_osx
  205. script:
  206. - pushd tests
  207. - mkdir ~/haxelib && haxelib setup ~/haxelib
  208. - haxe -version
  209. - haxe RunCi.hxml
  210. - popd
  211. branches:
  212. except:
  213. # A hack to prevent building for tags, assuming they all start with a number.
  214. # https://github.com/travis-ci/travis-ci/issues/1532
  215. - /^[0-9]/
  216. notifications:
  217. webhooks:
  218. urls:
  219. - https://webhooks.gitter.im/e/95a5fa471c27beee8e7c
  220. on_success: change # options: [always|never|change] default: always
  221. on_failure: always # options: [always|never|change] default: always
  222. on_start: false # default: false