ci.yml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. name: CI
  2. on: [push, pull_request]
  3. jobs:
  4. build-ubuntu:
  5. runs-on: ubuntu-20.04
  6. steps:
  7. - uses: actions/checkout@v2
  8. - name: Set environment variables
  9. id: vars
  10. run: |
  11. echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
  12. - name: Dependency packages (apt)
  13. run: |
  14. sudo apt update
  15. sudo apt -y install git gcc-arm-none-eabi python3-pip srecord stm32flash zip
  16. - name: Dependency packages (pip)
  17. run: python3 -m pip install --user bitarray crcmod pyserial
  18. - name: Build dist
  19. run: |
  20. export VER=${{ steps.vars.outputs.sha_short }}
  21. make dist
  22. mkdir -p _cidist
  23. rm Greaseweazle-v*.zip
  24. mv Greaseweazle-v* Greaseweazle-$VER
  25. rm Greaseweazle-$VER/RELEASE_NOTES
  26. git rev-parse HEAD >Greaseweazle-$VER/COMMIT
  27. echo "commit = '$(git rev-parse HEAD)'" >>Greaseweazle-$VER/scripts/greaseweazle/version.py
  28. zip -r Greaseweazle-$VER.zip Greaseweazle-$VER
  29. mv Greaseweazle-$VER.zip _cidist/
  30. - name: Build debug dist
  31. run: |
  32. export VER=${{ steps.vars.outputs.sha_short }}-debug
  33. env debug=y make dist
  34. rm Greaseweazle-v*.zip
  35. mv Greaseweazle-v* Greaseweazle-$VER
  36. rm Greaseweazle-$VER/RELEASE_NOTES
  37. git rev-parse HEAD >Greaseweazle-$VER/COMMIT
  38. echo debug >>Greaseweazle-$VER/COMMIT
  39. echo "commit = '$(git rev-parse HEAD)'" >>Greaseweazle-$VER/scripts/greaseweazle/version.py
  40. zip -r Greaseweazle-$VER.zip Greaseweazle-$VER
  41. mv Greaseweazle-$VER.zip _cidist/
  42. - name: Upload artifacts
  43. uses: actions/upload-artifact@v2
  44. with:
  45. name: Greaseweazle.CI.${{ steps.vars.outputs.sha_short }}
  46. path: _cidist
  47. build-windows:
  48. needs: build-ubuntu
  49. runs-on: windows-2019
  50. steps:
  51. - uses: actions/checkout@v2
  52. - name: Set environment variables
  53. id: vars
  54. run: |
  55. echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
  56. - name: Download Ubuntu build
  57. uses: actions/download-artifact@v2
  58. with:
  59. name: Greaseweazle.CI.${{ steps.vars.outputs.sha_short }}
  60. - name: Set up Python
  61. uses: actions/setup-python@v2
  62. with:
  63. python-version: 3.8
  64. architecture: x86
  65. - name: Dependency packages (pip)
  66. run: |
  67. python -m pip install --upgrade pip setuptools wheel
  68. python -m pip install --user bitarray crcmod pyserial cx_Freeze
  69. - name: Build dist
  70. run: |
  71. make windist VER=${{ steps.vars.outputs.sha_short }}
  72. - name: Upload artifacts
  73. uses: actions/upload-artifact@v2
  74. with:
  75. name: Greaseweazle.CI.${{ steps.vars.outputs.sha_short }}
  76. path: Greaseweazle-${{ steps.vars.outputs.sha_short }}-win.zip
  77. finalise:
  78. needs: build-windows
  79. runs-on: ubuntu-20.04
  80. steps:
  81. - uses: actions/checkout@v2
  82. - name: Set environment variables
  83. id: vars
  84. run: |
  85. echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
  86. - name: Download artifacts
  87. uses: actions/download-artifact@v2
  88. with:
  89. name: Greaseweazle.CI.${{ steps.vars.outputs.sha_short }}
  90. - name: Remove 64-bit DLLS
  91. run: |
  92. export VER=${{ steps.vars.outputs.sha_short }}
  93. unzip Greaseweazle-$VER-win.zip
  94. find . -name 'api-ms-win-crt-*' | xargs rm
  95. find Greaseweazle-$VER/lib -name 'python*.dll' | xargs rm
  96. find Greaseweazle-$VER/lib -name 'vcruntime140.dll' | xargs rm
  97. rm Greaseweazle-$VER-win.zip
  98. zip -r Greaseweazle-$VER-win.zip Greaseweazle-$VER
  99. - name: Upload finalised artifacts
  100. uses: actions/upload-artifact@v2
  101. with:
  102. name: Greaseweazle.CI.${{ steps.vars.outputs.sha_short }}
  103. path: Greaseweazle-${{ steps.vars.outputs.sha_short }}-win.zip