snapcraft.yaml 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. name: wekan
  2. version-script: git describe --dirty --tags | cut -c 2-
  3. summary: The open-source kanban
  4. description: |
  5. Wekan is an open-source and collaborative kanban board application.
  6. Whether you’re maintaining a personal todo list, planning your holidays with some friends, or working in a team on your next revolutionary idea, Kanban boards are an unbeatable tool to keep your things organized. They give you a visual overview of the current state of your project, and make you productive by allowing you to focus on the few items that matter the most.
  7. Depending on target environment, some configuration settings might need to be adjusted.
  8. For full list of configuration options call:
  9. $ wekan.help
  10. confinement: strict
  11. grade: stable
  12. architectures:
  13. - amd64
  14. plugs:
  15. mongodb-plug:
  16. interface: content
  17. target: $SNAP_DATA/shared
  18. hooks:
  19. configure:
  20. plugs:
  21. - network
  22. - network-bind
  23. slots:
  24. mongodb-slot:
  25. interface: content
  26. write:
  27. - $SNAP_DATA/share
  28. apps:
  29. wekan:
  30. command: wekan-control
  31. daemon: simple
  32. plugs: [network, network-bind]
  33. mongodb:
  34. command: mongodb-control
  35. daemon: simple
  36. plugs: [network, network-bind]
  37. caddy:
  38. command: caddy-control
  39. daemon: simple
  40. plugs: [network, network-bind]
  41. help:
  42. command: wekan-help
  43. database-backup:
  44. command: mongodb-backup
  45. plugs: [network, network-bind]
  46. database-list-backups:
  47. command: ls -al $SNAP_COMMON/db-backups/
  48. database-restore:
  49. command: mongodb-restore
  50. plugs: [network, network-bind]
  51. parts:
  52. mongodb:
  53. source: https://repo.mongodb.org/apt/ubuntu/dists/xenial/mongodb-org/4.0/multiverse/binary-amd64/mongodb-org-server_4.0.10_amd64.deb
  54. plugin: dump
  55. stage-packages: [libssl1.1]
  56. filesets:
  57. mongo:
  58. - usr
  59. - bin
  60. - lib
  61. stage:
  62. - $mongo
  63. prime:
  64. - $mongo
  65. wekan:
  66. source: .
  67. plugin: nodejs
  68. node-engine: 8.16.0
  69. node-packages:
  70. - node-gyp
  71. - node-pre-gyp
  72. - fibers@4.0.1
  73. build-packages:
  74. - ca-certificates
  75. - apt-utils
  76. - python3
  77. - gcc-8
  78. - capnproto
  79. - curl
  80. - execstack
  81. - nodejs
  82. - npm
  83. - python3-pip
  84. stage-packages:
  85. - libfontconfig1
  86. override-build: |
  87. echo "Cleaning environment first"
  88. rm -rf ~/.meteor ~/.npm /usr/local/lib/node_modules
  89. # Create the OpenAPI specification
  90. rm -rf .build
  91. mkdir -p .build/python
  92. cd .build/python
  93. pip3 install -U setuptools wheel
  94. git clone --depth 1 -b master https://github.com/Kronuz/esprima-python
  95. cd esprima-python
  96. python3 setup.py install
  97. cd ../../..
  98. mkdir -p ./public/api
  99. python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml
  100. # we temporary need api2html and mkdirp
  101. npm install -g --unsafe-perm api2html@0.3.0
  102. npm install -g --unsafe-perm mkdirp
  103. api2html -c ./public/logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml
  104. npm uninstall -g --unsafe-perm mkdirp
  105. npm uninstall -g --unsafe-perm api2html
  106. # Node Fibers 100% CPU usage issue:
  107. # https://github.com/wekan/wekan-mongodb/issues/2#issuecomment-381453161
  108. # https://github.com/meteor/meteor/issues/9796#issuecomment-381676326
  109. # https://github.com/sandstorm-io/sandstorm/blob/0f1fec013fe7208ed0fd97eb88b31b77e3c61f42/shell/server/00-startup.js#L99-L129
  110. # Also see beginning of wekan/server/authentication.js
  111. # import Fiber from "fibers";
  112. # Fiber.poolSize = 1e9;
  113. # OLD: Download node version 8.12.0 prerelease build => Official node 8.12.0 has been released
  114. # Description at https://releases.wekan.team/node.txt
  115. ##echo "375bd8db50b9c692c0bbba6e96d4114cd29bee3770f901c1ff2249d1038f1348 node" >> node-SHASUMS256.txt.asc
  116. ##curl https://releases.wekan.team/node -o node
  117. # Verify Fibers patched node authenticity
  118. ##echo "Fibers 100% CPU issue patched node authenticity:"
  119. ##grep node node-SHASUMS256.txt.asc | shasum -a 256 -c -
  120. ##rm -f node-SHASUMS256.txt.asc
  121. ##chmod +x node
  122. ##mv node `which node`
  123. # DOES NOT WORK: paxctl fix.
  124. # Removed from build-packages: - paxctl
  125. #echo "Applying paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303"
  126. #paxctl -mC `which node`
  127. #echo "Installing npm"
  128. #curl -L https://www.npmjs.com/install.sh | sh
  129. echo "Installing meteor"
  130. curl https://install.meteor.com/ -o install_meteor.sh
  131. #sed -i "s|RELEASE=.*|RELEASE=\"1.8.1-beta.0\"|g" install_meteor.sh
  132. chmod +x install_meteor.sh
  133. sh install_meteor.sh
  134. rm install_meteor.sh
  135. # REPOS BELOW ARE INCLUDED TO WEKAN REPO
  136. #if [ ! -d "packages" ]; then
  137. # mkdir packages
  138. #fi
  139. #if [ ! -d "packages/kadira-flow-router" ]; then
  140. # cd packages
  141. # git clone --depth 1 -b master https://github.com/wekan/flow-router.git kadira-flow-router
  142. # cd ..
  143. #fi
  144. #if [ ! -d "packages/meteor-useraccounts-core" ]; then
  145. # cd packages
  146. # git clone --depth 1 -b master https://github.com/meteor-useraccounts/core.git meteor-useraccounts-core
  147. # sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' meteor-useraccounts-core/package.js
  148. # cd ..
  149. #fi
  150. #if [ ! -d "packages/meteor-accounts-cas" ]; then
  151. # cd packages
  152. # git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-cas.git meteor-accounts-cas
  153. # cd ..
  154. #fi
  155. #if [ ! -d "packages/wekan-ldap" ]; then
  156. # cd packages
  157. # git clone --depth 1 -b master https://github.com/wekan/wekan-ldap.git
  158. # cd ..
  159. #fi
  160. #if [ ! -d "packages/wekan-scrollbar" ]; then
  161. # cd packages
  162. # git clone --depth 1 -b master https://github.com/wekan/wekan-scrollbar.git
  163. # cd ..
  164. #fi
  165. #if [ ! -d "packages/wekan_accounts-oidc" ]; then
  166. # cd packages
  167. # git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-oidc.git
  168. # mv meteor-accounts-oidc/packages/switch_accounts-oidc wekan-accounts-oidc
  169. # mv meteor-accounts-oidc/packages/switch_oidc wekan-oidc
  170. # rm -rf meteor-accounts-oidc
  171. # cd ..
  172. #fi
  173. #if [ ! -d "packages/markdown" ]; then
  174. # cd packages
  175. # git clone --depth 1 -b master --recurse-submodules https://github.com/wekan/markdown.git
  176. # cd ..
  177. #fi
  178. rm -rf package-lock.json .build
  179. meteor add standard-minifier-js --allow-superuser
  180. meteor npm install --allow-superuser --unsafe-perm
  181. meteor build .build --directory --allow-superuser
  182. cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js
  183. #Removed binary version of bcrypt because of security vulnerability that is not fixed yet.
  184. #https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac
  185. #https://github.com/wekan/wekan/commit/7eeabf14be3c63fae2226e561ef8a0c1390c8d3c
  186. #cd .build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt
  187. #rm -rf node_modules/bcrypt
  188. #meteor npm install --save bcrypt
  189. # Change from npm-bcrypt directory back to .build/bundle/programs/server directory.
  190. #cd ../../../../
  191. # Change to directory .build/bundle/programs/server
  192. cd .build/bundle/programs/server
  193. npm install --unsafe-perm
  194. #meteor npm install --save bcrypt
  195. # Change back to Wekan source directory
  196. cd ../../../..
  197. cp -r .build/bundle/* $SNAPCRAFT_PART_INSTALL/
  198. cp .build/bundle/.node_version.txt $SNAPCRAFT_PART_INSTALL/
  199. rm $SNAPCRAFT_PART_INSTALL/lib/node_modules/wekan
  200. #rm $SNAPCRAFT_PART_INSTALL/programs/server/npm/node_modules/meteor/rajit_bootstrap3-datepicker/lib/bootstrap-datepicker/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs
  201. rm $SNAPCRAFT_PART_INSTALL/lib/node_modules/node-pre-gyp/node_modules/tar/lib/.mkdir.js.swp
  202. rm $SNAPCRAFT_PART_INSTALL/lib/node_modules/node-gyp/node_modules/tar/lib/.mkdir.js.swp
  203. organize:
  204. README: README.wekan
  205. prime:
  206. - -lib/node_modules/node-pre-gyp/node_modules/tar/lib/.unpack.js.swp
  207. helpers:
  208. source: snap-src
  209. plugin: dump
  210. caddy:
  211. plugin: dump
  212. source: https://caddyserver.com/download/linux/amd64?license=personal&telemetry=off
  213. source-type: tar
  214. organize:
  215. caddy: bin/caddy
  216. CHANGES.txt: CADDY_CHANGES.txt
  217. EULA.txt: CADDY_EULA.txt
  218. LICENSES.txt: CADDY_LICENSES.txt
  219. README.txt: CADDY_README.txt
  220. stage:
  221. - -init