diff options
author | Lauri Ojansivu <x@xet7.org> | 2018-11-04 18:32:08 +0200 |
---|---|---|
committer | Lauri Ojansivu <x@xet7.org> | 2018-11-04 18:32:08 +0200 |
commit | 4c2857b6e88b380ad7923b97b3db4c1eb33e4e75 (patch) | |
tree | ea6c8795afa1d38c2c40b20a1ee9e0a268951d39 | |
parent | 6f2275e8cb286cdf9dab3fee7f19b134eab70ca6 (diff) | |
download | wekan-4c2857b6e88b380ad7923b97b3db4c1eb33e4e75.tar.gz wekan-4c2857b6e88b380ad7923b97b3db4c1eb33e4e75.tar.bz2 wekan-4c2857b6e88b380ad7923b97b3db4c1eb33e4e75.zip |
Add build scripts.
34 files changed, 1013 insertions, 0 deletions
diff --git a/docker-compose-postgresql.yml b/docker-compose-postgresql.yml new file mode 100644 index 00000000..7689cc71 --- /dev/null +++ b/docker-compose-postgresql.yml @@ -0,0 +1,244 @@ +version: '2' + +# Docker: Wekan <=> MongoDB <=> ToroDB => PostgreSQL read-only mirroring +# for reporting with SQL, and accessing with any programming language, +# reporting package and Office suite that can connect to PostgreSQL. +# https://github.com/wekan/wekan-postgresql + +services: + torodb-stampede: + image: torodb/stampede:1.0.0-SNAPSHOT + networks: + - wekan-tier + links: + - postgres + - mongodb + environment: + - POSTGRES_PASSWORD + - TORODB_SETUP=true + - TORODB_SYNC_SOURCE=mongodb:27017 + - TORODB_BACKEND_HOST=postgres + - TORODB_BACKEND_PORT=5432 + - TORODB_BACKEND_DATABASE=wekan + - TORODB_BACKEND_USER=wekan + - TORODB_BACKEND_PASSWORD=wekan + - DEBUG + postgres: + image: postgres:9.6 + networks: + - wekan-tier + environment: + - POSTGRES_PASSWORD + ports: + - "15432:5432" + mongodb: + image: mongo:3.2 + networks: + - wekan-tier + ports: + - "28017:27017" + entrypoint: + - /bin/bash + - "-c" + - mongo --nodb --eval ' + var db; + while (!db) { + try { + db = new Mongo("mongodb:27017").getDB("local"); + } catch(ex) {} + sleep(3000); + }; + rs.initiate({_id:"rs1",members:[{_id:0,host:"mongodb:27017"}]}); + ' 1>/dev/null 2>&1 & + mongod --replSet rs1 + wekan: + image: quay.io/wekan/wekan + container_name: wekan-app + restart: always + networks: + - wekan-tier + ports: + - 80:8080 + environment: + - MONGO_URL=mongodb://mongodb:27017/wekan + - ROOT_URL=http://localhost + #--------------------------------------------------------------- + # == WEKAN API == + # Wekan Export Board works when WITH_API='true'. + # If you disable Wekan API, Export Board does not work. + - WITH_API=true + # Optional: Integration with Matomo https://matomo.org that is installed to your server + # The address of the server where Matomo is hosted. + # example: - MATOMO_ADDRESS=https://example.com/matomo + #- MATOMO_ADDRESS= + # The value of the site ID given in Matomo server for Wekan + # example: - MATOMO_SITE_ID=12345 + #- MATOMO_SITE_ID= + # The option do not track which enables users to not be tracked by matomo + # example: - MATOMO_DO_NOT_TRACK=false + #- MATOMO_DO_NOT_TRACK= + # The option that allows matomo to retrieve the username: + # example: MATOMO_WITH_USERNAME=true + #- MATOMO_WITH_USERNAME=false + # Enable browser policy and allow one trusted URL that can have iframe that has Wekan embedded inside. + # Setting this to false is not recommended, it also disables all other browser policy protections + # and allows all iframing etc. See wekan/server/policy.js + - BROWSER_POLICY_ENABLED=true + # When browser policy is enabled, HTML code at this Trusted URL can have iframe that embeds Wekan inside. + #- TRUSTED_URL= + # What to send to Outgoing Webhook, or leave out. Example, that includes all that are default: cardId,listId,oldListId,boardId,comment,user,card,commentId . + # example: WEBHOOKS_ATTRIBUTES=cardId,listId,oldListId,boardId,comment,user,card,commentId + #- WEBHOOKS_ATTRIBUTES= + # Enable the OAuth2 connection + # example: OAUTH2_ENABLED=true + #- OAUTH2_ENABLED=false + # OAuth2 docs: https://github.com/wekan/wekan/wiki/OAuth2 + # OAuth2 Client ID, for example from Rocket.Chat. Example: abcde12345 + # example: OAUTH2_CLIENT_ID=abcde12345 + #- OAUTH2_CLIENT_ID= + # OAuth2 Secret, for example from Rocket.Chat: Example: 54321abcde + # example: OAUTH2_SECRET=54321abcde + #- OAUTH2_SECRET= + # OAuth2 Server URL, for example Rocket.Chat. Example: https://chat.example.com + # example: OAUTH2_SERVER_URL=https://chat.example.com + #- OAUTH2_SERVER_URL= + # OAuth2 Authorization Endpoint. Example: /oauth/authorize + # example: OAUTH2_AUTH_ENDPOINT=/oauth/authorize + #- OAUTH2_AUTH_ENDPOINT= + # OAuth2 Userinfo Endpoint. Example: /oauth/userinfo + # example: OAUTH2_USERINFO_ENDPOINT=/oauth/userinfo + #- OAUTH2_USERINFO_ENDPOINT= + # OAuth2 Token Endpoint. Example: /oauth/token + # example: OAUTH2_TOKEN_ENDPOINT=/oauth/token + #- OAUTH2_TOKEN_ENDPOINT= + # LDAP_ENABLE : Enable or not the connection by the LDAP + # example : LDAP_ENABLE=true + #- LDAP_ENABLE=false + # LDAP_PORT : The port of the LDAP server + # example : LDAP_PORT=389 + #- LDAP_PORT=389 + # LDAP_HOST : The host server for the LDAP server + # example : LDAP_HOST=localhost + #- LDAP_HOST= + # LDAP_BASEDN : The base DN for the LDAP Tree + # example : LDAP_BASEDN=ou=user,dc=example,dc=org + #- LDAP_BASEDN= + # LDAP_LOGIN_FALLBACK : Fallback on the default authentication method + # example : LDAP_LOGIN_FALLBACK=true + #- LDAP_LOGIN_FALLBACK=false + # LDAP_RECONNECT : Reconnect to the server if the connection is lost + # example : LDAP_RECONNECT=false + #- LDAP_RECONNECT=true + # LDAP_TIMEOUT : Overall timeout, in milliseconds + # example : LDAP_TIMEOUT=12345 + #- LDAP_TIMEOUT=10000 + # LDAP_IDLE_TIMEOUT : Specifies the timeout for idle LDAP connections in milliseconds + # example : LDAP_IDLE_TIMEOUT=12345 + #- LDAP_IDLE_TIMEOUT=10000 + # LDAP_CONNECT_TIMEOUT : Connection timeout, in milliseconds + # example : LDAP_CONNECT_TIMEOUT=12345 + #- LDAP_CONNECT_TIMEOUT=10000 + # LDAP_AUTHENTIFICATION : If the LDAP needs a user account to search + # example : LDAP_AUTHENTIFICATION=true + #- LDAP_AUTHENTIFICATION=false + # LDAP_AUTHENTIFICATION_USERDN : The search user DN + # example : LDAP_AUTHENTIFICATION_USERDN=cn=admin,dc=example,dc=org + #- LDAP_AUTHENTIFICATION_USERDN= + # LDAP_AUTHENTIFICATION_PASSWORD : The password for the search user + # example : AUTHENTIFICATION_PASSWORD=admin + #- LDAP_AUTHENTIFICATION_PASSWORD= + # LDAP_LOG_ENABLED : Enable logs for the module + # example : LDAP_LOG_ENABLED=true + #- LDAP_LOG_ENABLED=false + # LDAP_BACKGROUND_SYNC : If the sync of the users should be done in the background + # example : LDAP_BACKGROUND_SYNC=true + #- LDAP_BACKGROUND_SYNC=false + # LDAP_BACKGROUND_SYNC_INTERVAL : At which interval does the background task sync in milliseconds + # example : LDAP_BACKGROUND_SYNC_INTERVAL=12345 + #- LDAP_BACKGROUND_SYNC_INTERVAL=100 + # LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED : + # example : LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=true + #- LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=false + # LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS : + # example : LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS=true + #- LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS=false + # LDAP_ENCRYPTION : If using LDAPS + # example : LDAP_ENCRYPTION=ssl + #- LDAP_ENCRYPTION=false + # LDAP_CA_CERT : The certification for the LDAPS server. Certificate needs to be included in this docker-compose.yml file. + # example : LDAP_CA_CERT=-----BEGIN CERTIFICATE-----MIIE+zCCA+OgAwIBAgIkAhwR/6TVLmdRY6hHxvUFWc0+Enmu/Hu6cj+G2FIdAgIC...-----END CERTIFICATE----- + #- LDAP_CA_CERT= + # LDAP_REJECT_UNAUTHORIZED : Reject Unauthorized Certificate + # example : LDAP_REJECT_UNAUTHORIZED=true + #- LDAP_REJECT_UNAUTHORIZED=false + # LDAP_USER_SEARCH_FILTER : Optional extra LDAP filters. Don't forget the outmost enclosing parentheses if needed + # example : LDAP_USER_SEARCH_FILTER= + #- LDAP_USER_SEARCH_FILTER= + # LDAP_USER_SEARCH_SCOPE : base (search only in the provided DN), one (search only in the provided DN and one level deep), or sub (search the whole subtree) + # example : LDAP_USER_SEARCH_SCOPE=one + #- LDAP_USER_SEARCH_SCOPE= + # LDAP_USER_SEARCH_FIELD : Which field is used to find the user + # example : LDAP_USER_SEARCH_FIELD=uid + #- LDAP_USER_SEARCH_FIELD= + # LDAP_SEARCH_PAGE_SIZE : Used for pagination (0=unlimited) + # example : LDAP_SEARCH_PAGE_SIZE=12345 + #- LDAP_SEARCH_PAGE_SIZE=0 + # LDAP_SEARCH_SIZE_LIMIT : The limit number of entries (0=unlimited) + # example : LDAP_SEARCH_SIZE_LIMIT=12345 + #- LDAP_SEARCH_SIZE_LIMIT=0 + # LDAP_GROUP_FILTER_ENABLE : Enable group filtering + # example : LDAP_GROUP_FILTER_ENABLE=true + #- LDAP_GROUP_FILTER_ENABLE=false + # LDAP_GROUP_FILTER_OBJECTCLASS : The object class for filtering + # example : LDAP_GROUP_FILTER_OBJECTCLASS=group + #- LDAP_GROUP_FILTER_OBJECTCLASS= + # LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE : + # example : + #- LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE= + # LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE : + # example : + #- LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE= + # LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT : + # example : + #- LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT= + # LDAP_GROUP_FILTER_GROUP_NAME : + # example : + #- LDAP_GROUP_FILTER_GROUP_NAME= + # LDAP_UNIQUE_IDENTIFIER_FIELD : This field is sometimes class GUID (Globally Unique Identifier) + # example : LDAP_UNIQUE_IDENTIFIER_FIELD=guid + #- LDAP_UNIQUE_IDENTIFIER_FIELD= + # LDAP_UTF8_NAMES_SLUGIFY : Convert the username to utf8 + # example : LDAP_UTF8_NAMES_SLUGIFY=false + #- LDAP_UTF8_NAMES_SLUGIFY=true + # LDAP_USERNAME_FIELD : Which field contains the ldap username + # example : LDAP_USERNAME_FIELD=username + #- LDAP_USERNAME_FIELD= + # LDAP_MERGE_EXISTING_USERS : + # example : LDAP_MERGE_EXISTING_USERS=true + #- LDAP_MERGE_EXISTING_USERS=false + # LDAP_SYNC_USER_DATA : + # example : LDAP_SYNC_USER_DATA=true + #- LDAP_SYNC_USER_DATA=false + # LDAP_SYNC_USER_DATA_FIELDMAP : + # example : LDAP_SYNC_USER_DATA_FIELDMAP={"cn":"name", "mail":"email"} + #- LDAP_SYNC_USER_DATA_FIELDMAP= + # LDAP_SYNC_GROUP_ROLES : + # example : + #- LDAP_SYNC_GROUP_ROLES= + # LDAP_DEFAULT_DOMAIN : The default domain of the ldap it is used to create email if the field is not map correctly with the LDAP_SYNC_USER_DATA_FIELDMAP + # example : + #- LDAP_DEFAULT_DOMAIN= + + + depends_on: + - mongodb + +volumes: + mongodb: + driver: local + mongodb-dump: + driver: local + +networks: + wekan-tier: + driver: bridge diff --git a/rebuild-wekan.bat b/rebuild-wekan.bat new file mode 100644 index 00000000..57d174ca --- /dev/null +++ b/rebuild-wekan.bat @@ -0,0 +1,48 @@ +@ECHO OFF
+
+REM IN PROGRESS: Build on Windows.
+REM https://github.com/wekan/wekan/wiki/Install-Wekan-from-source-on-Windows
+REM Please add fix PRs, like config of MongoDB etc.
+
+md C:\repos
+cd C:\repos
+
+REM Install chocolatey
+@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
+
+choco install -y git curl python2 dotnet4.5.2 nano mongodb-3 mongoclient meteor
+
+curl -O https://nodejs.org/dist/v8.12.0/node-v8.12.0-x64.msi
+call node-v8.12.0-x64.msi
+
+call npm config -g set msvs_version 2015
+call meteor npm config -g set msvs_version 2015
+
+call npm -g install npm
+call npm -g install node-gyp
+call npm -g install fibers@2.0.0
+cd C:\repos
+git clone https://github.com/wekan/wekan.git
+cd wekan
+git checkout edge
+echo "Building Wekan."
+REM del /S /F /Q packages
+md packages
+cd packages
+git clone --depth 1 -b master https://github.com/wekan/flow-router.git kadira-flow-router
+git clone --depth 1 -b master https://github.com/meteor-useraccounts/core.git meteor-useraccounts-core
+git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-cas.git
+git clone --depth 1 -b master https://github.com/wekan/wekan-ldap.git
+REM sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js
+cd ..
+REM del /S /F /Q node_modules
+call meteor npm install
+REM del /S /F /Q .build
+call meteor build .build --directory
+copy fix-download-unicode\cfs_access-point.txt .build\bundle\programs\server\packages\cfs_access-point.js
+cd .build\bundle\programs\server
+call meteor npm install
+REM cd C:\repos\wekan\.meteor\local\build\programs\server
+REM del node_modules
+cd C:\repos\wekan
+call start-wekan.bat
diff --git a/rebuild-wekan.sh b/rebuild-wekan.sh new file mode 100755 index 00000000..c1f9f4a0 --- /dev/null +++ b/rebuild-wekan.sh @@ -0,0 +1,129 @@ +#!/bin/bash + +echo "Note: If you use other locale than en_US.UTF-8 , you need to additionally install en_US.UTF-8" +echo " with 'sudo dpkg-reconfigure locales' , so that MongoDB works correctly." +echo " You can still use any other locale as your main locale." + +X64NODE="https://nodejs.org/dist/v8.12.0/node-v8.12.0-linux-x64.tar.gz" + +function pause(){ + read -p "$*" +} + +echo +PS3='Please enter your choice: ' +options=("Install Wekan dependencies" "Build Wekan" "Quit") +select opt in "${options[@]}" +do + case $opt in + "Install Wekan dependencies") + + if [[ "$OSTYPE" == "linux-gnu" ]]; then + echo "Linux"; + + if [ "$(grep -Ei 'buntu|mint' /etc/*release)" ]; then + sudo apt install -y build-essential git curl wget +# sudo apt -y install nodejs npm +# sudo npm -g install n +# sudo n 8.12.0 + fi + +# if [ "$(grep -Ei 'debian' /etc/*release)" ]; then +# sudo apt install -y build-essential git curl wget +# echo "Debian, or Debian on Windows Subsystem for Linux" +# curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - +# sudo apt install -y nodejs +# fi + + # TODO: Add Sandstorm for version of Node.js install + #MACHINE_TYPE=`uname -m` + #if [ ${MACHINE_TYPE} == 'x86_64' ]; then + # # 64-bit stuff here + # wget ${X64NODE} + # sudo tar -C /usr/local --strip-components 1 -xzf ${X64NODE} + #elif [ ${MACHINE_TYPE} == '32bit' ]; then + # echo "TODO: 32-bit Linux install here" + # exit + #fi + elif [[ "$OSTYPE" == "darwin"* ]]; then + echo "macOS"; + pause '1) Install XCode 2) Install Node 8.x from https://nodejs.org/en/ 3) Press [Enter] key to continue.' + elif [[ "$OSTYPE" == "cygwin" ]]; then + # POSIX compatibility layer and Linux environment emulation for Windows + echo "TODO: Add Cygwin"; + exit; + elif [[ "$OSTYPE" == "msys" ]]; then + # Lightweight shell and GNU utilities compiled for Windows (part of MinGW) + echo "TODO: Add msys on Windows"; + exit; + elif [[ "$OSTYPE" == "win32" ]]; then + # I'm not sure this can happen. + echo "TODO: Add Windows"; + exit; + elif [[ "$OSTYPE" == "freebsd"* ]]; then + echo "TODO: Add FreeBSD"; + exit; + else + echo "Unknown" + echo ${OSTYPE} + exit; + fi + + ## Latest npm with Meteor 1.6 + sudo npm -g install npm + sudo npm -g install node-gyp + # Latest fibers for Meteor 1.6 + sudo npm -g install fibers@2.0.0 + # Install Meteor, if it's not yet installed + curl https://install.meteor.com | bash +# mkdir ~/repos +# cd ~/repos +# git clone https://github.com/wekan/wekan.git +# cd wekan +# git checkout devel + break + ;; + "Build Wekan") + echo "Building Wekan." + cd ~/repos/wekan + rm -rf packages + mkdir -p ~/repos/wekan/packages + cd ~/repos/wekan/packages + git clone --depth 1 -b master https://github.com/wekan/flow-router.git kadira-flow-router + git clone --depth 1 -b master https://github.com/meteor-useraccounts/core.git meteor-useraccounts-core + git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-cas.git + git clone --depth 1 -b master https://github.com/wekan/wekan-ldap.git + if [[ "$OSTYPE" == "darwin"* ]]; then + echo "sed at macOS"; + sed -i '' 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js + else + echo "sed at ${OSTYPE}" + sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js + fi + + cd ~/repos/wekan + rm -rf node_modules + meteor npm install + rm -rf .build + meteor build .build --directory + cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js + #Removed binary version of bcrypt because of security vulnerability that is not fixed yet. + #https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac + #https://github.com/wekan/wekan/commit/7eeabf14be3c63fae2226e561ef8a0c1390c8d3c + #cd ~/repos/wekan/.build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt + #rm -rf node_modules/bcrypt + #meteor npm install bcrypt + cd ~/repos/wekan/.build/bundle/programs/server + rm -rf node_modules + meteor npm install + #meteor npm install bcrypt + cd ~/repos + echo Done. + break + ;; + "Quit") + break + ;; + *) echo invalid option;; + esac +done diff --git a/releases/README.md b/releases/README.md new file mode 100644 index 00000000..86601ad2 --- /dev/null +++ b/releases/README.md @@ -0,0 +1,12 @@ +## Wekan release scripts + +Sorry about the mess. I try to cleanup it sometime. + +I usually use these: +- release.sh +- release-sandstorm.sh +- release-snap.sh + +https://github.com/wekan/wekan-snap/wiki/Making-releases-from-source + +https://github.com/wekan/wekan-maintainer/wiki/Building-Wekan-for-Sandstorm diff --git a/releases/add-tag.sh b/releases/add-tag.sh new file mode 100755 index 00000000..c43617fe --- /dev/null +++ b/releases/add-tag.sh @@ -0,0 +1,5 @@ +# Add tag to repo of new release +# Example: add-tag.sh v1.62 + +git tag -a $1 -m "$1" +git push origin $1 diff --git a/releases/commit.sh b/releases/commit.sh new file mode 100755 index 00000000..5b973177 --- /dev/null +++ b/releases/commit.sh @@ -0,0 +1,4 @@ + +# --- Add commit with showing editor where it's easy to add multiline commit +git commit +# ---- diff --git a/releases/delete-branch-local-and-remote.sh b/releases/delete-branch-local-and-remote.sh new file mode 100755 index 00000000..b362f56f --- /dev/null +++ b/releases/delete-branch-local-and-remote.sh @@ -0,0 +1,3 @@ +# https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote +#git push origin --delete feature-oauth +git push origin --delete $1 diff --git a/releases/rebuild-release.sh b/releases/rebuild-release.sh new file mode 100755 index 00000000..8a5b8890 --- /dev/null +++ b/releases/rebuild-release.sh @@ -0,0 +1,38 @@ +#!/bin/bash + + echo "Building Wekan." + cd ~/repos/wekan + rm -rf packages + mkdir -p ~/repos/wekan/packages + cd ~/repos/wekan/packages + git clone --depth 1 -b master https://github.com/wekan/flow-router.git kadira-flow-router + git clone --depth 1 -b master https://github.com/meteor-useraccounts/core.git meteor-useraccounts-core + git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-cas.git + git clone --depth 1 -b master https://github.com/wekan/wekan-ldap.git + + if [[ "$OSTYPE" == "darwin"* ]]; then + echo "sed at macOS"; + sed -i '' 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js + else + echo "sed at ${OSTYPE}" + sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js + fi + + cd ~/repos/wekan + rm -rf node_modules + meteor npm install + rm -rf .build + meteor build .build --directory + cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js + #Removed binary version of bcrypt because of security vulnerability that is not fixed yet. + #https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac + #https://github.com/wekan/wekan/commit/7eeabf14be3c63fae2226e561ef8a0c1390c8d3c + #cd ~/repos/wekan/.build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt + #rm -rf node_modules/bcrypt + #meteor npm install bcrypt + cd ~/repos/wekan/.build/bundle/programs/server + rm -rf node_modules + meteor npm install + #meteor npm install bcrypt + cd ~/repos + echo Building Wekan Done. diff --git a/releases/release-cleanup.sh b/releases/release-cleanup.sh new file mode 100755 index 00000000..ed49638e --- /dev/null +++ b/releases/release-cleanup.sh @@ -0,0 +1,19 @@ +# Usage: ./release.sh 1.36 + +# Delete old stuff +cd ~/ +sudo rm -rf .npm +cd ~/repos/wekan +sudo rm -rf parts prime stage .meteor-spk + +# Set permissions +cd ~/repos +sudo chown user:user wekan -R +cd ~/ +sudo chown user:user .meteor -R +#sudo chown user:user .cache/snapcraft -R +sudo rm -rf .cache/snapcraft +sudo chown user:user .config -R + +# Back +cd ~/repos diff --git a/releases/release-sandstorm.sh b/releases/release-sandstorm.sh new file mode 100755 index 00000000..e696eab4 --- /dev/null +++ b/releases/release-sandstorm.sh @@ -0,0 +1,20 @@ +# Usage: ./release.sh 1.36 + +# Delete old stuff +cd ~/repos +./release-cleanup.sh + +# Build Source +cd ~/repos +./rebuild-release.sh + +# Build Sandstorm +cd ~/repos/wekan +meteor-spk pack wekan-$1.spk +spk publish wekan-$1.spk +scp wekan-$1.spk x2:/var/snap/wekan/common/releases.wekan.team/ +mv wekan-$1.spk .. + +# Delete old stuff +cd ~/repos +./release-cleanup.sh diff --git a/releases/release-snap.sh b/releases/release-snap.sh new file mode 100755 index 00000000..127334c3 --- /dev/null +++ b/releases/release-snap.sh @@ -0,0 +1,26 @@ +# Usage: ./release.sh 1.36 + +# Cleanup +cd ~/repos +./release-cleanup.sh + +# Build Source +cd ~/repos +./rebuild-release.sh + +# Build Snap +cd ~/repos/wekan +rm -rf packages +sudo snapcraft + +# Cleanup +cd ~/repos +./release-cleanup.sh + +# Push snap +cd ~/repos/wekan +sudo snap install --dangerous wekan_$1_amd64.snap +echo "Now you can test local installed snap." +snapcraft push wekan_$1_amd64.snap +scp wekan_$1_amd64.snap x2:/var/snap/wekan/common/releases.wekan.team/ +mv wekan_$1_amd64.snap .. diff --git a/releases/release.sh b/releases/release.sh new file mode 100755 index 00000000..85c60b17 --- /dev/null +++ b/releases/release.sh @@ -0,0 +1,9 @@ +# Usage: ./release.sh 1.36 + +# Build Sandstorm +cd ~/repos/wekan +./releases/release-sandstorm.sh $1 + +# Build Snap +cd ~/repos/wekan +./releases/release-snap.sh $1 diff --git a/releases/sandstorm-make-spk.sh b/releases/sandstorm-make-spk.sh new file mode 100755 index 00000000..8db2a4c3 --- /dev/null +++ b/releases/sandstorm-make-spk.sh @@ -0,0 +1 @@ +meteor-spk pack wekan-1.11.spk diff --git a/releases/sandstorm-test-dev.sh b/releases/sandstorm-test-dev.sh new file mode 100755 index 00000000..5aae36b1 --- /dev/null +++ b/releases/sandstorm-test-dev.sh @@ -0,0 +1 @@ +meteor-spk dev diff --git a/releases/snap-edge.sh b/releases/snap-edge.sh new file mode 100755 index 00000000..2b5197c8 --- /dev/null +++ b/releases/snap-edge.sh @@ -0,0 +1,2 @@ +# Change to snap edge +sudo snap refresh wekan --edge --amend diff --git a/releases/snap-install.sh b/releases/snap-install.sh new file mode 100755 index 00000000..bdb0b7a2 --- /dev/null +++ b/releases/snap-install.sh @@ -0,0 +1 @@ +sudo snap install --dangerous wekan_1.23-17-g9c94ea5_amd64.snap diff --git a/releases/snap-push-to-store.sh b/releases/snap-push-to-store.sh new file mode 100755 index 00000000..dca942fd --- /dev/null +++ b/releases/snap-push-to-store.sh @@ -0,0 +1 @@ +snapcraft push $1 diff --git a/releases/snap-stable.sh b/releases/snap-stable.sh new file mode 100755 index 00000000..b8633100 --- /dev/null +++ b/releases/snap-stable.sh @@ -0,0 +1,2 @@ +# Change to snap stable +sudo snap refresh wekan --stable --amend diff --git a/releases/snapcraft-help.sh b/releases/snapcraft-help.sh new file mode 100755 index 00000000..fa576b30 --- /dev/null +++ b/releases/snapcraft-help.sh @@ -0,0 +1 @@ +snapcraft help topics diff --git a/releases/translations/pull-translations.sh b/releases/translations/pull-translations.sh new file mode 100755 index 00000000..4ce9d22d --- /dev/null +++ b/releases/translations/pull-translations.sh @@ -0,0 +1,136 @@ +cd ~/repos/wekan + +echo "Arabic:" +tx pull -f -l ar + +echo "Bulgarian:" +tx pull -f -l bg_BG + +echo "Breton:" +tx pull -f -l br + +echo "Catalan:" +tx pull -f -l ca + +echo "Czech:" +tx pull -f -l cs + +echo "Georgian:" +tx pull -f -l ka + +echo "German:" +tx pull -f -l de + +echo "Hindi:" +tx pull -f -l hi + +echo "Esperanto:" +tx pull -f -l eo + +echo "English (United Kingdom):" +tx pull -f -l en_GB + +echo "Greek:" +tx pull -f -l el + +echo "Spanish:" +tx pull -f -l es + +echo "Spanish (Argentina):" +tx pull -f -l es_AR + +echo "Basque:" +tx pull -f -l eu + +echo "Persian:" +tx pull -f -l fa + +echo "Finnish:" +tx pull -f -l fi + +echo "French:" +tx pull -f -l fr + +echo "Galician:" +tx pull -f -l gl + +echo "Hebrew:" +tx pull -f -l he + +echo "Hungarian:" +tx pull -f -l hu_HU + +echo "Armenian:" +tx pull -f -l hy + +echo "Indonesian (Indonesia):" +tx pull -f -l id_ID + +echo "Igbo:" +tx pull -f -l ig + +echo "Italian:" +tx pull -f -l it + +echo "Japanese:" +tx pull -f -l ja + +echo "Khmer:" +tx pull -f -l km + +echo "Korean:" +tx pull -f -l ko + +echo "Latvian (Latvia):" +tx pull -f -l lv_LV + +echo "Mongolian (Mongolia):" +tx pull -f -l mn_MN + +echo "Dutch:" +tx pull -f -l nl + +echo "Norwegian:" +tx pull -f -l no + +echo "Polish:" +tx pull -f -l pl + +echo "Portuguese:" +tx pull -f -l pt + +echo "Portuguese (Brazil):" +tx pull -f -l pt_BR + +echo "Romanian (Romania):" +tx pull -f -l ro + +echo "Russian:" +tx pull -f -l ru + +echo "Serbian:" +tx pull -f -l sr + +echo "Swedish:" +tx pull -f -l sv + +echo "Tamil:" +tx pull -f -l ta + +echo "Thai:" +tx pull -f -l th + +echo "Turkish:" +tx pull -f -l tr + +echo "Ukrainian:" +tx pull -f -l uk + +echo "Vietnamese:" +tx pull -f -l vi + +echo "Chinese (China):" +tx pull -f -l zh_CN + +echo "Chinese (Taiwan)" +tx pull -f -l zh_TW diff --git a/releases/translations/push-english-base-translation.sh b/releases/translations/push-english-base-translation.sh new file mode 100755 index 00000000..1d29fd0d --- /dev/null +++ b/releases/translations/push-english-base-translation.sh @@ -0,0 +1,2 @@ +cd ~/repos/wekan +tx push -s diff --git a/releases/virtualbox/README.txt b/releases/virtualbox/README.txt new file mode 100644 index 00000000..04beeba8 --- /dev/null +++ b/releases/virtualbox/README.txt @@ -0,0 +1,6 @@ +Wekan +----- +- NOTE: VirtualBox script use Wekan stable (master+devel branch). Edge scripts are at wekan-maintainer/releases/ directory. +- Wekan is started at boot at /etc/rc.local +- scripts are at ~/repos +- this README.txt is at VirtualBox Ubuntu desktop diff --git a/releases/virtualbox/etc-rc.local.txt b/releases/virtualbox/etc-rc.local.txt new file mode 100644 index 00000000..7c951a8c --- /dev/null +++ b/releases/virtualbox/etc-rc.local.txt @@ -0,0 +1,20 @@ +#!/bin/sh -e +# +# rc.local +# +# This script is executed at the end of each multiuser runlevel. +# Make sure that the script will "exit 0" on success or any other +# value on error. +# +# In order to enable or disable this script just change the execution +# bits. +# +# By default this script does nothing. + +# node-allow-port-80.sh +sudo setcap cap_net_bind_service=+ep /usr/local/bin/node + +# Start Wekan at boot at Ubuntu 14.04 +sudo -H -u wekan bash -c '/home/wekan/repos/wekan/releases/virtualbox/start-wekan.sh' + +exit 0 diff --git a/releases/virtualbox/ipaddress.sh b/releases/virtualbox/ipaddress.sh new file mode 100755 index 00000000..0d79d43d --- /dev/null +++ b/releases/virtualbox/ipaddress.sh @@ -0,0 +1,2 @@ +# ifdata -pa eth0 +ip address diff --git a/releases/virtualbox/node-allow-port-80.sh b/releases/virtualbox/node-allow-port-80.sh new file mode 100755 index 00000000..4f1861b6 --- /dev/null +++ b/releases/virtualbox/node-allow-port-80.sh @@ -0,0 +1 @@ +sudo setcap cap_net_bind_service=+ep /usr/local/bin/node diff --git a/releases/virtualbox/old-rebuild-wekan.sh b/releases/virtualbox/old-rebuild-wekan.sh new file mode 100755 index 00000000..a3941d55 --- /dev/null +++ b/releases/virtualbox/old-rebuild-wekan.sh @@ -0,0 +1,42 @@ +## Most of these are uncommented, because they are already installed. +#sudo rm -rf /usr/local/lib/node_modules +#sudo rm -rf ~/.npm +#sudo apt install build-essential c++ capnproto npm git curl +#sudo npm -g install n +#sudo n 4.8.6 +#sudo npm -g install npm@4.6.1 +#sudo npm -g install node-gyp +#sudo npm -g install node-pre-gyp +#sudo npm -g install fibers@1.0.15 +sudo rm -rf wekan +git clone https://github.com/wekan/wekan +cd ~/repos +#curl https://install.meteor.com -o ./install_meteor.sh +#sed -i "s|RELEASE=.*|RELEASE=${METEOR_RELEASE}\"\"|g" ./install_meteor.sh +#echo "Starting meteor ${METEOR_RELEASE} installation... \n" +#chown wekan:wekan ./install_meteor.sh +#sh ./install_meteor.sh +mkdir -p ~/repos/wekan/packages +cd ~/repos/wekan/packages +rm -rf kadira-flow-router +rm -rf meteor-useraccounts-core +git clone https://github.com/wekan/flow-router.git kadira-flow-router +git clone https://github.com/meteor-useraccounts/core.git meteor-useraccounts-core +sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js +cd ~/repos/wekan + +rm -rf node_modules +npm install +rm -rf .build +meteor build .build --directory +cp -f 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" ~/repos/wekan/.build/bundle/programs/server/npm/node_modules/meteor/cfs_gridfs/node_modules/mongodb/node_modules/bson/ext/index.js +cd ~/repos/wekan/.build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt +rm -rf node_modules/bcrypt +meteor npm install --save bcrypt +cd ~/repos/wekan/.build/bundle/programs/server +rm -rf node_modules +npm install +meteor npm install --save bcrypt +cd ~/repos +echo Done. diff --git a/releases/virtualbox/rebuild-wekan.sh b/releases/virtualbox/rebuild-wekan.sh new file mode 100755 index 00000000..e7d55107 --- /dev/null +++ b/releases/virtualbox/rebuild-wekan.sh @@ -0,0 +1,127 @@ +#!/bin/bash + +echo "Note: If you use other locale than en_US.UTF-8 , you need to additionally install en_US.UTF-8" +echo " with 'sudo dpkg-reconfigure locales' , so that MongoDB works correctly." +echo " You can still use any other locale as your main locale." + +X64NODE="https://releases.wekan.team/node-v8.11.3-linux-x64.tar.gz" + +function pause(){ + read -p "$*" +} + +echo +PS3='Please enter your choice: ' +options=("Install Wekan dependencies" "Build Wekan" "Quit") +select opt in "${options[@]}" +do + case $opt in + "Install Wekan dependencies") + + if [[ "$OSTYPE" == "linux-gnu" ]]; then + echo "Linux"; + + if [ "$(grep -Ei 'buntu|mint' /etc/*release)" ]; then + sudo apt install -y build-essential git curl wget + sudo apt -y install nodejs npm + sudo npm -g install n + sudo n 8.11.3 + fi + + if [ "$(grep -Ei 'debian' /etc/*release)" ]; then + sudo apt install -y build-essential git curl wget + echo "Debian, or Debian on Windows Subsystem for Linux" + curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - + sudo apt install -y nodejs + fi + + # TODO: Add Sandstorm for version of Node.js install + #MACHINE_TYPE=`uname -m` + #if [ ${MACHINE_TYPE} == 'x86_64' ]; then + # # 64-bit stuff here + # wget ${X64NODE} + # sudo tar -C /usr/local --strip-components 1 -xzf ${X64NODE} + #elif [ ${MACHINE_TYPE} == '32bit' ]; then + # echo "TODO: 32-bit Linux install here" + # exit + #fi + elif [[ "$OSTYPE" == "darwin"* ]]; then + echo "macOS"; + pause '1) Install XCode 2) Install Node 8.x from https://nodejs.org/en/ 3) Press [Enter] key to continue.' + elif [[ "$OSTYPE" == "cygwin" ]]; then + # POSIX compatibility layer and Linux environment emulation for Windows + echo "TODO: Add Cygwin"; + exit; + elif [[ "$OSTYPE" == "msys" ]]; then + # Lightweight shell and GNU utilities compiled for Windows (part of MinGW) + echo "TODO: Add msys on Windows"; + exit; + elif [[ "$OSTYPE" == "win32" ]]; then + # I'm not sure this can happen. + echo "TODO: Add Windows"; + exit; + elif [[ "$OSTYPE" == "freebsd"* ]]; then + echo "TODO: Add FreeBSD"; + exit; + else + echo "Unknown" + echo ${OSTYPE} + exit; + fi + + ## Latest npm with Meteor 1.6 + sudo npm -g install npm + sudo npm -g install node-gyp + # Latest fibers for Meteor 1.6 + sudo npm -g install fibers@2.0.0 + # Install Meteor, if it's not yet installed + curl https://install.meteor.com | bash + mkdir ~/repos + cd ~/repos + git clone https://github.com/wekan/wekan.git + cd wekan + git checkout devel + break + ;; + "Build Wekan") + echo "Building Wekan." + cd ~/repos/wekan + mkdir -p ~/repos/wekan/packages + cd ~/repos/wekan/packages + git clone https://github.com/wekan/flow-router.git kadira-flow-router + git clone https://github.com/meteor-useraccounts/core.git meteor-useraccounts-core + + if [[ "$OSTYPE" == "darwin"* ]]; then + echo "sed at macOS"; + sed -i '' 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js + else + echo "sed at ${OSTYPE}" + sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js + fi + + cd ~/repos/wekan + rm -rf node_modules + meteor npm install + rm -rf .build + meteor build .build --directory + cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js + #Removed binary version of bcrypt because of security vulnerability that is not fixed yet. + #https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac + #https://github.com/wekan/wekan/commit/7eeabf14be3c63fae2226e561ef8a0c1390c8d3c + #cd ~/repos/wekan/.build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt + #rm -rf node_modules/bcrypt + #meteor npm install bcrypt + cd ~/repos/wekan/.build/bundle/programs/server + rm -rf node_modules + meteor npm install + #meteor npm install bcrypt + cd ~/repos + echo Done. + break + ;; + "Quit") + break + ;; + *) echo invalid option;; + esac +done diff --git a/releases/virtualbox/start-wekan.sh b/releases/virtualbox/start-wekan.sh new file mode 100755 index 00000000..67f52dc0 --- /dev/null +++ b/releases/virtualbox/start-wekan.sh @@ -0,0 +1,72 @@ +# If you want to restart even on crash, uncomment while and done lines. + +#while true; do + cd ~/repos/wekan/.build/bundle + export MONGO_URL='mongodb://127.0.0.1:27017/admin' + # ROOT_URL EXAMPLES FOR WEBSERVERS: https://github.com/wekan/wekan/wiki/Settings + # Production: https://example.com/wekan + # Local: http://localhost:3000 + #export ipaddress=$(ifdata -pa eth0) + export ROOT_URL='http://localhost' + #--------------------------------------------- + # Working email IS NOT REQUIRED to use Wekan. + # https://github.com/wekan/wekan/wiki/Adding-users + # https://github.com/wekan/wekan/wiki/Troubleshooting-Mail + # https://github.com/wekan/wekan-mongodb/blob/master/docker-compose.yml + export MAIL_URL='smtp://user:pass@mailserver.example.com:25/' + export MAIL_FROM='Wekan Support <support@example.com>' + # This is local port where Wekan Node.js runs, same as below on Caddyfile settings. + export PORT=80 + #--------------------------------------------- + # Wekan Export Board works when WITH_API='true'. + # If you disable Wekan API, Export Board does not work. + export WITH_API='true' + #--------------------------------------------- + ## Optional: Integration with Matomo https://matomo.org that is installed to your server + ## The address of the server where Matomo is hosted: + # export MATOMO_ADDRESS='https://example.com/matomo' + export MATOMO_ADDRESS='' + ## The value of the site ID given in Matomo server for Wekan + # export MATOMO_SITE_ID='123456789' + export MATOMO_SITE_ID='' + ## The option do not track which enables users to not be tracked by matomo" + # export MATOMO_DO_NOT_TRACK='false' + export MATOMO_DO_NOT_TRACK='true' + ## The option that allows matomo to retrieve the username: + # export MATOMO_WITH_USERNAME='true' + export MATOMO_WITH_USERNAME='false' + # Enable browser policy and allow one trusted URL that can have iframe that has Wekan embedded inside. + # Setting this to false is not recommended, it also disables all other browser policy protections + # and allows all iframing etc. See wekan/server/policy.js + # Default value: true + export BROWSER_POLICY_ENABLED=true + # When browser policy is enabled, HTML code at this Trusted URL can have iframe that embeds Wekan inside. + # Example: export TRUSTED_URL=http://example.com + export TRUSTED_URL='' + # What to send to Outgoing Webhook, or leave out. Example, that includes all that are default: cardId,listId,oldListId,boardId,comment,user,card,commentId . + # Example: export WEBHOOKS_ATTRIBUTES=cardId,listId,oldListId,boardId,comment,user,card,commentId + export WEBHOOKS_ATTRIBUTES='' + #--------------------------------------------- + # OAuth2 docs: https://github.com/wekan/wekan/wiki/OAuth2 + # OAuth2 Client ID, for example from Rocket.Chat. Example: abcde12345 + # example: export OAUTH2_CLIENT_ID=abcde12345 + export OAUTH2_CLIENT_ID='' + # OAuth2 Secret, for example from Rocket.Chat: Example: 54321abcde + # example: export OAUTH2_SECRET=54321abcde + export OAUTH2_SECRET='' + # OAuth2 Server URL, for example Rocket.Chat. Example: https://chat.example.com + # example: export OAUTH2_SERVER_URL=https://chat.example.com + export OAUTH2_SERVER_URL='' + # OAuth2 Authorization Endpoint. Example: /oauth/authorize + # example: export OAUTH2_AUTH_ENDPOINT=/oauth/authorize + export OAUTH2_AUTH_ENDPOINT='' + # OAuth2 Userinfo Endpoint. Example: /oauth/userinfo + # example: export OAUTH2_USERINFO_ENDPOINT=/oauth/userinfo + export OAUTH2_USERINFO_ENDPOINT='' + # OAuth2 Token Endpoint. Example: /oauth/token + # example: export OAUTH2_TOKEN_ENDPOINT=/oauth/token + export OAUTH2_TOKEN_ENDPOINT='' + #--------------------------------------------- + node main.js & >> ~/repos/wekan.log + cd ~/repos +#done diff --git a/releases/virtualbox/stop-wekan.sh b/releases/virtualbox/stop-wekan.sh new file mode 100755 index 00000000..a7adf03b --- /dev/null +++ b/releases/virtualbox/stop-wekan.sh @@ -0,0 +1 @@ +pkill -f "node main.js" diff --git a/releases/wekan-snap-help.sh b/releases/wekan-snap-help.sh new file mode 100755 index 00000000..cbeb7426 --- /dev/null +++ b/releases/wekan-snap-help.sh @@ -0,0 +1 @@ +wekan.help | less diff --git a/start-wekan.bat b/start-wekan.bat new file mode 100644 index 00000000..019e3863 --- /dev/null +++ b/start-wekan.bat @@ -0,0 +1,8 @@ +SET MONGO_URL=mongodb://127.0.0.1:27017/wekan +SET ROOT_URL=http://127.0.0.1:2000/ +SET MAIL_URL=smtp://user:pass@mailserver.example.com:25/ +SET MAIL_FROM=admin@example.com +SET PORT=2000 +SET WITH_API=true +cd .build\bundle +node main.js
\ No newline at end of file diff --git a/start-wekan.sh b/start-wekan.sh new file mode 100755 index 00000000..6006fb92 --- /dev/null +++ b/start-wekan.sh @@ -0,0 +1,23 @@ +# If you want to restart even on crash, uncomment while and done lines. + +#while true; do + cd ~/repos/wekan/.build/bundle + #export MONGO_URL='mongodb://127.0.0.1:27019/wekantest' + #export MONGO_URL='mongodb://127.0.0.1:27019/wekan' + export MONGO_URL='mongodb://127.0.0.1:27019/wekantest' + # Production: https://example.com/wekan + # Local: http://localhost:2000 + #export ipaddress=$(ifdata -pa eth0) + export ROOT_URL='http://localhost:2000' + # https://github.com/wekan/wekan/wiki/Troubleshooting-Mail + # https://github.com/wekan/wekan-mongodb/blob/master/docker-compose.yml + export MAIL_URL='smtp://user:pass@mailserver.example.com:25/' + # This is local port where Wekan Node.js runs, same as below on Caddyfile settings. + export WITH_API=true + export KADIRA_OPTIONS_ENDPOINT=http://127.0.0.1:11011 + export PORT=2000 + #export LDAP_ENABLE=true + node main.js + # & >> ~/repos/wekan.log + cd ~/repos +#done diff --git a/status-wekan.sh b/status-wekan.sh new file mode 100755 index 00000000..2b815f4a --- /dev/null +++ b/status-wekan.sh @@ -0,0 +1,5 @@ +echo -e "\nWekan node.js:" +ps aux | grep "node main.js" | grep -v grep +echo -e "\nWekan mongodb:" +ps aux | grep mongo | grep -v grep +echo -e "\nWekan logs are at /home/wekan/repos/wekan.log\n" diff --git a/stop-wekan.sh b/stop-wekan.sh new file mode 100755 index 00000000..a7adf03b --- /dev/null +++ b/stop-wekan.sh @@ -0,0 +1 @@ +pkill -f "node main.js" |