main.yml 39 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072
  1. # DO NOT EDIT. Generated from /extra/github-actions
  2. # TODO: support skip ci (https://github.community/t/github-actions-does-not-respect-skip-ci/17325/8)
  3. name: CI
  4. on: [push, pull_request]
  5. jobs:
  6. windows64-build:
  7. runs-on: windows-latest
  8. env:
  9. ACTIONS_ALLOW_UNSECURE_COMMANDS: true
  10. PLATFORM: windows64
  11. ARCH: 64
  12. MINGW_ARCH: x86_64
  13. CYG_ROOT: D:\cygwin
  14. steps:
  15. - uses: actions/checkout@main
  16. with:
  17. submodules: recursive
  18. - name: Use GNU Tar from msys
  19. run: |
  20. echo "C:\msys64\usr\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
  21. rm C:\msys64\usr\bin\bash.exe
  22. - name: choco install nsis
  23. uses: nick-invision/retry@v2
  24. with:
  25. timeout_minutes: 10
  26. max_attempts: 10
  27. command: choco install --no-progress nsis.portable --version 3.09 -y
  28. - name: choco install things
  29. shell: pwsh
  30. run: choco install --no-progress curl wget 7zip.portable -y
  31. - name: Prepend Chocolatey path
  32. shell: pwsh
  33. run: Write-Host "::add-path::C:\ProgramData\chocolatey\bin"
  34. - name: Install Neko from S3
  35. shell: pwsh
  36. run: |
  37. Invoke-WebRequest https://build.haxe.org/builds/neko/$env:PLATFORM/neko_latest.zip -OutFile $env:RUNNER_TEMP/neko_latest.zip
  38. Expand-Archive $env:RUNNER_TEMP/neko_latest.zip -DestinationPath $env:RUNNER_TEMP
  39. $NEKOPATH = Get-ChildItem $env:RUNNER_TEMP/neko-*-*
  40. echo "$NEKOPATH" >> $env:GITHUB_PATH
  41. echo "NEKOPATH=$NEKOPATH" >> $env:GITHUB_ENV
  42. - name: Print Neko version
  43. run: neko -version 2>&1
  44. - name: Setup ocaml
  45. uses: ocaml/setup-ocaml@v2
  46. with:
  47. ocaml-compiler: 4.08.1
  48. opam-repositories: |
  49. opam-repository-mingw: https://github.com/ocaml-opam/opam-repository-mingw.git#sunset
  50. default: https://github.com/ocaml/opam-repository.git
  51. opam-local-packages: |
  52. haxe.opam
  53. - name: Install dependencies
  54. shell: pwsh
  55. run: |
  56. Set-PSDebug -Trace 1
  57. curl.exe -fsSL -o "libmbedtls.tar.xz" --retry 3 https://github.com/Simn/mingw64-mbedtls/releases/download/2.16.3/mingw64-$($env:MINGW_ARCH)-mbedtls-2.16.3-1.tar.xz
  58. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'curl -L https://cpanmin.us | perl - App::cpanminus')
  59. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cpanm IPC::System::Simple module')
  60. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cpanm String::ShellQuote')
  61. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'echo "$OLDPWD"')
  62. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && tar -C / -xvf libmbedtls.tar.xz')
  63. - name: Install OCaml libraries
  64. shell: pwsh
  65. run: |
  66. Set-PSDebug -Trace 1
  67. opam install haxe --deps-only
  68. opam list
  69. - name: Expose mingw dll files
  70. shell: pwsh
  71. run: Write-Host "::add-path::${env:CYG_ROOT}/usr/$($env:MINGW_ARCH)-w64-mingw32/sys-root/mingw/bin"
  72. # required to be able to retrieve the revision
  73. - name: Mark directory as safe
  74. shell: pwsh
  75. run: |
  76. Set-PSDebug -Trace 1
  77. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'git config --global --add safe.directory "$OLDPWD"')
  78. - name: Set ADD_REVISION=1 for non-release
  79. if: ${{ !startsWith(github.ref, 'refs/tags/') }}
  80. shell: pwsh
  81. run: echo "ADD_REVISION=1" >> $Env:GITHUB_ENV
  82. - name: Build Haxe
  83. shell: pwsh
  84. run: |
  85. Set-PSDebug -Trace 1
  86. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -s -f Makefile.win -j`nproc` haxe 2>&1')
  87. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -s -f Makefile.win haxelib 2>&1')
  88. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -f Makefile.win echo_package_files package_bin package_installer_win package_choco 2>&1')
  89. dir out
  90. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && cygcheck ./haxe.exe')
  91. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && cygcheck ./haxelib.exe')
  92. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && ls ./out')
  93. - name: Check artifact
  94. shell: bash
  95. run: |
  96. ls out
  97. # Output should contain binaries zip, installer zip and nupkg
  98. [ $(ls -1 out | wc -l) -eq "3" ]
  99. - name: Upload artifact
  100. uses: actions/upload-artifact@v3
  101. with:
  102. name: win${{env.ARCH}}Binaries
  103. path: out
  104. windows-build:
  105. runs-on: windows-latest
  106. env:
  107. ACTIONS_ALLOW_UNSECURE_COMMANDS: true
  108. PLATFORM: windows
  109. ARCH: 32
  110. MINGW_ARCH: i686
  111. CYG_ROOT: D:\cygwin
  112. steps:
  113. - uses: actions/checkout@main
  114. with:
  115. submodules: recursive
  116. - name: Use GNU Tar from msys
  117. run: |
  118. echo "C:\msys64\usr\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
  119. rm C:\msys64\usr\bin\bash.exe
  120. - name: choco install nsis
  121. uses: nick-invision/retry@v2
  122. with:
  123. timeout_minutes: 10
  124. max_attempts: 10
  125. command: choco install --no-progress nsis.portable --version 3.09 -y
  126. - name: choco install things
  127. shell: pwsh
  128. run: choco install --no-progress curl wget 7zip.portable -y
  129. - name: Prepend Chocolatey path
  130. shell: pwsh
  131. run: Write-Host "::add-path::C:\ProgramData\chocolatey\bin"
  132. - name: Install Neko from S3
  133. shell: pwsh
  134. run: |
  135. Invoke-WebRequest https://build.haxe.org/builds/neko/$env:PLATFORM/neko_latest.zip -OutFile $env:RUNNER_TEMP/neko_latest.zip
  136. Expand-Archive $env:RUNNER_TEMP/neko_latest.zip -DestinationPath $env:RUNNER_TEMP
  137. $NEKOPATH = Get-ChildItem $env:RUNNER_TEMP/neko-*-*
  138. echo "$NEKOPATH" >> $env:GITHUB_PATH
  139. echo "NEKOPATH=$NEKOPATH" >> $env:GITHUB_ENV
  140. - name: Print Neko version
  141. run: neko -version 2>&1
  142. - name: Setup ocaml
  143. id: ocaml
  144. continue-on-error: true
  145. uses: kLabz/setup-ocaml@win32
  146. with:
  147. ocaml-compiler: 4.08.1
  148. opam-depext: false
  149. opam-repositories: |
  150. opam-repository-mingw: https://github.com/ocaml-opam/opam-repository-mingw.git#sunset
  151. default: https://github.com/ocaml/opam-repository.git
  152. opam-local-packages: |
  153. haxe.opam
  154. cache-prefix: w32-v1
  155. # TODO make it work on first try
  156. # (when cygwin cache doesn't exist, ocaml install fails with a curl error)
  157. - name: Setup ocaml (second chance)
  158. if: steps.ocaml.outcome == 'failure'
  159. uses: kLabz/setup-ocaml@win32
  160. with:
  161. ocaml-compiler: 4.08.1
  162. opam-depext: false
  163. opam-repositories: |
  164. opam-repository-mingw: https://github.com/ocaml-opam/opam-repository-mingw.git#sunset
  165. default: https://github.com/ocaml/opam-repository.git
  166. opam-local-packages: |
  167. haxe.opam
  168. cache-prefix: w32-v1
  169. - name: Install dependencies
  170. shell: pwsh
  171. run: |
  172. Set-PSDebug -Trace 1
  173. curl.exe -fsSL -o "libmbedtls.tar.xz" --retry 3 https://github.com/Simn/mingw64-mbedtls/releases/download/2.16.3/mingw64-$($env:MINGW_ARCH)-mbedtls-2.16.3-1.tar.xz
  174. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'curl -L https://cpanmin.us | perl - App::cpanminus')
  175. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cpanm IPC::System::Simple module')
  176. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cpanm String::ShellQuote')
  177. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'echo "$OLDPWD"')
  178. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && tar -C / -xvf libmbedtls.tar.xz')
  179. - name: Install OCaml libraries
  180. shell: pwsh
  181. run: |
  182. Set-PSDebug -Trace 1
  183. opam install haxe --deps-only
  184. opam list
  185. - name: Expose mingw dll files
  186. shell: pwsh
  187. run: Write-Host "::add-path::${env:CYG_ROOT}/usr/$($env:MINGW_ARCH)-w64-mingw32/sys-root/mingw/bin"
  188. # required to be able to retrieve the revision
  189. - name: Mark directory as safe
  190. shell: pwsh
  191. run: |
  192. Set-PSDebug -Trace 1
  193. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'git config --global --add safe.directory "$OLDPWD"')
  194. - name: Set ADD_REVISION=1 for non-release
  195. if: ${{ !startsWith(github.ref, 'refs/tags/') }}
  196. shell: pwsh
  197. run: echo "ADD_REVISION=1" >> $Env:GITHUB_ENV
  198. - name: Build Haxe
  199. shell: pwsh
  200. run: |
  201. Set-PSDebug -Trace 1
  202. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -s -f Makefile.win -j`nproc` haxe 2>&1')
  203. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -s -f Makefile.win haxelib 2>&1')
  204. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -f Makefile.win echo_package_files package_bin package_installer_win package_choco 2>&1')
  205. dir out
  206. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && cygcheck ./haxe.exe')
  207. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && cygcheck ./haxelib.exe')
  208. & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && ls ./out')
  209. - name: Check artifact
  210. shell: bash
  211. run: |
  212. ls out
  213. # Output should contain binaries zip, installer zip and nupkg
  214. [ $(ls -1 out | wc -l) -eq "3" ]
  215. - name: Upload artifact
  216. uses: actions/upload-artifact@v3
  217. with:
  218. name: win${{env.ARCH}}Binaries
  219. path: out
  220. linux-build:
  221. runs-on: ubuntu-20.04
  222. env:
  223. PLATFORM: linux64
  224. OPAMYES: 1
  225. strategy:
  226. fail-fast: false
  227. matrix:
  228. ocaml: ["4.08.1", "5.0.0"]
  229. steps:
  230. - uses: actions/checkout@main
  231. with:
  232. submodules: recursive
  233. - name: Cache opam
  234. id: cache-opam
  235. uses: actions/[email protected]
  236. with:
  237. path: ~/.opam/
  238. key: ${{ runner.os }}-${{ matrix.ocaml }}-${{ hashFiles('./haxe.opam', './libs/') }}
  239. - name: Install Neko from S3
  240. run: |
  241. set -ex
  242. curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz
  243. tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP
  244. NEKOPATH=`echo $RUNNER_TEMP/neko-*-*`
  245. sudo mkdir -p /usr/local/bin
  246. sudo mkdir -p /usr/local/lib/neko
  247. sudo ln -s $NEKOPATH/{neko,nekoc,nekoml,nekotools} /usr/local/bin/
  248. sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/
  249. sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/
  250. echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV
  251. - name: Print Neko version
  252. run: neko -version 2>&1
  253. - name: Install dependencies
  254. run: |
  255. set -ex
  256. sudo add-apt-repository ppa:avsm/ppa -y # provides OPAM 2
  257. sudo add-apt-repository ppa:haxe/ocaml -y # provides newer version of mbedtls
  258. sudo apt-get update -qqy
  259. sudo apt-get install -qqy ocaml-nox camlp5 opam libpcre2-dev zlib1g-dev libgtk2.0-dev libmbedtls-dev ninja-build libstring-shellquote-perl libipc-system-simple-perl
  260. - name: Install OCaml libraries
  261. if: steps.cache-opam.outputs.cache-hit != 'true'
  262. run: |
  263. set -ex
  264. opam init # --disable-sandboxing
  265. opam update
  266. opam switch create ${{ matrix.ocaml }}
  267. opam pin add haxe . --no-action
  268. opam install haxe --deps-only --assume-depexts
  269. opam list
  270. ocamlopt -v
  271. - name: Set ADD_REVISION=1 for non-release
  272. if: ${{ !startsWith(github.ref, 'refs/tags/') }}
  273. run: echo "ADD_REVISION=1" >> $GITHUB_ENV
  274. - name: Build Haxe
  275. run: |
  276. set -ex
  277. eval $(opam env)
  278. opam config exec -- make -s -j`nproc` STATICLINK=1 haxe
  279. opam config exec -- make -s haxelib
  280. make -s package_unix
  281. ls -l out
  282. ldd -v ./haxe
  283. ldd -v ./haxelib
  284. # https://stackoverflow.com/questions/58033366/how-to-get-current-branch-within-github-actions
  285. - name: Extract branch name
  286. id: extract_branch
  287. shell: bash
  288. run: echo "branch=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT
  289. - name: Build xmldoc
  290. if: matrix.ocaml == '4.08.1'
  291. run: |
  292. set -ex
  293. make -s xmldoc
  294. cat >extra/doc/info.json <<EOL
  295. {
  296. "commit": "$GITHUB_SHA",
  297. "branch": "${{ steps.extract_branch.outputs.branch }}"
  298. }
  299. EOL
  300. - name: Upload artifact
  301. uses: actions/upload-artifact@v3
  302. with:
  303. name: linuxBinaries${{ (matrix.ocaml == '5.0.0' && '_ocaml5') || '' }}
  304. path: out
  305. - name: Upload xmldoc artifact
  306. uses: actions/upload-artifact@v3
  307. if: matrix.ocaml == '4.08.1'
  308. with:
  309. name: xmldoc
  310. path: extra/doc
  311. linux-test:
  312. needs: linux-build
  313. runs-on: ubuntu-20.04
  314. env:
  315. PLATFORM: linux64
  316. TEST: ${{matrix.target}}
  317. HXCPP_COMPILE_CACHE: ~/hxcache
  318. HAXE_STD_PATH: /usr/local/share/haxe/std
  319. strategy:
  320. fail-fast: false
  321. matrix:
  322. ocaml: ["4.08.1", "5.0.0"]
  323. target: [macro, js, hl, cpp, 'java,jvm', cs, php, python, lua, flash, neko]
  324. include:
  325. - target: hl
  326. APT_PACKAGES: cmake ninja-build libturbojpeg-dev
  327. - target: cpp
  328. APT_PACKAGES: gcc-multilib g++-multilib
  329. - target: lua
  330. APT_PACKAGES: ncurses-dev
  331. - target: flash
  332. APT_PACKAGES: libglib2.0-0 libgtk2.0-0 libfreetype6 xvfb
  333. steps:
  334. - uses: actions/checkout@main
  335. with:
  336. submodules: recursive
  337. - uses: actions/download-artifact@v3
  338. with:
  339. name: linuxBinaries${{ (matrix.ocaml == '5.0.0' && '_ocaml5') || '' }}
  340. path: linuxBinaries
  341. - name: Install Neko from S3
  342. run: |
  343. set -ex
  344. curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz
  345. tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP
  346. NEKOPATH=`echo $RUNNER_TEMP/neko-*-*`
  347. sudo mkdir -p /usr/local/bin
  348. sudo mkdir -p /usr/local/lib/neko
  349. sudo ln -s $NEKOPATH/{neko,nekoc,nekoml,nekotools} /usr/local/bin/
  350. sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/
  351. sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/
  352. echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV
  353. - name: Print Neko version
  354. run: neko -version 2>&1
  355. - name: Setup Haxe
  356. run: |
  357. sudo apt install -qqy libmbedtls-dev
  358. set -ex
  359. tar -xf linuxBinaries/*_bin.tar.gz -C linuxBinaries --strip-components=1
  360. sudo mkdir -p /usr/local/bin/
  361. sudo mkdir -p /usr/local/share/haxe/
  362. sudo ln -s `pwd`/linuxBinaries/haxe /usr/local/bin/haxe
  363. sudo ln -s `pwd`/linuxBinaries/haxelib /usr/local/bin/haxelib
  364. sudo ln -s `pwd`/linuxBinaries/std /usr/local/share/haxe/std
  365. - name: Print Haxe version
  366. run: haxe -version
  367. - name: Setup haxelib
  368. run: |
  369. set -ex
  370. mkdir ~/haxelib
  371. haxelib setup ~/haxelib
  372. - name: Install apt packages
  373. if: matrix.APT_PACKAGES
  374. run: |
  375. set -ex
  376. sudo apt update -qqy
  377. sudo apt install -qqy ${{matrix.APT_PACKAGES}}
  378. - name: Flash setup
  379. if: matrix.target == 'flash'
  380. run: export DISPLAY=:99.0
  381. - name: Test
  382. run: haxe RunCi.hxml
  383. working-directory: ${{github.workspace}}/tests
  384. test-docgen:
  385. needs: linux-build
  386. runs-on: ubuntu-20.04
  387. env:
  388. PLATFORM: linux64
  389. HXCPP_COMPILE_CACHE: ~/hxcache
  390. steps:
  391. - uses: actions/checkout@main
  392. with:
  393. submodules: recursive
  394. - uses: actions/download-artifact@v3
  395. with:
  396. name: linuxBinaries
  397. path: linuxBinaries
  398. - name: Download xmldoc artifact
  399. uses: actions/download-artifact@v3
  400. with:
  401. name: xmldoc
  402. path: xmldoc
  403. - name: Install Neko from S3
  404. run: |
  405. set -ex
  406. curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz
  407. tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP
  408. NEKOPATH=`echo $RUNNER_TEMP/neko-*-*`
  409. sudo mkdir -p /usr/local/bin
  410. sudo mkdir -p /usr/local/lib/neko
  411. sudo ln -s $NEKOPATH/{neko,nekoc,nekoml,nekotools} /usr/local/bin/
  412. sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/
  413. sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/
  414. echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV
  415. - name: Print Neko version
  416. run: neko -version 2>&1
  417. - name: Setup Haxe
  418. run: |
  419. sudo apt install -qqy libmbedtls-dev
  420. set -ex
  421. tar -xf linuxBinaries/*_bin.tar.gz -C linuxBinaries --strip-components=1
  422. sudo mkdir -p /usr/local/bin/
  423. sudo mkdir -p /usr/local/share/haxe/
  424. sudo ln -s `pwd`/linuxBinaries/haxe /usr/local/bin/haxe
  425. sudo ln -s `pwd`/linuxBinaries/haxelib /usr/local/bin/haxelib
  426. sudo ln -s `pwd`/linuxBinaries/std /usr/local/share/haxe/std
  427. - name: Print Haxe version
  428. run: haxe -version
  429. - name: Setup haxelib
  430. run: |
  431. set -ex
  432. mkdir ~/haxelib
  433. haxelib setup ~/haxelib
  434. - name: Test documentation generation
  435. run: |
  436. set -ex
  437. haxelib git dox https://github.com/HaxeFoundation/dox.git
  438. haxelib git hxtemplo https://github.com/Simn/hxtemplo.git
  439. haxelib git hxargs https://github.com/Simn/hxargs.git
  440. haxelib git markdown https://github.com/dpeek/haxe-markdown.git
  441. haxelib git hxcpp https://github.com/HaxeFoundation/hxcpp.git
  442. cd $(haxelib libpath hxcpp)/tools/hxcpp
  443. haxe compile.hxml
  444. cd -
  445. haxe dox.hxml
  446. mkdir resources
  447. cp ../../src-json/* resources
  448. cpp/Dox -i ../../xmldoc -ex microsoft -ex javax -ex cs.internal -theme $(haxelib libpath dox)/themes/default
  449. working-directory: ${{github.workspace}}/tests/docgen
  450. linux-arm64:
  451. runs-on: ubuntu-20.04
  452. permissions:
  453. packages: write
  454. env:
  455. FORCE_COLOR: 1
  456. steps:
  457. - name: Login to GitHub Container Registry
  458. uses: docker/login-action@v2
  459. with:
  460. registry: ghcr.io
  461. username: ${{ github.actor }}
  462. password: ${{ secrets.GITHUB_TOKEN }}
  463. - name: Install Earthly
  464. run: sudo /bin/sh -c 'wget https://github.com/earthly/earthly/releases/download/v0.6.13/earthly-linux-amd64 -O /usr/local/bin/earthly && chmod +x /usr/local/bin/earthly && /usr/local/bin/earthly bootstrap --with-autocomplete'
  465. - name: Set up QEMU
  466. id: qemu
  467. uses: docker/setup-qemu-action@v2
  468. with:
  469. image: tonistiigi/binfmt:latest
  470. platforms: all
  471. - uses: actions/checkout@main
  472. with:
  473. submodules: recursive
  474. - name: Set CONTAINER_ vars
  475. run: |
  476. echo "CONTAINER_REG=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV;
  477. echo "CONTAINER_TAG=$(echo ${{ github.ref_name }} | sed -e 's/[^A-Za-z0-9\.]/-/g')" >> $GITHUB_ENV;
  478. - name: Build devcontainer
  479. run: earthly --platform=linux/arm64 +devcontainer --IMAGE_NAME="ghcr.io/${CONTAINER_REG}_devcontainer" --IMAGE_TAG="${CONTAINER_TAG}-arm64" --IMAGE_CACHE="ghcr.io/haxefoundation/haxe_devcontainer:development-arm64"
  480. env:
  481. EARTHLY_PUSH: "${{ github.event_name == 'push' }}"
  482. EARTHLY_USE_INLINE_CACHE: true
  483. EARTHLY_SAVE_INLINE_CACHE: true
  484. - name: Set ADD_REVISION=1 for non-release
  485. if: ${{ !startsWith(github.ref, 'refs/tags/') }}
  486. run: echo "ADD_REVISION=1" >> $GITHUB_ENV
  487. - name: Build
  488. run: earthly --platform=linux/arm64 +build --ADD_REVISION="$ADD_REVISION" --SET_SAFE_DIRECTORY="true"
  489. env:
  490. EARTHLY_PUSH: "${{ github.event_name == 'push' }}"
  491. EARTHLY_REMOTE_CACHE: "ghcr.io/${{env.CONTAINER_REG}}_cache:build-${{env.CONTAINER_TAG}}-arm64"
  492. - name: Upload artifact
  493. uses: actions/upload-artifact@v3
  494. with:
  495. name: linuxArm64Binaries
  496. path: out/linux/arm64
  497. mac-build:
  498. runs-on: macos-latest
  499. env:
  500. PLATFORM: mac
  501. OPAMYES: 1
  502. MACOSX_DEPLOYMENT_TARGET: 10.13
  503. steps:
  504. - uses: actions/checkout@main
  505. with:
  506. submodules: recursive
  507. - name: Cache opam
  508. id: cache-opam
  509. uses: actions/[email protected]
  510. with:
  511. path: ~/.opam/
  512. key: ${{ runner.os }}-${{ hashFiles('./haxe.opam', './libs/') }}
  513. - name: Install Neko from S3
  514. run: |
  515. set -ex
  516. curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz
  517. tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP
  518. NEKOPATH=`echo $RUNNER_TEMP/neko-*-*`
  519. sudo mkdir -p /usr/local/bin
  520. sudo mkdir -p /usr/local/lib/neko
  521. sudo ln -s $NEKOPATH/{neko,nekoc,nekoml,nekotools} /usr/local/bin/
  522. sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/
  523. sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/
  524. echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV
  525. - name: Print Neko version
  526. run: neko -version 2>&1
  527. - name: Install dependencies
  528. env:
  529. # For compatibility with macOS 10.13
  530. ZLIB_VERSION: 1.3
  531. MBEDTLS_VERSION: 2.28.5
  532. PCRE2_VERSION: 10.42
  533. run: |
  534. set -ex
  535. brew uninstall [email protected] || echo
  536. brew uninstall [email protected] || echo
  537. brew untap local/openssl || echo
  538. brew untap local/python2 || echo
  539. brew update
  540. # brew unlink python@2
  541. brew bundle --file=tests/Brewfile --no-upgrade || brew link --overwrite awscli
  542. brew install libunistring
  543. brew install cpanminus
  544. cpanm IPC::System::Simple
  545. cpanm String::ShellQuote
  546. curl -L https://www.zlib.net/zlib-$ZLIB_VERSION.tar.gz | tar xz
  547. cd zlib-$ZLIB_VERSION
  548. ./configure
  549. make && make install
  550. cd ..
  551. curl -L https://github.com/ARMmbed/mbedtls/archive/v$MBEDTLS_VERSION.tar.gz | tar xz
  552. cd mbedtls-$MBEDTLS_VERSION
  553. make && make install
  554. cd ..
  555. curl -L https://github.com/PCRE2Project/pcre2/releases/download/pcre2-$PCRE2_VERSION/pcre2-$PCRE2_VERSION.tar.gz | tar xz
  556. cd pcre2-$PCRE2_VERSION
  557. ./configure --enable-unicode --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicode-properties --enable-pcre2grep-libz --enable-pcre2grep-libbz2 --enable-jit
  558. make && make install
  559. cd ..
  560. - name: Install OCaml libraries
  561. if: steps.cache-opam.outputs.cache-hit != 'true'
  562. run: |
  563. set -ex
  564. opam init # --disable-sandboxing
  565. opam update
  566. opam switch create 4.08.1
  567. eval $(opam env)
  568. opam env
  569. opam pin add ctypes 0.17.1 --yes
  570. opam pin add haxe . --no-action
  571. opam install haxe --deps-only --assume-depexts
  572. opam list
  573. ocamlopt -v
  574. - name: Set ADD_REVISION=1 for non-release
  575. if: ${{ !startsWith(github.ref, 'refs/tags/') }}
  576. run: echo "ADD_REVISION=1" >> $GITHUB_ENV
  577. - name: Build Haxe
  578. run: |
  579. set -ex
  580. eval $(opam env)
  581. opam config exec -- make -s -j`sysctl -n hw.ncpu` STATICLINK=1 "LIB_PARAMS=/usr/local/lib/libz.a /usr/local/lib/libpcre2-8.a /usr/local/lib/libmbedtls.a /usr/local/lib/libmbedcrypto.a /usr/local/lib/libmbedx509.a -cclib '-framework Security -framework CoreFoundation'" haxe
  582. opam config exec -- make -s haxelib
  583. make -s package_unix package_installer_mac
  584. ls -l out
  585. otool -L ./haxe
  586. otool -L ./haxelib
  587. - name: Upload artifact
  588. uses: actions/upload-artifact@v3
  589. with:
  590. name: macBinaries
  591. path: out
  592. windows64-test:
  593. needs: windows64-build
  594. runs-on: windows-latest
  595. env:
  596. ACTIONS_ALLOW_UNSECURE_COMMANDS: true
  597. PLATFORM: windows64
  598. TEST: ${{matrix.target}}
  599. HXCPP_COMPILE_CACHE: ~/hxcache
  600. ARCH: 64
  601. strategy:
  602. fail-fast: false
  603. matrix:
  604. # TODO enable lua after https://github.com/HaxeFoundation/haxe/issues/10919
  605. target: [macro, js, hl, cpp, 'java,jvm', cs, php, python, flash, neko]
  606. steps:
  607. - uses: actions/checkout@main
  608. with:
  609. submodules: recursive
  610. - uses: actions/download-artifact@v3
  611. with:
  612. name: win${{env.ARCH}}Binaries
  613. path: win${{env.ARCH}}Binaries
  614. - name: Install Neko from S3
  615. shell: pwsh
  616. run: |
  617. Invoke-WebRequest https://build.haxe.org/builds/neko/$env:PLATFORM/neko_latest.zip -OutFile $env:RUNNER_TEMP/neko_latest.zip
  618. Expand-Archive $env:RUNNER_TEMP/neko_latest.zip -DestinationPath $env:RUNNER_TEMP
  619. $NEKOPATH = Get-ChildItem $env:RUNNER_TEMP/neko-*-*
  620. echo "$NEKOPATH" >> $env:GITHUB_PATH
  621. echo "NEKOPATH=$NEKOPATH" >> $env:GITHUB_ENV
  622. - name: Print Neko version
  623. run: neko -version 2>&1
  624. - uses: actions/setup-node@v3
  625. with:
  626. node-version: 18.17.1
  627. # - name: Quick test
  628. # shell: pwsh
  629. # run: |
  630. # $DOWNLOADDIR="./win$($env:ARCH)Binaries"
  631. # new-item -Name $DOWNLOADDIR -ItemType directory
  632. # Invoke-WebRequest https://build.haxe.org/builds/haxe/$env:PLATFORM/haxe_latest.zip -OutFile $DOWNLOADDIR/haxe_bin.zip
  633. - name: Setup Haxe
  634. shell: pwsh
  635. run: |
  636. $DOWNLOADDIR="./win$($env:ARCH)Binaries"
  637. Expand-Archive $DOWNLOADDIR/*_bin.zip -DestinationPath $DOWNLOADDIR
  638. Set-PSDebug -Trace 1
  639. $HAXEPATH = Get-ChildItem $DOWNLOADDIR/haxe_*_* -Directory
  640. Write-Host "::add-path::$HAXEPATH"
  641. Write-Host "::set-env name=HAXELIB_ROOT::$HAXEPATH\lib"
  642. - name: Print Haxe version
  643. shell: pwsh
  644. run: haxe -version
  645. - name: "Make Python 3 be available as python3 in the cmdline"
  646. shell: pwsh
  647. run: |
  648. Set-PSDebug -Trace 1
  649. $pypath = python -c "import sys; print(sys.executable)"
  650. $py3path = $pypath.replace("python.exe","python3.exe")
  651. cmd /c mklink $py3path $pypath
  652. python3 -V
  653. - name: Install hererocks
  654. if: matrix.target == 'lua'
  655. shell: cmd
  656. run: |
  657. pip install hererocks
  658. hererocks lua53 -l5.3 -rlatest
  659. call lua53/bin/activate
  660. - name: Install wget
  661. if: matrix.target == 'flash'
  662. shell: cmd
  663. run: |
  664. choco install wget
  665. wget --version
  666. - name: Setup haxelib
  667. shell: pwsh
  668. run: |
  669. mkdir "$env:HAXELIB_ROOT"
  670. haxelib setup "$env:HAXELIB_ROOT"
  671. - name: Test
  672. shell: pwsh
  673. run: haxe RunCi.hxml
  674. working-directory: ${{github.workspace}}/tests
  675. windows-test:
  676. needs: windows-build
  677. runs-on: windows-latest
  678. env:
  679. ACTIONS_ALLOW_UNSECURE_COMMANDS: true
  680. PLATFORM: windows
  681. TEST: ${{matrix.target}}
  682. HXCPP_COMPILE_CACHE: ~/hxcache
  683. ARCH: 32
  684. strategy:
  685. fail-fast: false
  686. matrix:
  687. # TODO jvm: https://github.com/HaxeFoundation/haxe/issues/8601
  688. # TODO enable lua after https://github.com/HaxeFoundation/haxe/issues/10919
  689. target: [macro, js, hl, cpp, java, cs, php, python, flash, neko]
  690. steps:
  691. - uses: actions/checkout@main
  692. with:
  693. submodules: recursive
  694. - uses: actions/download-artifact@v3
  695. with:
  696. name: win${{env.ARCH}}Binaries
  697. path: win${{env.ARCH}}Binaries
  698. - name: Install Neko from S3
  699. shell: pwsh
  700. run: |
  701. Invoke-WebRequest https://build.haxe.org/builds/neko/$env:PLATFORM/neko_latest.zip -OutFile $env:RUNNER_TEMP/neko_latest.zip
  702. Expand-Archive $env:RUNNER_TEMP/neko_latest.zip -DestinationPath $env:RUNNER_TEMP
  703. $NEKOPATH = Get-ChildItem $env:RUNNER_TEMP/neko-*-*
  704. echo "$NEKOPATH" >> $env:GITHUB_PATH
  705. echo "NEKOPATH=$NEKOPATH" >> $env:GITHUB_ENV
  706. - name: Print Neko version
  707. run: neko -version 2>&1
  708. - uses: actions/setup-node@v3
  709. with:
  710. node-version: 18.17.1
  711. # - name: Quick test
  712. # shell: pwsh
  713. # run: |
  714. # $DOWNLOADDIR="./win$($env:ARCH)Binaries"
  715. # new-item -Name $DOWNLOADDIR -ItemType directory
  716. # Invoke-WebRequest https://build.haxe.org/builds/haxe/$env:PLATFORM/haxe_latest.zip -OutFile $DOWNLOADDIR/haxe_bin.zip
  717. - name: Setup Haxe
  718. shell: pwsh
  719. run: |
  720. $DOWNLOADDIR="./win$($env:ARCH)Binaries"
  721. Expand-Archive $DOWNLOADDIR/*_bin.zip -DestinationPath $DOWNLOADDIR
  722. Set-PSDebug -Trace 1
  723. $HAXEPATH = Get-ChildItem $DOWNLOADDIR/haxe_*_* -Directory
  724. Write-Host "::add-path::$HAXEPATH"
  725. Write-Host "::set-env name=HAXELIB_ROOT::$HAXEPATH\lib"
  726. - name: Print Haxe version
  727. shell: pwsh
  728. run: haxe -version
  729. - name: "Make Python 3 be available as python3 in the cmdline"
  730. shell: pwsh
  731. run: |
  732. Set-PSDebug -Trace 1
  733. $pypath = python -c "import sys; print(sys.executable)"
  734. $py3path = $pypath.replace("python.exe","python3.exe")
  735. cmd /c mklink $py3path $pypath
  736. python3 -V
  737. - name: Install hererocks
  738. if: matrix.target == 'lua'
  739. shell: cmd
  740. run: |
  741. pip install hererocks
  742. hererocks lua53 -l5.3 -rlatest
  743. call lua53/bin/activate
  744. - name: Install wget
  745. if: matrix.target == 'flash'
  746. shell: cmd
  747. run: |
  748. choco install wget
  749. wget --version
  750. - name: Setup haxelib
  751. shell: pwsh
  752. run: |
  753. mkdir "$env:HAXELIB_ROOT"
  754. haxelib setup "$env:HAXELIB_ROOT"
  755. - name: Test
  756. shell: pwsh
  757. run: haxe RunCi.hxml
  758. working-directory: ${{github.workspace}}/tests
  759. mac-test:
  760. needs: mac-build
  761. runs-on: macos-latest
  762. env:
  763. PLATFORM: mac
  764. TEST: ${{matrix.target}}
  765. HXCPP_COMPILE_CACHE: ~/hxcache
  766. HAXE_STD_PATH: /usr/local/share/haxe/std
  767. strategy:
  768. fail-fast: false
  769. matrix:
  770. target: [macro, js, hl, cpp, 'java,jvm', cs, php, python, flash, neko]
  771. include:
  772. - target: hl
  773. BREW_PACKAGES: ninja
  774. steps:
  775. - uses: actions/checkout@main
  776. with:
  777. submodules: recursive
  778. - uses: actions/download-artifact@v3
  779. with:
  780. name: macBinaries
  781. path: macBinaries
  782. - name: Install Neko from S3
  783. run: |
  784. set -ex
  785. curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz
  786. tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP
  787. NEKOPATH=`echo $RUNNER_TEMP/neko-*-*`
  788. sudo mkdir -p /usr/local/bin
  789. sudo mkdir -p /usr/local/lib/neko
  790. sudo ln -s $NEKOPATH/{neko,nekoc,nekoml,nekotools} /usr/local/bin/
  791. sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/
  792. sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/
  793. echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV
  794. - name: Print Neko version
  795. run: neko -version 2>&1
  796. - name: Setup Haxe
  797. run: |
  798. # mkdir ./macBinaries
  799. # curl -sSL https://build.haxe.org/builds/haxe/mac/haxe_latest.tar.gz -o ./macBinaries/haxe_bin.tar.gz
  800. set -ex
  801. tar -xf macBinaries/*_bin.tar.gz -C macBinaries --strip-components=1
  802. sudo mkdir -p /usr/local/bin/
  803. sudo mkdir -p /usr/local/share/haxe/
  804. sudo ln -s `pwd`/macBinaries/haxe /usr/local/bin/haxe
  805. sudo ln -s `pwd`/macBinaries/haxelib /usr/local/bin/haxelib
  806. sudo ln -s `pwd`/macBinaries/std /usr/local/share/haxe/std
  807. - name: Print Haxe version
  808. run: haxe -version
  809. - name: Setup haxelib
  810. run: |
  811. set -ex
  812. mkdir ~/haxelib
  813. haxelib setup ~/haxelib
  814. - name: Install homebrew packages
  815. if: matrix.BREW_PACKAGES
  816. run: brew install ${{matrix.BREW_PACKAGES}}
  817. - name: Test
  818. run: |
  819. # disable invalid Unicode filenames on APFS
  820. echo "" > sys/compile-fs.hxml
  821. haxe RunCi.hxml
  822. working-directory: ${{github.workspace}}/tests
  823. deploy:
  824. if: success() && github.repository_owner == 'HaxeFoundation' && github.event_name != 'pull_request'
  825. needs: [linux-test, linux-arm64, mac-test, windows-test, windows64-test]
  826. runs-on: ubuntu-20.04
  827. steps:
  828. # this is only needed for to get `COMMIT_DATE`...
  829. # maybe https://github.community/t/expose-commit-timestamp-in-the-github-context-data/16460/3
  830. # would be faster
  831. - name: Checkout the repository
  832. uses: actions/checkout@main
  833. - name: Download build artifacts
  834. uses: actions/download-artifact@v3
  835. - name: Install awscli
  836. run: |
  837. set -ex
  838. sudo apt-get update -qqy
  839. sudo apt-get install -qqy awscli
  840. # https://stackoverflow.com/questions/58033366/how-to-get-current-branch-within-github-actions
  841. - name: Extract branch name
  842. id: extract_branch
  843. shell: bash
  844. run: echo "branch=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT
  845. - name: Upload binaries
  846. shell: bash
  847. env:
  848. AWS_ACCESS_KEY_ID: ${{ secrets.HXBUILDS_AWS_ACCESS_KEY_ID }}
  849. AWS_SECRET_ACCESS_KEY: ${{ secrets.HXBUILDS_AWS_SECRET_ACCESS_KEY }}
  850. HXBUILDS_S3ADDR: ${{ secrets.HXBUILDS_S3ADDR }}
  851. AWS_EC2_METADATA_DISABLED: true
  852. run: |
  853. set -ex
  854. COMMIT_HASH_SHORT=${GITHUB_SHA:0:7}
  855. COMMIT_DATE=`TZ=UTC git show --quiet --date='format-local:%Y-%m-%d' --format="%cd"`
  856. FILE_NAME=haxe_${COMMIT_DATE}_${{ steps.extract_branch.outputs.branch }}_${COMMIT_HASH_SHORT}
  857. aws s3 cp linuxBinaries/*_bin.tar.gz ${HXBUILDS_S3ADDR}/haxe/linux64/${FILE_NAME}.tar.gz
  858. aws s3 cp linuxArm64Binaries/*_bin.tar.gz ${HXBUILDS_S3ADDR}/haxe/linux-arm64/${FILE_NAME}.tar.gz
  859. aws s3 cp macBinaries/*_bin.tar.gz ${HXBUILDS_S3ADDR}/haxe/mac/${FILE_NAME}.tar.gz
  860. aws s3 cp macBinaries/*_installer.tar.gz ${HXBUILDS_S3ADDR}/haxe/mac-installer/${FILE_NAME}.tar.gz
  861. aws s3 cp win64Binaries/*_bin.zip ${HXBUILDS_S3ADDR}/haxe/windows64/${FILE_NAME}.zip
  862. aws s3 cp win64Binaries/*_installer.zip ${HXBUILDS_S3ADDR}/haxe/windows64-installer/${FILE_NAME}.zip
  863. aws s3 cp win64Binaries/*.nupkg ${HXBUILDS_S3ADDR}/haxe/windows64-choco/
  864. aws s3 cp win32Binaries/*_bin.zip ${HXBUILDS_S3ADDR}/haxe/windows/${FILE_NAME}.zip
  865. aws s3 cp win32Binaries/*_installer.zip ${HXBUILDS_S3ADDR}/haxe/windows-installer/${FILE_NAME}.zip
  866. aws s3 cp win32Binaries/*.nupkg ${HXBUILDS_S3ADDR}/haxe/windows-choco/
  867. - name: Update "latest"
  868. if: github.ref == 'refs/heads/development'
  869. shell: bash
  870. env:
  871. AWS_ACCESS_KEY_ID: ${{ secrets.HXBUILDS_AWS_ACCESS_KEY_ID }}
  872. AWS_SECRET_ACCESS_KEY: ${{ secrets.HXBUILDS_AWS_SECRET_ACCESS_KEY }}
  873. HXBUILDS_S3ADDR: ${{ secrets.HXBUILDS_S3ADDR }}
  874. AWS_EC2_METADATA_DISABLED: true
  875. run: |
  876. set -ex
  877. aws s3 cp linuxBinaries/*_bin.tar.gz ${HXBUILDS_S3ADDR}/haxe/linux64/haxe_latest.tar.gz
  878. aws s3 cp linuxArm64Binaries/*_bin.tar.gz ${HXBUILDS_S3ADDR}/haxe/linux-arm64/haxe_latest.tar.gz
  879. aws s3 cp macBinaries/*_bin.tar.gz ${HXBUILDS_S3ADDR}/haxe/mac/haxe_latest.tar.gz
  880. aws s3 cp macBinaries/*_installer.tar.gz ${HXBUILDS_S3ADDR}/haxe/mac-installer/haxe_latest.tar.gz
  881. aws s3 cp win64Binaries/*_bin.zip ${HXBUILDS_S3ADDR}/haxe/windows64/haxe_latest.zip
  882. aws s3 cp win64Binaries/*_installer.zip ${HXBUILDS_S3ADDR}/haxe/windows64-installer/haxe_latest.zip
  883. aws s3 cp win32Binaries/*_bin.zip ${HXBUILDS_S3ADDR}/haxe/windows/haxe_latest.zip
  884. aws s3 cp win32Binaries/*_installer.zip ${HXBUILDS_S3ADDR}/haxe/windows-installer/haxe_latest.zip
  885. # Chocolatey packages have to be named with version number,
  886. # so let's use web redirection to keep the original file name.
  887. [[ "$HXBUILDS_S3ADDR" =~ s3://([^/]+)(.*) ]] && HXBUILDS_S3BUCKET="${BASH_REMATCH[1]}" && HXBUILDS_S3PATH="${BASH_REMATCH[2]}"
  888. [[ `echo win64Binaries/*.nupkg` =~ win64Binaries/(.+) ]] && FILE_NAME="${BASH_REMATCH[1]}"
  889. aws s3 cp ${HXBUILDS_S3ADDR}/haxe/windows64-choco/${FILE_NAME} ${HXBUILDS_S3ADDR}/haxe/windows64-choco/haxe_latest.nupkg --acl public-read --website-redirect "${HXBUILDS_S3PATH}/haxe/windows64-choco/${FILE_NAME}"
  890. [[ `echo win32Binaries/*.nupkg` =~ win32Binaries/(.+) ]] && FILE_NAME="${BASH_REMATCH[1]}"
  891. aws s3 cp ${HXBUILDS_S3ADDR}/haxe/windows-choco/${FILE_NAME} ${HXBUILDS_S3ADDR}/haxe/windows-choco/haxe_latest.nupkg --acl public-read --website-redirect "${HXBUILDS_S3PATH}/haxe/windows-choco/${FILE_NAME}"
  892. deploy_apidoc:
  893. if: success() && github.repository_owner == 'HaxeFoundation' && github.event_name != 'pull_request'
  894. needs: [linux-test, linux-arm64, mac-test, windows-test, windows64-test]
  895. runs-on: ubuntu-20.04
  896. steps:
  897. - name: Install dependencies
  898. run: |
  899. set -ex
  900. sudo apt-get install -qqy libc6
  901. - name: Download Haxe
  902. uses: actions/download-artifact@v3
  903. with:
  904. name: linuxBinaries
  905. path: linuxBinaries
  906. - name: Setup Haxe
  907. run: |
  908. set -ex
  909. tar -xf linuxBinaries/*_bin.tar.gz -C linuxBinaries --strip-components=1
  910. sudo mkdir -p /usr/local/bin/
  911. sudo mkdir -p /usr/local/share/haxe/
  912. sudo ln -s `pwd`/linuxBinaries/haxe /usr/local/bin/haxe
  913. sudo ln -s `pwd`/linuxBinaries/haxelib /usr/local/bin/haxelib
  914. sudo ln -s `pwd`/linuxBinaries/std /usr/local/share/haxe/std
  915. - name: Download xmldoc artifact
  916. uses: actions/download-artifact@v3
  917. with:
  918. name: xmldoc
  919. path: xmldoc
  920. - name: Deploy to api.haxe.org
  921. env:
  922. GHP_EMAIL: [email protected]
  923. GHP_USERNAME: Haxe CI Bot
  924. GHP_REMOTE: ${{ secrets.GHP_REMOTE }}
  925. run: |
  926. set -ex
  927. LOCAL="`pwd`/extra/api.haxe.org"
  928. git clone "${GHP_REMOTE}" "${LOCAL}"
  929. haxe --cwd "${LOCAL}" --run ImportXml "`pwd`/xmldoc"