main.yml 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696
  1. # Copyright (c) 2008-2022 the Urho3D project
  2. # License: MIT
  3. ---
  4. name: CI/CD
  5. on:
  6. push:
  7. pull_request:
  8. repository_dispatch: { types: [ 'Warm DBE build cache' ] }
  9. jobs:
  10. init:
  11. name: Init
  12. runs-on: ubuntu-latest
  13. outputs:
  14. skip: ${{ steps.whatchanged.outputs.skip }}
  15. steps:
  16. - name: Checkout
  17. uses: actions/checkout@v3
  18. - name: What changed
  19. id: whatchanged
  20. run: |
  21. git fetch --deepen=1
  22. git log --raw --no-merges -1 |grep '^:' >/tmp/whatchanged
  23. echo "name=skip::$(grep -cqv 'website/' /tmp/whatchanged; echo $?)" >> $GITHUB_OUTPUT
  24. linux-old:
  25. name: 🐧-old
  26. runs-on: ubuntu-latest
  27. needs: init
  28. if: needs.init.outputs.skip == '0'
  29. strategy:
  30. fail-fast: false
  31. matrix:
  32. platform:
  33. - rpi
  34. - arm
  35. lib-type:
  36. - static
  37. - shared
  38. architecture:
  39. - 64
  40. - 32
  41. build-type:
  42. - rel
  43. - dbg
  44. env:
  45. HOST: ${{ github.job }}
  46. PLATFORM: ${{ matrix.platform }}
  47. BUILD_TYPE: ${{ matrix.build-type }}
  48. LIB_TYPE: ${{ matrix.lib-type }}
  49. ARCH: ${{ matrix.architecture }}
  50. DBE_TAG: master
  51. steps:
  52. - name: Checkout
  53. uses: actions/checkout@v3
  54. with: { fetch-depth: 0 }
  55. - name: Free up space
  56. run: |
  57. sudo rm -rf /usr/share/dotnet /usr/local/lib/android
  58. sudo apt-get clean
  59. df -h
  60. if: matrix.platform == 'android' || matrix.build-type == 'dbg'
  61. - name: Source checksum
  62. id: source_checksum
  63. run: rake source_checksum
  64. - name: Cache
  65. uses: actions/cache@v3
  66. with:
  67. path: |
  68. build/cache/.ccache
  69. build/cache/.gradle/caches
  70. build/cache/.gradle/wrapper
  71. key: |
  72. ${{ matrix.platform }}-${{ matrix.lib-type }}-${{ matrix.architecture }}-${{ matrix.build-type }}-${{ env.DBE_TAG }}-${{ steps.source_checksum.outputs.hexdigest }}
  73. restore-keys: |
  74. ${{ matrix.platform }}-${{ matrix.lib-type }}-${{ matrix.architecture }}-${{ matrix.build-type }}-${{ env.DBE_TAG }}
  75. ${{ matrix.platform }}-${{ matrix.lib-type }}-${{ matrix.architecture }}-${{ matrix.build-type }}
  76. - name: DBE
  77. run: rake update_dot_files && script/dockerized.sh ${PLATFORM/-*} env
  78. - name: CMake
  79. run: script/dockerized.sh ${PLATFORM/-*} rake cmake
  80. if: matrix.platform != 'android'
  81. - name: Build
  82. run: script/dockerized.sh ${PLATFORM/-*} rake build
  83. - name: Test tools
  84. if: startsWith(matrix.platform, 'linux')
  85. shell: bash
  86. run: script/dockerized.sh ${PLATFORM/-*} /home/runner/work/Urho3D/Urho3D/script/test_tools.sh /home/runner/work/Urho3D/Urho3D /home/runner/work/Urho3D/Urho3D/build/ci
  87. - name: Test
  88. run: script/dockerized.sh ${PLATFORM/-*} rake test
  89. if: startsWith(matrix.platform, 'linux') || matrix.platform == 'android'
  90. #- name: Documentation
  91. # run: script/dockerized.sh ${PLATFORM/-*} rake doc
  92. - name: Install
  93. run: |
  94. script/dockerized.sh ${PLATFORM/-*} rake install
  95. if [[ $PLATFORM == android ]]; then touch build/cache/.gradle/mark; fi
  96. - name: Scaffolding - new
  97. run: script/dockerized.sh ${PLATFORM/-*} rake new
  98. - name: Scaffolding - build
  99. run: |
  100. cd build/cache/projects/UrhoApp
  101. script/dockerized.sh ${PLATFORM/-*}
  102. - name: Scaffolding - test
  103. run: |
  104. cd build/cache/projects/UrhoApp
  105. script/dockerized.sh ${PLATFORM/-*} rake test
  106. if: matrix.platform == 'android' || startsWith(matrix.platform, 'linux')
  107. - name: Scaffolding - cleanup
  108. run: |
  109. if [[ $PLATFORM == android ]]; then
  110. rm -rf build/cache/.m2
  111. find build/cache/.gradle -newer build/cache/.gradle/mark -type d |xargs rm -rf
  112. else
  113. rm -rf build/cache/{.urho3d,projects}
  114. fi
  115. - name: Package
  116. run: script/dockerized.sh ${PLATFORM/-*} rake package
  117. if: github.event_name == 'push' && matrix.platform != 'android'
  118. - name: Upload
  119. uses: actions/upload-artifact@v3
  120. with:
  121. name: ${{ matrix.platform }}-${{ matrix.lib-type }}-${{ matrix.architecture }}-${{ matrix.build-type }}
  122. path: |
  123. build/ci/*.tar.gz
  124. android/urho3d-lib/build/distributions/*.aar
  125. android/urho3d-lib/build/distributions/*.zip
  126. android/urho3d-lib/build/libs/*.jar
  127. build/*.out
  128. if: github.event_name == 'push'
  129. continue-on-error: ${{ !startsWith(github.ref, 'refs/tags/') }}
  130. - name: Publish
  131. env:
  132. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  133. PUBLISHER_NAME: ${{ secrets.PUBLISHER_NAME }}
  134. PUBLISHER_EMAIL: ${{ secrets.PUBLISHER_EMAIL }}
  135. PUBLISHER_TOKEN: ${{ secrets.PUBLISHER_TOKEN }}
  136. BINTRAY_USER: ${{ secrets.BINTRAY_USER }}
  137. BINTRAY_KEY: ${{ secrets.BINTRAY_KEY }}
  138. run: script/dockerized.sh ${PLATFORM/-*} rake publish
  139. if: |
  140. github.event_name == 'push' &&
  141. (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')) &&
  142. (matrix.platform == 'android' || (matrix.platform == 'web' && matrix.build-type == 'rel'))
  143. continue-on-error: ${{ !startsWith(github.ref, 'refs/tags/') }}
  144. macOS:
  145. name: 🍏
  146. runs-on: latest
  147. needs: init
  148. if: false && needs.init.outputs.skip == '0' && github.event_name != 'repository_dispatch'
  149. strategy:
  150. fail-fast: false
  151. matrix:
  152. platform:
  153. - macOS
  154. lib-type:
  155. - static
  156. - shared
  157. include:
  158. - { platform: iOS, lib-type: static }
  159. - { platform: tvOS, lib-type: static }
  160. env:
  161. HOST: ${{ github.job }}
  162. PLATFORM: ${{ matrix.platform }}
  163. LIB_TYPE: ${{ matrix.lib-type }}
  164. steps:
  165. - name: Checkout
  166. uses: actions/checkout@v3
  167. with: { fetch-depth: 0 }
  168. - name: Select xcode
  169. run: sudo xcode-select -s '/Applications/Xcode_12.app'
  170. - name: Install dependencies
  171. run: while ! brew install doxygen graphviz; do sleep 1; done
  172. - name: CMake
  173. run: rake cmake
  174. - name: Build
  175. run: rake build
  176. - name: Test tools
  177. if: matrix.platform == 'macOS'
  178. shell: bash
  179. run: /Users/runner/work/Urho3D/Urho3D/script/test_tools.sh /Users/runner/work/Urho3D/Urho3D /Users/runner/work/Urho3D/Urho3D/build/ci
  180. - name: Test
  181. run: rake test
  182. if: matrix.platform == 'macOS'
  183. - name: Documentation
  184. run: rake doc
  185. - name: Install
  186. run: rake install
  187. - name: Scaffolding - new
  188. run: rake new
  189. - name: Scaffolding - build
  190. run: |
  191. cd ~/projects/UrhoApp
  192. rake
  193. - name: Scaffolding - test
  194. run: |
  195. cd ~/projects/UrhoApp
  196. rake test
  197. if: matrix.platform == 'macOS'
  198. - name: Scaffolding - cleanup
  199. run: rm -rf ~/{.urho3d,projects}
  200. - name: Package
  201. run: rake package
  202. if: github.event_name == 'push'
  203. - name: Upload
  204. uses: actions/upload-artifact@v3
  205. with:
  206. name: ${{ matrix.platform }}-${{ matrix.lib-type }}-all-rel
  207. path: build/ci/*.tar.gz
  208. if: github.event_name == 'push'
  209. windows:
  210. name: 🔲
  211. runs-on: windows-2019
  212. needs: init
  213. if: needs.init.outputs.skip == '0' && github.event_name != 'repository_dispatch'
  214. strategy:
  215. fail-fast: false
  216. matrix:
  217. platform:
  218. - win-vs
  219. - win-gcc
  220. lib-type:
  221. - static
  222. - shared
  223. graphics-api:
  224. - DX11
  225. - OpenGL
  226. env:
  227. HOST: ${{ github.job }}
  228. PLATFORM: ${{ matrix.platform }}
  229. LIB_TYPE: ${{ matrix.lib-type }}
  230. GRAPHICS_API: ${{ matrix.graphics-api }}
  231. URHO3D_GENERATEBINDINGS: 1
  232. steps:
  233. - name: Checkout
  234. uses: actions/checkout@v3
  235. with: { fetch-depth: 0 }
  236. - name: Install dependencies
  237. id: install_dependencies
  238. shell: bash {0} # Allow catching errors
  239. run: |
  240. # Server may reject connection, so try several times
  241. for (( i = 0; i < 4; ++i ))
  242. do
  243. choco install --no-progress doxygen.install
  244. if (( $? == 0 )) # Exit code of the previous command
  245. then
  246. break
  247. else
  248. echo "========== One more try =========="
  249. sleep 20
  250. fi
  251. done
  252. for (( i = 0; i < 4; ++i ))
  253. do
  254. choco install --no-progress graphviz.portable
  255. if (( $? == 0 )) # Exit code of the previous command
  256. then
  257. break
  258. else
  259. echo "========== One more try =========="
  260. sleep 20
  261. fi
  262. done
  263. # Use MSYS2 instead obsolete MinGW
  264. # https://github.com/urho3d/Urho3D/issues/2887
  265. echo "c:\msys64\mingw32\bin" >> $GITHUB_PATH
  266. - name: CMake
  267. run: rake cmake
  268. - name: Build
  269. shell: bash
  270. run: |
  271. rake build
  272. # If there are changes in repository, then generated bindings are different from existing ones
  273. cd D:/a/Urho3D/Urho3D
  274. if [[ `git status --porcelain` ]]; then
  275. echo "!!!!! ERROR: Generated bindings are different from existing ones"
  276. exit -1 # Exit from the script with error code
  277. fi
  278. - name: Test tools
  279. shell: bash
  280. run: D:/a/Urho3D/Urho3D/script/test_tools.sh D:/a/Urho3D/Urho3D D:/a/Urho3D/Urho3D/build/ci
  281. - name: Test
  282. run: rake test
  283. if: matrix.graphics-api != 'OpenGL'
  284. - name: Documentation
  285. run: rake doc
  286. - name: Install
  287. run: rake install
  288. - name: Scaffolding - new
  289. run: rake new
  290. - name: Scaffolding - build
  291. run: |
  292. cd ~/projects/UrhoApp
  293. rake
  294. - name: Scaffolding - test
  295. run: |
  296. cd ~/projects/UrhoApp
  297. rake test
  298. if: matrix.graphics-api != 'OpenGL'
  299. - name: Scaffolding - cleanup
  300. run: rm -r -fo ~/.urho3d, ~/Projects
  301. - name: Package
  302. run: rake package
  303. if: github.event_name == 'push'
  304. - name: Upload
  305. uses: actions/upload-artifact@v3
  306. with:
  307. name: ${{ matrix.platform }}-${{ matrix.lib-type }}-64-${{ matrix.graphics-api }}-rel
  308. path: build/ci/*.zip
  309. if: github.event_name == 'push'
  310. Web:
  311. name: ⚡ Emscripten
  312. runs-on: ubuntu-latest
  313. needs: init
  314. #if: false
  315. strategy:
  316. fail-fast: false
  317. matrix:
  318. build-type:
  319. - Release
  320. - Debug
  321. steps:
  322. - name: Checkout
  323. uses: actions/checkout@v3
  324. with: { path: "engine_repo" }
  325. - name: Build
  326. run: |
  327. set -x # Echo commands
  328. echo "Current dir: $PWD"
  329. git clone --depth 1 https://github.com/emscripten-core/emsdk.git
  330. ./emsdk/emsdk install 3.1.17
  331. ./emsdk/emsdk activate 3.1.17
  332. chmod +x ./emsdk/emsdk_env.sh
  333. ./emsdk/emsdk_env.sh
  334. TOOLCHAIN=$PWD/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake
  335. cmake engine_repo -B engine_build -G "Unix Makefiles" \
  336. -D WEB=1 -D CMAKE_TOOLCHAIN_FILE=${TOOLCHAIN} \
  337. -D EMSCRIPTEN_SHARE_DATA=1 -D URHO3D_DATABASE_SQLITE=1 \
  338. -D CMAKE_BUILD_TYPE=${{ matrix.build-type }}
  339. cmake --build engine_build
  340. - name: Upload samples to site
  341. env:
  342. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  343. PUBLISHER_NAME: ${{ secrets.PUBLISHER_NAME }}
  344. PUBLISHER_EMAIL: ${{ secrets.PUBLISHER_EMAIL }}
  345. PUBLISHER_TOKEN: ${{ secrets.PUBLISHER_TOKEN }}
  346. BINTRAY_USER: ${{ secrets.BINTRAY_USER }}
  347. BINTRAY_KEY: ${{ secrets.BINTRAY_KEY }}
  348. run: |
  349. echo "Current dir: $PWD" # $GITHUB_WORKSPACE
  350. cd engine_repo
  351. rake ci_publish_web
  352. if: | # If not PR
  353. github.event_name == 'push' && matrix.build-type == 'Release' &&
  354. (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/'))
  355. continue-on-error: ${{ !startsWith(github.ref, 'refs/tags/') }}
  356. Linux_Native:
  357. runs-on: ubuntu-latest
  358. needs: init
  359. if: needs.init.outputs.skip == '0'
  360. strategy:
  361. fail-fast: false
  362. matrix:
  363. COMPILER:
  364. - {
  365. ID: gcc,
  366. C: gcc,
  367. CXX: g++,
  368. }
  369. - {
  370. ID: clang,
  371. C: clang,
  372. CXX: clang++,
  373. }
  374. BITS:
  375. - 64
  376. - 32
  377. LIB_TYPE:
  378. - {
  379. ID: shared,
  380. VALUE: SHARED,
  381. }
  382. - {
  383. ID: static,
  384. VALUE: STATIC,
  385. }
  386. BUILD_TYPE:
  387. - {
  388. ID: rel,
  389. VALUE: Release,
  390. }
  391. - {
  392. ID: dbg,
  393. VALUE: Debug,
  394. }
  395. name: 🐧-${{ matrix.COMPILER.ID }}-${{ matrix.BITS }}-${{ matrix.LIB_TYPE.ID }}-${{ matrix.BUILD_TYPE.ID }}
  396. steps:
  397. - name: Checkout
  398. uses: actions/checkout@v3
  399. with: { path: "engine_repo" }
  400. - name: Install dependencies
  401. run: |
  402. if [ "${{ matrix.BITS }}" == "32" ]; then
  403. sudo dpkg --add-architecture i386
  404. sudo apt update
  405. sudo apt install gcc-multilib g++-multilib libxext-dev:i386 libgl1-mesa-dev:i386
  406. else
  407. sudo apt install libgl1-mesa-dev
  408. fi
  409. # Ubuntu repository contains obsolete Doxygen 1.9.1. Download own build
  410. mkdir $HOME/programs
  411. cd $HOME/programs
  412. wget -q -O tmp.zip https://github.com/rurho3d/doxygen-builder/raw/main/doxygen_linux64.zip && unzip tmp.zip && rm tmp.zip
  413. echo "$HOME/programs" >> $GITHUB_PATH
  414. - name: Cache
  415. uses: actions/cache@v3
  416. with:
  417. path: engine_build
  418. key: linux-${{ matrix.COMPILER.ID }}-${{ matrix.BITS }}-${{ matrix.LIB_TYPE.ID }}-${{ matrix.BUILD_TYPE.ID }}-${{ github.sha }}
  419. restore-keys: linux-${{ matrix.COMPILER.ID }}-${{ matrix.BITS }}-${{ matrix.LIB_TYPE.ID }}-${{ matrix.BUILD_TYPE.ID }}
  420. - name: Build
  421. run: |
  422. #set -x # Echo commands
  423. echo "Current dir: $PWD"
  424. if [ "${{ matrix.BITS }}" == "32" ]
  425. then
  426. BITS64=0
  427. else
  428. BITS64=1
  429. fi
  430. cmake engine_repo -B engine_build -G "Unix Makefiles" \
  431. -D CMAKE_C_COMPILER=${{ matrix.COMPILER.C }} -D CMAKE_CXX_COMPILER=${{ matrix.COMPILER.CXX }} \
  432. -D URHO3D_DATABASE_SQLITE=1 -D URHO3D_TESTING=1 -D CMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE.VALUE }} \
  433. -D URHO3D_64BIT=$BITS64 -D URHO3D_LIB_TYPE=${{ matrix.LIB_TYPE.VALUE }} -D URHO3D_GENERATEBINDINGS=1
  434. cmake --build engine_build
  435. # If there are changes in repository, then generated bindings are different from existing ones
  436. cd engine_repo
  437. if [[ `git status --porcelain` ]]; then
  438. echo "!!!!! ERROR: Generated bindings are different from existing ones"
  439. exit -1 # Exit from the script with error code
  440. fi
  441. cd ..
  442. - name: CTest
  443. shell: bash {0} # Allow catching errors
  444. run: |
  445. xvfb-run ctest --test-dir engine_build
  446. EXIT_CODE=$? # Exit code of the previous command
  447. if (( $EXIT_CODE != 0 ))
  448. then
  449. echo "$(cat ~/.local/share/urho3d/logs/HelloWorld.log)"
  450. exit $EXIT_CODE
  451. fi
  452. - name: Test tools
  453. run: $GITHUB_WORKSPACE/engine_repo/script/test_tools.sh $GITHUB_WORKSPACE/engine_repo $GITHUB_WORKSPACE/engine_build
  454. - name: Test app
  455. run: |
  456. #cmake --install engine_build --prefix=$HOME/installed_engine # Not works
  457. #URHO3D_HOME=$HOME/installed_engine # Not works (add export?)
  458. #URHO3D_HOME=$GITHUB_WORKSPACE/engine_build # Not works
  459. sudo cmake --build engine_build --target install
  460. cd engine_repo
  461. rake new
  462. cd ..
  463. if [ "${{ matrix.BITS }}" == "32" ]
  464. then
  465. BITS64=0
  466. else
  467. BITS64=1
  468. fi
  469. cmake $HOME/projects/UrhoApp -B $HOME/projects/UrhoApp_build -G "Unix Makefiles" \
  470. -D CMAKE_C_COMPILER=${{ matrix.COMPILER.C }} -D CMAKE_CXX_COMPILER=${{ matrix.COMPILER.CXX }} \
  471. -D URHO3D_DATABASE_SQLITE=1 -D URHO3D_TESTING=1 -D CMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE.VALUE }} \
  472. -D URHO3D_64BIT=$BITS64 -D URHO3D_LIB_TYPE=${{ matrix.LIB_TYPE.VALUE }}
  473. cmake --build $HOME/projects/UrhoApp_build
  474. xvfb-run ctest --test-dir $HOME/projects/UrhoApp_build
  475. Linux_MinGW:
  476. runs-on: ubuntu-22.04
  477. needs: init
  478. if: needs.init.outputs.skip == '0'
  479. strategy:
  480. fail-fast: false
  481. matrix:
  482. BITS:
  483. - 64
  484. - 32
  485. LIB_TYPE:
  486. - {
  487. ID: shared,
  488. VALUE: SHARED,
  489. }
  490. - {
  491. ID: static,
  492. VALUE: STATIC,
  493. }
  494. BUILD_TYPE:
  495. - {
  496. ID: rel,
  497. VALUE: Release,
  498. }
  499. - {
  500. ID: dbg,
  501. VALUE: Debug,
  502. }
  503. name: 🐧-mingw-${{ matrix.BITS }}-${{ matrix.LIB_TYPE.ID }}-${{ matrix.BUILD_TYPE.ID }}
  504. steps:
  505. - name: Checkout
  506. uses: actions/checkout@v3
  507. with: { path: "engine_repo" }
  508. - name: Install dependencies
  509. run: sudo apt install mingw-w64
  510. - name: Cache
  511. uses: actions/cache@v3
  512. with:
  513. path: engine_build
  514. key: linux-mingw-${{ matrix.BITS }}-${{ matrix.LIB_TYPE.ID }}-${{ matrix.BUILD_TYPE.ID }}-${{ github.sha }}
  515. restore-keys: linux-mingw-${{ matrix.BITS }}-${{ matrix.LIB_TYPE.ID }}-${{ matrix.BUILD_TYPE.ID }}
  516. - name: Build
  517. run: |
  518. #set -x # Echo commands
  519. echo "Current dir: $PWD" # $GITHUB_WORKSPACE
  520. if [ "${{ matrix.BITS }}" == "32" ]
  521. then
  522. export MINGW_PREFIX=/usr/bin/i686-w64-mingw32
  523. BITS64=0
  524. DX_INC=/usr/i686-w64-mingw32/include
  525. DX_LIB=/usr/i686-w64-mingw32/lib
  526. else
  527. export MINGW_PREFIX=/usr/bin/x86_64-w64-mingw32
  528. BITS64=1
  529. DX_INC=/usr/x86_64-w64-mingw32/include
  530. DX_LIB=/usr/x86_64-w64-mingw32/lib
  531. fi
  532. TOOLCHAIN=$GITHUB_WORKSPACE/engine_repo/cmake/Toolchains/MinGW.cmake
  533. cmake engine_repo -B engine_build -D CMAKE_TOOLCHAIN_FILE=${TOOLCHAIN} -D MINGW=1 \
  534. -D URHO3D_EXTRAS=1 -D URHO3D_OPENGL=1 -D URHO3D_D3D11=1 \
  535. -D DIRECTX_INC_SEARCH_PATHS=$DX_INC -D DIRECTX_LIB_SEARCH_PATHS=$DX_LIB \
  536. -D URHO3D_DATABASE_SQLITE=1 -D CMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE.VALUE }} \
  537. -D URHO3D_64BIT=$BITS64 -D URHO3D_LIB_TYPE=${{ matrix.LIB_TYPE.VALUE }}
  538. cmake --build engine_build
  539. - name: Test app
  540. run: |
  541. #sudo cmake --build engine_build --target install
  542. export URHO3D_HOME=$GITHUB_WORKSPACE/engine_build
  543. cd engine_repo
  544. rake new
  545. cd ..
  546. if [ "${{ matrix.BITS }}" == "32" ]
  547. then
  548. export MINGW_PREFIX=/usr/bin/i686-w64-mingw32
  549. BITS64=0
  550. DX_INC=/usr/i686-w64-mingw32/include
  551. DX_LIB=/usr/i686-w64-mingw32/lib
  552. else
  553. export MINGW_PREFIX=/usr/bin/x86_64-w64-mingw32
  554. BITS64=1
  555. DX_INC=/usr/x86_64-w64-mingw32/include
  556. DX_LIB=/usr/x86_64-w64-mingw32/lib
  557. fi
  558. TOOLCHAIN=$GITHUB_WORKSPACE/engine_repo/cmake/Toolchains/MinGW.cmake
  559. cmake $HOME/projects/UrhoApp -B $HOME/projects/UrhoApp_build -D CMAKE_TOOLCHAIN_FILE=${TOOLCHAIN} -D MINGW=1 \
  560. -D URHO3D_EXTRAS=1 -D URHO3D_OPENGL=1 -D URHO3D_D3D11=1 \
  561. -D DIRECTX_INC_SEARCH_PATHS=$DX_INC -D DIRECTX_LIB_SEARCH_PATHS=$DX_LIB \
  562. -D URHO3D_DATABASE_SQLITE=1 -D CMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE.VALUE }} \
  563. -D URHO3D_64BIT=$BITS64 -D URHO3D_LIB_TYPE=${{ matrix.LIB_TYPE.VALUE }}
  564. cmake --build $HOME/projects/UrhoApp_build
  565. Android:
  566. name: 🤖 Android
  567. runs-on: ubuntu-latest
  568. needs: init
  569. #if: false
  570. steps:
  571. - name: Checkout
  572. uses: actions/checkout@v3
  573. with: { path: "engine_repo" }
  574. - name: Free up space
  575. run: |
  576. echo "Current user: $USER"
  577. echo "Current dir: $PWD"
  578. echo "!df -h"; df -h # Disks usage
  579. echo "!df -h ~"; df -h ~ # Home physical device
  580. echo "!du -sh /usr/share/*/ | sort -rh"; du -sh /usr/share/*/ | sort -rh # Sort subdirs by size
  581. echo "!du -sh /usr/local/share/*/ | sort -rh"; du -sh /usr/local/share/*/ | sort -rh
  582. echo "!du -sh /opt/*/ | sort -rh"; du -sh /opt/*/ | sort -rh
  583. sudo rm -rf /usr/share/dotnet
  584. sudo rm -rf /usr/share/swift
  585. sudo rm -rf /usr/share/miniconda
  586. sudo rm -rf /usr/local/share/powershell
  587. sudo rm -rf /usr/local/share/chromium
  588. sudo rm -rf /opt/hostedtoolcache
  589. sudo rm -rf /opt/az
  590. sudo rm -rf /opt/microsoft
  591. sudo apt-get clean
  592. echo "!df -h ~ after free up"; df -h ~
  593. - name: Build
  594. run: |
  595. #set -x # Echo commands
  596. echo "Current dir: $PWD"
  597. #echo '!which java';which java # Where is Java executable
  598. #echo '!java -version';java -version # Print Java version
  599. #echo '!cmake --version';cmake --version # Print CMake version
  600. echo '!env';env # Print all environment variables
  601. # SDK contains obsolete sdkmanager by default ($ANDROID_SDK_ROOT/tools/bin/sdkmanager),
  602. # so download the latest version manually
  603. # https://developer.android.com/studio#command-tools
  604. wget -q -O tmp.zip https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip && unzip tmp.zip && rm tmp.zip
  605. # https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2004-Readme.md#environment-variables-3
  606. JAVA_HOME=$JAVA_HOME_11_X64
  607. ./cmdline-tools/bin/sdkmanager --sdk_root=${ANDROID_SDK_ROOT} \
  608. "cmdline-tools;latest" \
  609. | grep -v '\[.*\]' `# Hide progress bar` \
  610. || : # Catch error
  611. # We installed sdkmanager through sdkmanager, so delete the manually downloaded version
  612. rm -r cmdline-tools
  613. $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager \
  614. "platform-tools" \
  615. "build-tools;29.0.2" \
  616. "ndk;21.3.6528147" \
  617. "platforms;android-30" \
  618. "cmake;3.18.1" \
  619. | grep -v '\[.*\]' `# Hide progress bar` \
  620. || : #Catch error
  621. # Path to ninja
  622. PATH="$ANDROID_SDK_ROOT/cmake/3.18.1/bin:$PATH"
  623. echo '!ls -a $ANDROID_HOME';ls -a $ANDROID_HOME
  624. echo '!ls -a $ANDROID_HOME/platforms';ls -a $ANDROID_HOME/platforms
  625. echo '!ls -a $ANDROID_HOME/ndk';ls -a $ANDROID_HOME/ndk
  626. echo '!ls -a $ANDROID_HOME/build-tools';ls -a $ANDROID_HOME/build-tools
  627. cd engine_repo
  628. #URHO3D_LIB_TYPE=SHARED
  629. #./gradlew buildEnvironment
  630. #./gradlew build -x test
  631. ./gradlew build
  632. - name: Show remaining space
  633. if: ${{ always() }}
  634. run: echo "!df -h"; df -h # Disks usage
  635. ...
  636. # vi: set ts=2 sw=2 expandtab: