ci-linux.yml 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. name: CI-Linux
  2. on:
  3. push:
  4. branches: [ master ]
  5. pull_request:
  6. branches: [ master ]
  7. # Allows you to run this workflow manually from the Actions tab.
  8. workflow_dispatch:
  9. env:
  10. VNOTE_VER: 3.0.0-beta.1
  11. jobs:
  12. build-linux:
  13. name: Build On Ubuntu
  14. runs-on: ubuntu-latest
  15. timeout-minutes: 120
  16. steps:
  17. # Checks-out your repository under $GITHUB_WORKSPACE.
  18. - uses: actions/checkout@v2
  19. with:
  20. fetch-depth: 1
  21. - name: Init Submodules
  22. run: |
  23. auth_header="$(git config --local --get http.https://github.com/.extraheader)"
  24. git submodule sync --recursive
  25. git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
  26. - name: Install linuxdeploy
  27. uses: miurahr/install-linuxdeploy-action@v1
  28. with:
  29. plugins: qt appimage
  30. - name: Install dependencies
  31. run: |
  32. sudo DEBIAN_FRONTEND=noninteractive apt-get update
  33. sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libfcitx-qt5-dev tree
  34. - name: Install Qt
  35. uses: jurplel/install-qt-action@v2
  36. with:
  37. version: 5.12.10
  38. target: desktop
  39. modules: qtwebchannel qtwebengine qtsvg qtlocation qttools qttranslations
  40. tools: tools_openssl_x64,1.1.1-4,qt.tools.openssl.gcc_64
  41. - name: Create Build Dir
  42. run: mkdir build
  43. working-directory: ${{runner.workspace}}
  44. - name: Compile qt5ct
  45. run: |
  46. wget -c https://excellmedia.dl.sourceforge.net/project/qt5ct/qt5ct-1.1.tar.bz2
  47. tar xf qt5ct-1.*.tar.bz2
  48. cd qt5ct-1.*/
  49. QT_SELECT=5 qmake
  50. make -j$(nproc) && sudo make install
  51. working-directory: ${{runner.workspace}}/build
  52. - name: Configure Project
  53. run: |
  54. qmake -v
  55. cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so ./
  56. sudo chmod +rwx ./libfcitxplatforminputcontextplugin.so
  57. cp ./libfcitxplatforminputcontextplugin.so $Qt5_Dir/plugins/platforminputcontexts
  58. qmake CONFIG+=release -spec linux-g++-64 ${GITHUB_WORKSPACE}/vnote.pro
  59. working-directory: ${{runner.workspace}}/build
  60. - name: Build Project
  61. run: make -j$(nproc)
  62. working-directory: ${{runner.workspace}}/build
  63. - name: Install Project
  64. run: |
  65. mkdir AppDir
  66. make install INSTALL_ROOT=${{runner.workspace}}/build/AppDir
  67. tree AppDir
  68. working-directory: ${{runner.workspace}}/build
  69. - name: Package Project
  70. run: |
  71. # Move the lib out to avoid duplication
  72. mv AppDir/usr/lib ./
  73. LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH
  74. # copy translations
  75. mkdir -p AppDir/usr/translations
  76. cp $Qt5_Dir/translations/qt_zh_CN.qm AppDir/usr/translations
  77. # package qt5ct (EXTRA_QT_PLUGINS seems not work)
  78. # EXTRA_QT_PLUGINS="platformthemes/libqt5ct.so;styles/libqt5ct-style.so"
  79. mkdir -p AppDir/usr/plugins/platformthemes
  80. mkdir -p AppDir/usr/plugins/styles
  81. cp $Qt5_Dir/plugins/platformthemes/* AppDir/usr/plugins/platformthemes/
  82. cp $Qt5_Dir/plugins/styles/* AppDir/usr/plugins/styles/
  83. # package libssl.so and libcrypto.so
  84. Qt5_Tools=$Qt5_Dir/../../Tools
  85. linuxdeploy-x86_64.AppImage --appdir ./AppDir --plugin qt --output appimage -l $Qt5_Tools/OpenSSL/binary/lib/libcrypto.so.1.1 -l $Qt5_Tools/OpenSSL/binary/lib/libssl.so.1.1
  86. mv VNote*.AppImage vnote-linux-x64_v${{env.VNOTE_VER}}.AppImage
  87. cp vnote-linux-x64_v${{env.VNOTE_VER}}.AppImage vnote-linux-x64.AppImage
  88. tree AppDir
  89. working-directory: ${{runner.workspace}}/build
  90. - name: Archive Artifacts
  91. uses: actions/upload-artifact@v2
  92. with:
  93. name: vnote-linux-x64_v${{env.VNOTE_VER}}
  94. path: ${{runner.workspace}}/build/vnote-linux-x64_v${{env.VNOTE_VER}}.AppImage
  95. - name: Update Tag
  96. if: github.ref == 'refs/heads/master'
  97. run: |
  98. git tag --force continuous-build ${GITHUB_SHA}
  99. git push --force --tags
  100. - name: Update Continuous Build Release
  101. if: github.ref == 'refs/heads/master'
  102. uses: johnwbyrd/[email protected]
  103. with:
  104. token: ${{ secrets.GITHUB_TOKEN }}
  105. files: ${{runner.workspace}}/build/vnote-linux-x64.AppImage
  106. release: Continuous Build
  107. tag: continuous-build