mirror of https://github.com/wekan/wekan
Signed-off-by: Ondrej Kubik <ondrej.kubik@canonical.com>reviewable/pr1091/r1
parent
60495e4765
commit
a538c14976
@ -0,0 +1,44 @@ |
||||
#!/bin/sh |
||||
|
||||
# store here all configuration options for wekan snap |
||||
# read configured settings first |
||||
SETTINGS_FILE="$SNAP_COMMON/wekan_settings.sh" |
||||
[ -f $SETTINGS_FILE ] && . $SETTINGS_FILE |
||||
|
||||
# list of supported keys |
||||
keys="MONGODB_BIND_UNIX_SOCKET MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB" |
||||
|
||||
# default values |
||||
DESCRIPTION_MONGODB_BIND_UNIX_SOCKET="mongodb binding unix socket:\n"\ |
||||
"\t\t\t Default behaviour will preffer binding over unix socket, to disable unix socket binding set value to 'nill' string\n"\ |
||||
"\t\t\t To bind to instance of mongo provided through contect interface set to relative path to the socket inside shared directory" |
||||
DEFAULT_MONGODB_BIND_UNIX_SOCKET="$SNAP_DATA/share" |
||||
KEY_MONGODB_BIND_UNIX_SOCKET="mongodb-bind-unix-socket" |
||||
|
||||
DESCRIPTION_MONGODB_PORT="mongodb binding port: eg 27017 when using localhost" |
||||
DEFAULT_MONGODB_PORT="27019" |
||||
KEY_MONGODB_PORT='mongodb-port' |
||||
|
||||
DESCRIPTION_MONGODB_BIND_IP="mongodb binding ip address: eg 127.0.0.1 for localhost\n\t\tIf not defined default unix socket is used instead" |
||||
DEFAULT_MONGODB_BIND_IP="" |
||||
KEY_MONGODB_BIND_IP="mongodb-bind-ip" |
||||
|
||||
DESCRIPTION_MAIL_URL="wekan mail binding" |
||||
DEFAULT_MAIL_URL="smtp://user:pass@mailserver.examples.com:25/" |
||||
KEY_MAIL_URL="mail-url" |
||||
|
||||
DESCRIPTION_MAIL_FROM="wekan's admin mail from name email address" |
||||
DEFAULT_MAIL_FROM="wekan-admin@example.com" |
||||
KEY_MAIL_FROM="mail-from" |
||||
|
||||
DESCRIPTION_ROOT_URL="wekan's root url, eg http://127.0.0.1, https://example.com, https://wekan.example.com, http://example.com/wekan" |
||||
DEFAULT_ROOT_URL="http://127.0.0.1" |
||||
KEY_ROOT_URL="root-url" |
||||
|
||||
DESCRIPTION_PORT="port wekan is exposed at" |
||||
DEFAULT_PORT="8080" |
||||
KEY_PORT="port" |
||||
|
||||
DESCRIPTION_DISABLE_MONGODB="Disable mongodb service: use only if binding to database outside of the snap. Valid values: [true,false]" |
||||
DEFAULT_DISABLE_MONGODB="false" |
||||
KEY_DISABLE_MONGODB="disable-mongodb" |
||||
@ -0,0 +1,23 @@ |
||||
#!/bin/bash |
||||
|
||||
# get wekan/mongo settings |
||||
source $SNAP/bin/wekan-read-settings |
||||
|
||||
# make sure we have set minimum env variables for locale |
||||
if [ -z "$LANG" ]; then |
||||
export LANG=en_US.UTF-8 |
||||
fi |
||||
|
||||
export LC_ALL=C |
||||
|
||||
if [ -z $1 ]; then |
||||
DATE=`/bin/date +%Y%m%dT%H%M%S` |
||||
mkdir -p $SNAP_COMMON/db-backups/ |
||||
ARCHIVE=$SNAP_COMMON/db-backups/wekan-$DATE.backup |
||||
else |
||||
ARCHIVE=$1 |
||||
fi |
||||
# start mongodb backup |
||||
[ "x" == "x${MONGODB_BIND_IP}" ] && MONGODB_BIND_IP="127.0.0.1" |
||||
echo "using bind ip" |
||||
mongodump --host $MONGODB_BIND_IP --port $MONGODB_PORT -d wekan --gzip --archive=${ARCHIVE} |
||||
@ -0,0 +1,31 @@ |
||||
#!/bin/bash |
||||
|
||||
# get wekan/mongo settings |
||||
source $SNAP/bin/wekan-read-settings |
||||
|
||||
if [ "true" == "${DISABLE_MONGODB}" ]; then |
||||
echo "mongodb is disabled. Not starting it" |
||||
exit 0 |
||||
fi |
||||
|
||||
# make sure we have set minimum env variables for locale |
||||
if [ -z "$LANG" ]; then |
||||
export LANG=en_US.UTF-8 |
||||
fi |
||||
|
||||
export LC_ALL=C |
||||
|
||||
# start mongo deamon |
||||
BIND_OPTIONS="" |
||||
if [ "nill" != "$MONGODB_BIND_UNIX_SOCKET" ] && [ "x" != "x${MONGODB_BIND_UNIX_SOCKET}" ]; then |
||||
BIND_OPTIONS+=" --unixSocketPrefix $MONGODB_BIND_UNIX_SOCKET" |
||||
fi |
||||
if [ "x" != "x${MONGODB_BIND_IP}" ]; then |
||||
BIND_OPTIONS+=" --bind_ip $MONGODB_BIND_IP" |
||||
fi |
||||
if [ "x" != "x${MONGODB_PORT}" ]; then |
||||
BIND_OPTIONS+=" --port $MONGODB_PORT" |
||||
fi |
||||
echo "mongodb bind options: $BIND_OPTIONS" |
||||
|
||||
mongod --dbpath $SNAP_COMMON --logpath $SNAP_COMMON/mongodb.log --logappend --journal $BIND_OPTIONS |
||||
@ -0,0 +1,16 @@ |
||||
#!/bin/bash |
||||
|
||||
# get wekan/mongo settings |
||||
source $SNAP/bin/wekan-read-settings |
||||
|
||||
# make sure we have set minimum env variables for locale |
||||
if [ -z "$LANG" ]; then |
||||
export LANG=en_US.UTF-8 |
||||
fi |
||||
|
||||
export LC_ALL=C |
||||
|
||||
# start mongodb backup |
||||
[ "x" == "x${MONGODB_BIND_IP}" ] && MONGODB_BIND_IP="127.0.0.1" |
||||
echo "using bind ip" |
||||
mongorestore --host $MONGODB_BIND_IP --port $MONGODB_PORT -d wekan --gzip --archive=$1 |
||||
@ -0,0 +1,26 @@ |
||||
#!/bin/bash |
||||
|
||||
SYSTEMD_WEKAN_SERVICE="snap.${SNAP_NAME}.wekan" |
||||
SYSTEMD_MONGODB_SERVICE="snap.${SNAP_NAME}.mongodb" |
||||
|
||||
# get wekan/mongo settings |
||||
source $SNAP/bin/wekan-read-settings |
||||
|
||||
export NODE_PATH=$SNAP/bin |
||||
# if possible we prefer to bind over unix socket |
||||
if [ "nill" != "$MONGODB_BIND_UNIX_SOCKET" ] && [ "x" != "x$MONGODB_BIND_UNIX_SOCKET" ]; then |
||||
if [ -d $MONGODB_BIND_UNIX_SOCKET ]; then |
||||
export MONGO_URL="mongodb://$MONGODB_BIND_UNIX_SOCKET/mongodb-${MONGODB_PORT}.sock/wekan" |
||||
else |
||||
export MONGO_URL="mongodb://$SNAP_DATA/shared/$MONGODB_BIND_UNIX_SOCKET/wekan" |
||||
fi |
||||
else |
||||
[ "x" == "x$MONGODB_BIND_IP" ] && MONGODB_BIND_IP="127.0.0.1" |
||||
export MONGO_URL="mongodb://$MONGODB_BIND_IP:$MONGODB_PORT/wekan" |
||||
fi |
||||
|
||||
echo -e "MONGO_URL=$MONGO_URL" |
||||
APPLICATION_DIRECTORY=$SNAP |
||||
APPLICATION_START=main.js |
||||
cd $APPLICATION_DIRECTORY |
||||
$NODE_PATH/node $APPLICATION_START |
||||
@ -0,0 +1,48 @@ |
||||
#!/bin/bash |
||||
|
||||
source $SNAP/bin/config &>/dev/null |
||||
|
||||
echo -e "Wekan: The open-source Trello-like kanban.\n" |
||||
echo -e "Make sure you have connected all interfaces, check more by calling $ snap interfaces" |
||||
echo -e "\n" |
||||
echo -e "${SNAP_NAME} has two services, to check status/restart/stop use systemd commands" |
||||
echo -e "mongodb service:" |
||||
echo -e "\t$ sudo systemctl status/start/stop/restart snap.$SNAP_NAME.mongodb" |
||||
echo -e "wekan service" |
||||
echo -e "\t$ sudo systemctl status/start/stop/restart snap.$SNAP_NAME.wekan" |
||||
echo -e "\n" |
||||
echo -e "To make backup of wekan's database use: $ ${SNAP_NAME}.database-backup [backup file]" |
||||
echo -e "\t backup file is optional parameter, if not passed backup is created in directory:" |
||||
echo -e "\t\t${SNAP_COMMON}/db-backups" |
||||
echo -e "To list existing backups in default directory: $ ${SNAP_NAME}.database-list-backups" |
||||
echo -e "To restore wekan's database use: ${SNAP_NAME}.database-restore <path to backup>" |
||||
echo -e "\n" |
||||
echo -e "wekan can be configured to share mongodb with other services using content interface" |
||||
echo -e "\t-sharing mongodb from $SNAP_NAME to other snap(s):" |
||||
echo -e "\t\t-connect mongodb-slot with plug from corresponding snap(s)" |
||||
echo -e "\t\t-configure corresponding service to use mongodb unix socket in shared directory, socket file name is: mongodb-$MONGODB_PORT.sock" |
||||
echo -e "\t-sharing mongodb from other snap to $SNAP_NAME:" |
||||
echo -e "\t\t-connect mongodb-plug with slot from snap providing mongodb" |
||||
echo -e "\t\t-disable mongodb in $SNAP_NAME by calling: $ snap set $SNAP_NAME set disable-mongodb='true'" |
||||
echo -e "\t\t-set mongodb-bind-unix-socket to point to serving mongodb. Use relative path inside shared directory, e.g run/mongodb-27017.sock" |
||||
echo -e "\n" |
||||
# parse config file for supported settings keys |
||||
echo -e "wekan supports settings keys" |
||||
echo -e "values can be changed by calling\n$ snap set $SNAP_NAME <key name>='<key value>'" |
||||
echo -e "list of supported keys:" |
||||
for key in ${keys[@]} |
||||
do |
||||
default_value="DEFAULT_$key" |
||||
description="DESCRIPTION_$key" |
||||
snappy_key="KEY_$key" |
||||
echo -e "\t${!snappy_key}: ${!description}" |
||||
if [ "x" == "x${!key}" ]; then |
||||
echo -e "\t\tNo value set, using default value: '${!default_value}'" |
||||
else |
||||
echo -e "\t\tCurrent value set to: '${!key}', (default value: '${!default_value}')" |
||||
fi |
||||
done |
||||
echo -e "\nFor changes to take effect restart wekan service," |
||||
echo -e "if mongodb key was change also restart mongodb service, before restarting wekan" |
||||
echo -e "to restart mongodb: $ sudo systemctl restart snap.$SNAP_NAME.mongodb" |
||||
echo -e "to restart wekan: $ sudo systemctl restart snap.$SNAP_NAME.wekan" |
||||
|
After Width: | Height: | Size: 12 KiB |
@ -0,0 +1,32 @@ |
||||
#!/bin/bash |
||||
|
||||
# read wekan config |
||||
. $SNAP/bin/config |
||||
|
||||
# create run dir, we're going to use it for unix socket |
||||
mkdir -p $SNAP_DATA/share |
||||
mkdir -p $SNAP_DATA/shared |
||||
|
||||
# settings were altered by user, safest way to get them applied is to restart service |
||||
|
||||
# TODO: remove this workaround once it's not needed |
||||
# for the moment we can't read settings outside of the hook, |
||||
# so store all settings in helpper script which is then picked by main wrapper |
||||
echo -e "#!/bin/sh\n" > $SETTINGS_FILE |
||||
for key in ${keys[@]} |
||||
do |
||||
# snappy is picky about key syntax, using mapping |
||||
MAP_KEY="KEY_$key" |
||||
if value=$(snapctl get ${!MAP_KEY}); then |
||||
echo "export $key='$value'" >> $SETTINGS_FILE |
||||
elif [ -d "${!key}" ]; then |
||||
# store back value from SETTINGS_FILE |
||||
echo "export $key='${!key}'" >> $SETTINGS_FILE |
||||
fi |
||||
done |
||||
|
||||
# set file executable |
||||
chmod 755 $SETTINGS_FILE |
||||
# we can't use snapctl to restart service, may be one day .... |
||||
|
||||
echo "Setting has been updated, restart service." |
||||
@ -0,0 +1,125 @@ |
||||
name: wekan |
||||
version: "0.26-SNAPSHOT" |
||||
summary: The open-source Trello-like kanban |
||||
description: | |
||||
Wekan is an open-source and collaborative kanban board application. |
||||
|
||||
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. |
||||
Depending on target environment, some configuration settings might need to be adjusted. |
||||
For full list of configuration options call: |
||||
$ wekan.help |
||||
|
||||
confinement: strict |
||||
grade: stable |
||||
|
||||
architectures: |
||||
- amd64 |
||||
|
||||
plugs: |
||||
mongodb-plug: |
||||
interface: content |
||||
target: $SNAP_DATA/shared |
||||
|
||||
slots: |
||||
mongodb-slot: |
||||
interface: content |
||||
write: |
||||
- $SNAP_DATA/share |
||||
|
||||
apps: |
||||
wekan: |
||||
command: wekan-control |
||||
daemon: simple |
||||
plugs: [network, network-bind] |
||||
|
||||
mongodb: |
||||
command: mongodb-control |
||||
daemon: simple |
||||
plugs: [network, network-bind] |
||||
|
||||
help: |
||||
command: wekan-help |
||||
|
||||
database-backup: |
||||
command: mongodb-backup |
||||
plugs: [network, network-bind] |
||||
|
||||
database-list-backups: |
||||
command: ls -ald $SNAP_COMMON/db-backups/* |
||||
|
||||
database-restore: |
||||
command: mongodb-restore |
||||
plugs: [network, network-bind] |
||||
|
||||
parts: |
||||
mongodb: |
||||
source: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-3.2.14.tgz |
||||
plugin: dump |
||||
stage-packages: [libssl1.0.0] |
||||
filesets: |
||||
mongo: |
||||
- usr |
||||
- bin |
||||
- lib |
||||
stage: |
||||
- $mongo |
||||
prime: |
||||
- $mongo |
||||
|
||||
wekan: |
||||
source: . |
||||
plugin: nodejs |
||||
node-engine: 4.8.1 |
||||
node-packages: |
||||
- npm@4.6.1 |
||||
- node-gyp |
||||
- node-pre-gyp |
||||
- fibers@1.0.15 |
||||
build-packages: |
||||
- python |
||||
- g++ |
||||
- capnproto |
||||
- nodejs |
||||
- nodejs-legacy |
||||
- curl |
||||
prepare: | |
||||
echo "Cleaning environment first" |
||||
rm -rf ~/.meteor ~/.npm /usr/local/lib/node_modules |
||||
echo "installing meteor first" |
||||
curl https://install.meteor.com/ -o install_meteor.sh |
||||
sed -i "s|RELEASE=.*|RELEASE=\"1.4.4.1\"|g" install_meteor.sh |
||||
chmod +x install_meteor.sh |
||||
sh install_meteor.sh |
||||
rm install_meteor.sh |
||||
mkdir -p packages |
||||
git clone https://github.com/wekan/flow-router.git packages/kadira-flow-router |
||||
git clone https://github.com/meteor-useraccounts/core.git packages/meteor-useraccounts-core |
||||
build: | |
||||
rm -rf package-lock.json .build |
||||
meteor add standard-minifier-js --allow-superuser |
||||
meteor npm install --allow-superuser |
||||
meteor build .build --directory --allow-superuser |
||||
cp fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js |
||||
sed -i "s|build\/Release\/bson|browser_build\/bson|g" .build/bundle/programs/server/npm/node_modules/meteor/cfs_gridfs/node_modules/mongodb/node_modules/bson/ext/index.js |
||||
cd .build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt |
||||
rm -rf node_modules/bcrypt |
||||
npm install bcrypt |
||||
cd ../../../../ |
||||
npm install |
||||
install: | |
||||
cp -r .build/bundle/* $SNAPCRAFT_PART_INSTALL/ |
||||
cp .build/bundle/.node_version.txt $SNAPCRAFT_PART_INSTALL/ |
||||
organize: |
||||
README: README.wekan |
||||
|
||||
helpers: |
||||
source: snap-src |
||||
plugin: dump |
||||
organize: |
||||
wekan-control: bin/wekan-control |
||||
mongodb-control: bin/mongodb-control |
||||
wekan-read-settings: bin/wekan-read-settings |
||||
wekan-help: bin/wekan-help |
||||
mongodb-backup: bin/mongodb-backup |
||||
mongodb-restore: bin/mongodb-restore |
||||
config: bin/config |
||||
Loading…
Reference in new issue