ci-linux.yml 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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.2.0
  11. jobs:
  12. build-linux:
  13. name: Build On Ubuntu
  14. runs-on: ubuntu-18.04
  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. tree AppDir
  87. working-directory: ${{runner.workspace}}/build
  88. - name: Fix Package
  89. run: |
  90. mkdir fixpackage
  91. mv VNote*.AppImage ./fixpackage
  92. pushd fixpackage
  93. # Extract the AppImage
  94. ./VNote*.AppImage --appimage-extract
  95. # Remove libnss3.so and libnssutil3.so
  96. rm ./squashfs-root/usr/lib/libnss*.so
  97. # Re-package
  98. rm VNote*.AppImage
  99. linuxdeploy-plugin-appimage-x86_64.AppImage --appdir=./squashfs-root
  100. mv VNote*.AppImage ../
  101. popd
  102. mv VNote*.AppImage vnote-linux-x64_v${{env.VNOTE_VER}}.AppImage
  103. cp vnote-linux-x64_v${{env.VNOTE_VER}}.AppImage vnote-linux-x64.AppImage
  104. working-directory: ${{runner.workspace}}/build
  105. - name: Archive Artifacts
  106. uses: actions/upload-artifact@v2
  107. with:
  108. name: vnote-linux-x64_v${{env.VNOTE_VER}}
  109. path: ${{runner.workspace}}/build/vnote-linux-x64_v${{env.VNOTE_VER}}.AppImage
  110. - name: Update Tag
  111. if: github.ref == 'refs/heads/master'
  112. run: |
  113. git tag --force continuous-build ${GITHUB_SHA}
  114. git push --force --tags
  115. - name: Update Continuous Build Release
  116. if: github.ref == 'refs/heads/master'
  117. uses: johnwbyrd/[email protected]
  118. with:
  119. token: ${{ secrets.GITHUB_TOKEN }}
  120. files: ${{runner.workspace}}/build/vnote-linux-x64.AppImage
  121. release: Continuous Build
  122. tag: continuous-build