main.yml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. name: build
  2. on: [push, pull_request]
  3. jobs:
  4. build_win:
  5. runs-on: windows-latest
  6. steps:
  7. - uses: actions/checkout@v3
  8. - uses: ilammy/msvc-dev-cmd@v1
  9. - name: Compile
  10. shell: bash
  11. run: |
  12. python3 build.py windows
  13. python3 build.py windows -lib
  14. mkdir -p output/windows/x86_64
  15. cp pocketpy.exe output/windows/x86_64
  16. cp pocketpy.dll output/windows/x86_64
  17. - uses: actions/upload-artifact@v3
  18. with:
  19. path: output
  20. - name: Unit Test
  21. run: python3 scripts/run_tests.py
  22. - name: Benchmark
  23. run: python3 scripts/run_tests.py benchmark
  24. build_linux:
  25. runs-on: ubuntu-latest
  26. steps:
  27. - uses: actions/checkout@v3
  28. - name: Setup Clang
  29. uses: egor-tensin/setup-clang@v1
  30. with:
  31. version: 15
  32. platform: x64
  33. - name: Install libc++
  34. run: sudo apt-get install -y libc++-15-dev libc++1-15 libc++abi-15-dev libc++abi1-15 libclang-rt-15-dev
  35. - name: Unit Test with Coverage
  36. run: bash run_tests.sh
  37. - name: Upload coverage reports to Codecov
  38. uses: codecov/codecov-action@v3
  39. with:
  40. token: ${{ secrets.CODECOV_TOKEN }}
  41. directory: .coverage
  42. - name: Compile
  43. run: |
  44. python3 build.py linux
  45. python3 build.py linux -lib
  46. mkdir -p output/linux/x86_64
  47. cp pocketpy output/linux/x86_64
  48. cp pocketpy.so output/linux/x86_64
  49. - uses: actions/upload-artifact@v3
  50. with:
  51. path: output
  52. - name: Benchmark
  53. run: python3 scripts/run_tests.py benchmark
  54. - name: GCC Build Test
  55. run: g++ -o pocketpy --std=c++17 src/main.cpp
  56. - name: C Binding Test
  57. run: bash run_c_binding_test.sh
  58. build_macos:
  59. runs-on: macos-latest
  60. steps:
  61. - uses: actions/checkout@v3
  62. - run: |
  63. python3 amalgamate.py
  64. cd plugins/macos/pocketpy
  65. mkdir -p output/macos
  66. xcodebuild clean build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO
  67. cp -r build/Release/pocketpy.bundle output/macos
  68. - uses: actions/upload-artifact@v3
  69. with:
  70. path: plugins/macos/pocketpy/output
  71. build_android:
  72. runs-on: ubuntu-latest
  73. steps:
  74. - uses: actions/checkout@v3
  75. - uses: subosito/flutter-action@v2
  76. with:
  77. flutter-version: '3.3.0'
  78. channel: 'stable'
  79. cache: true
  80. - run: flutter --version
  81. - name: Compile
  82. run: |
  83. python3 amalgamate.py
  84. cd plugins/flutter/example
  85. flutter build apk --split-debug-info=.debug-info --split-per-abi
  86. cd build/app/outputs/flutter-apk
  87. mkdir -p output/android/arm64-v8a
  88. mkdir -p output/android/armeabi-v7a
  89. mkdir -p output/android/x86_64
  90. unzip -q app-arm64-v8a-release.apk -d tmp
  91. mv tmp/lib/arm64-v8a/libpocketpy.so output/android/arm64-v8a/libpocketpy.so
  92. rm -rf tmp
  93. unzip -q app-armeabi-v7a-release.apk -d tmp
  94. mv tmp/lib/armeabi-v7a/libpocketpy.so output/android/armeabi-v7a/libpocketpy.so
  95. rm -rf tmp
  96. unzip -q app-x86_64-release.apk -d tmp
  97. mv tmp/lib/x86_64/libpocketpy.so output/android/x86_64/libpocketpy.so
  98. rm -rf tmp
  99. - uses: actions/upload-artifact@v3
  100. with:
  101. path: plugins/flutter/example/build/app/outputs/flutter-apk/output
  102. build_web:
  103. runs-on: ubuntu-latest
  104. steps:
  105. - uses: actions/checkout@v3
  106. - name: Setup emsdk
  107. uses: mymindstorm/setup-emsdk@v12
  108. with:
  109. version: 3.1.25
  110. actions-cache-folder: 'emsdk-cache'
  111. - name: Verify emsdk
  112. run: emcc -v
  113. - name: Compile
  114. run: |
  115. mkdir -p output/web/lib
  116. python3 build.py web
  117. cp web/lib/* output/web/lib
  118. - uses: actions/upload-artifact@v3
  119. with:
  120. path: output