From f1fff391e5c512b5838d68bd9de14238a68d9e49 Mon Sep 17 00:00:00 2001 From: Mossroy Date: Thu, 6 Apr 2017 15:41:39 +0200 Subject: [PATCH] Scripts to package the extensions for Firefox and Chrome. Can be run locally or on Travis --- .gitignore | 7 ++++ .travis.yml | 21 ++++++---- manifest.json | 8 +++- package_app.sh | 1 - push_to_gh_pages.sh | 1 - scripts/create_all_packages.sh | 57 +++++++++++++++++++++++++++ scripts/package_chrome_extension.sh | 11 ++++++ scripts/package_firefox_extension.sh | 18 +++++++++ scripts/package_firefoxos_app.sh | 6 +++ scripts/push_to_gh_pages.sh | 4 ++ scripts/secret_files.tar.gz.enc | Bin 0 -> 3920 bytes scripts/setup_travis_env.sh | 8 ++++ www/index.html | 2 +- 13 files changed, 133 insertions(+), 11 deletions(-) delete mode 100755 package_app.sh delete mode 100755 push_to_gh_pages.sh create mode 100755 scripts/create_all_packages.sh create mode 100755 scripts/package_chrome_extension.sh create mode 100755 scripts/package_firefox_extension.sh create mode 100755 scripts/package_firefoxos_app.sh create mode 100755 scripts/push_to_gh_pages.sh create mode 100644 scripts/secret_files.tar.gz.enc create mode 100755 scripts/setup_travis_env.sh diff --git a/.gitignore b/.gitignore index 9c54d3f7..5bd7c912 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,10 @@ build/config/buildinfo.properties www-built www-ghdeploy +/node_modules/ +/tmp/ +/scripts/kiwix-*.pem +/scripts/set_secret_environment_variables.sh +/build/ +/scripts/travisci_builder_id_key +/scripts/secret_files.tar.gz \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 989d4bc5..4e08f9a3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,13 +1,20 @@ language: node_js +node_js: + - "node" addons: sauce_connect: - username: "kiwix" + username: kiwix jwt: - secure: "nOIQrCbKeAtX7GKqbW2O+Rhf4Fpg44Fjhk+3YHkFT6+663ATNRMZLDMqxrQURaf2CzbnTNzWDG8PWsI/nljA9tR4UEAt13xLEDpgF2lllfxP+DxdJdVH2tnPrpPautH0be1lzYD09n3+brdx2QoggA6/BUnxpS3nWaHK9e+lMGnUODB+Ybw8c3WwJha9zHPQ8h9LsFXj1Uc15K6rbUR8Dkdbh0P+prGnb8q02oNRTKBw5njIBJcZ111QuO/9FBo41+TAbQV619ezoe3yeUsVaaSNSdDYNr7Pkf+jtPGA+t1OgBJMSgz/KAydi6TNTeCb/vVtFS26TfJ+FBwJovDNXUgWHo0mrQjbyJ+WWCYjNCLTWZWqdEDzLFJ5tOO6by+S3ZBplLo+6r0pCTcv9/VLML3Kl/0g06aKIF65askmIGBVMafkRX/QYuXTKHGHduxzhUNO2ENgU2A3XihWEf3kbygQUWUpBJ9ktcjhdbM5ZdIzRorcsHOOzCm6qex+l1zJQb8V5CK2B3VqCYeiq/uE0R44ZNSxfpbUKkAGcGokY5B5lPVMWVzAuNyuXdGGV3XFwuYQULlPJLN8OKQjF24f8IOcKsLHu+k06blY8SiE2o8tI9r2IDqGY5QjrLaW4OAytwsAmK2cYqTZmxk8IwQ6UyyChEpAItnlJS84Wuya5I8=" - + secure: nOIQrCbKeAtX7GKqbW2O+Rhf4Fpg44Fjhk+3YHkFT6+663ATNRMZLDMqxrQURaf2CzbnTNzWDG8PWsI/nljA9tR4UEAt13xLEDpgF2lllfxP+DxdJdVH2tnPrpPautH0be1lzYD09n3+brdx2QoggA6/BUnxpS3nWaHK9e+lMGnUODB+Ybw8c3WwJha9zHPQ8h9LsFXj1Uc15K6rbUR8Dkdbh0P+prGnb8q02oNRTKBw5njIBJcZ111QuO/9FBo41+TAbQV619ezoe3yeUsVaaSNSdDYNr7Pkf+jtPGA+t1OgBJMSgz/KAydi6TNTeCb/vVtFS26TfJ+FBwJovDNXUgWHo0mrQjbyJ+WWCYjNCLTWZWqdEDzLFJ5tOO6by+S3ZBplLo+6r0pCTcv9/VLML3Kl/0g06aKIF65askmIGBVMafkRX/QYuXTKHGHduxzhUNO2ENgU2A3XihWEf3kbygQUWUpBJ9ktcjhdbM5ZdIzRorcsHOOzCm6qex+l1zJQb8V5CK2B3VqCYeiq/uE0R44ZNSxfpbUKkAGcGokY5B5lPVMWVzAuNyuXdGGV3XFwuYQULlPJLN8OKQjF24f8IOcKsLHu+k06blY8SiE2o8tI9r2IDqGY5QjrLaW4OAytwsAmK2cYqTZmxk8IwQ6UyyChEpAItnlJS84Wuya5I8= + ssh_known_hosts: download.kiwix.org before_script: - - npm install nightwatch http-server - - ./node_modules/http-server/bin/http-server . & + - npm install nightwatch http-server + - "./node_modules/http-server/bin/http-server . &" script: - - ./node_modules/nightwatch/bin/nightwatch -c nightwatch.js --env firefox - - pkill node + - "./node_modules/nightwatch/bin/nightwatch -c nightwatch.js --env firefox" + - pkill node +deploy: + provider: script + script: "./scripts/setup_travis_env.sh && DISPLAY=:99.0 ./scripts/create_all_packages.sh $TRAVIS_TAG" + on: + branch: master \ No newline at end of file diff --git a/manifest.json b/manifest.json index 31bcea9b..bb990148 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Kiwix", - "version": "2.0", + "version": "2.0-beta", "description": "Kiwix : offline wikipedia reader", @@ -26,6 +26,12 @@ }, "default_title": "Kiwix" }, + + "applications": { + "gecko": { + "id": "kiwix@kiwix.org" + } + }, "background": { "scripts": ["webextension/backgroundscript.js"] diff --git a/package_app.sh b/package_app.sh deleted file mode 100755 index cd25fc14..00000000 --- a/package_app.sh +++ /dev/null @@ -1 +0,0 @@ -zip -r kiwix.zip www manifest.webapp LICENSE-GPLv3.txt service-worker.js README.md diff --git a/push_to_gh_pages.sh b/push_to_gh_pages.sh deleted file mode 100755 index 4a43edd4..00000000 --- a/push_to_gh_pages.sh +++ /dev/null @@ -1 +0,0 @@ -git checkout gh-pages; git merge master; git push; git checkout master diff --git a/scripts/create_all_packages.sh b/scripts/create_all_packages.sh new file mode 100755 index 00000000..5f8ca043 --- /dev/null +++ b/scripts/create_all_packages.sh @@ -0,0 +1,57 @@ +#!/bin/bash +BASEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/.. +echo "BASEDIR is $BASEDIR" +cd $BASEDIR + +# Set the secret environment variables if available +# The file set_secret_environment_variables.sh should not be commited for security reasons +# It is only useful to run the scripts locally. +# Travis injects the same environment variables by itself +if [ -r "$BASEDIR/scripts/set_secret_environment_variables.sh" ]; then + . "$BASEDIR/scripts/set_secret_environment_variables.sh" +fi + +# Use the first argument as a version number, else use the Travis tag, else use the commit id +VERSION_TO_REPLACE="2\.0-beta" +VERSION_PREFIX="2.0.0" +if [ ! "$1zz" == "zz" ]; then + VERSION=$1 + echo "Packaging version $VERSION because it has been passed as an argument" +else + COMMIT_ID=$(git rev-parse --short HEAD) + VERSION="${VERSION_PREFIX}commit-${COMMIT_ID}" + echo "Packaging version $VERSION" +fi + +# Copy only the necessary files in a temporary directory +mkdir -p tmp +rm -rf tmp/* +cp -r www webextension manifest.json manifest.webapp LICENSE-GPLv3.txt service-worker.js README.md tmp/ + +# Replace the version number everywhere +# But Chrome would only accept a numeric version number : if it's not, we only use the prefix in manifest.json +regexpNumericVersion='^[0-9\.]+$' +if [[ $VERSION =~ $regexpNumericVersion ]] ; then + sed -i -e "s/$VERSION_TO_REPLACE/$VERSION/" tmp/manifest.json +else + sed -i -e "s/$VERSION_TO_REPLACE/$VERSION_PREFIX/" tmp/manifest.json +fi +sed -i -e "s/$VERSION_TO_REPLACE/$VERSION/" tmp/manifest.webapp +sed -i -e "s/$VERSION_TO_REPLACE/$VERSION/" tmp/www/index.html + +mkdir -p build +rm -rf build/* +# Package for Chromium/Chrome +scripts/package_chrome_extension.sh $VERSION +# Package for Firefox and Firefox OS +# We have to put the real version string inside the manifest.json (which Chrome might not have accepted) +# So we take the original manifest again, and replace the version inside it again +cp manifest.json tmp/ +sed -i -e "s/$VERSION_TO_REPLACE/$VERSION/" tmp/manifest.json +scripts/package_firefox_extension.sh $VERSION +scripts/package_firefoxos_app.sh $VERSION + +CURRENT_DATE=$(date +'%Y-%m-%d') +# Upload the files on download.kiwix.org +echo "Uploading the files on http://download.kiwix.org/nightly/$CURRENT_DATE/" +scp -r -p -i scripts/travisci_builder_id_key build/* nightlybot@download.kiwix.org:/var/www/download.kiwix.org/nightly/$CURRENT_DATE \ No newline at end of file diff --git a/scripts/package_chrome_extension.sh b/scripts/package_chrome_extension.sh new file mode 100755 index 00000000..15c65c5a --- /dev/null +++ b/scripts/package_chrome_extension.sh @@ -0,0 +1,11 @@ +#!/bin/bash +BASEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/.. +cd $BASEDIR +VERSION=$1 + +echo "Packaging unsigned Chrome extension, version $VERSION" +zip -r build/kiwix-chrome-unsigned-extension-$VERSION.zip www webextension manifest.json LICENSE-GPLv3.txt service-worker.js README.md +# Package the extension with Chromium +echo "Signing the extension for Chrome with a local Chromium, version $VERSION" +chromium-browser --no-sandbox --pack-extension=tmp --pack-extension-key=./scripts/kiwix-html5.pem +mv tmp.crx build/kiwix-chrome-signed-extension-$VERSION.crx diff --git a/scripts/package_firefox_extension.sh b/scripts/package_firefox_extension.sh new file mode 100755 index 00000000..1e3fb6f3 --- /dev/null +++ b/scripts/package_firefox_extension.sh @@ -0,0 +1,18 @@ +#!/bin/bash +BASEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/.. +cd $BASEDIR +VERSION=$1 + +# Install web-ext if it's not already installed +if [ ! -f node_modules/web-ext/bin/web-ext ]; then + npm install web-ext +fi + +cd tmp +echo "Packaging unsigned Firefox extension, version $VERSION" +zip -r ../build/kiwix-firefox-unsigned-extension-$VERSION.xpi www webextension manifest.json LICENSE-GPLv3.txt service-worker.js README.md + +# Sign the extension with the Mozilla API through web-ext +echo "Signing the extension for Firefox with Mozilla API, version $VERSION" +../node_modules/web-ext/bin/web-ext sign --api-key=${MOZILLA_API_KEY} --api-secret=${MOZILLA_API_SECRET} +mv web-ext-artifacts/*.xpi ../build/kiwix-firefox-signed-extension-$VERSION.xpi diff --git a/scripts/package_firefoxos_app.sh b/scripts/package_firefoxos_app.sh new file mode 100755 index 00000000..88318be3 --- /dev/null +++ b/scripts/package_firefoxos_app.sh @@ -0,0 +1,6 @@ +#!/bin/bash +BASEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/.. +cd $BASEDIR/tmp +VERSION=$1 +echo "Packaging unsigned Firefox OS application, version $VERSION" +zip -r ../build/kiwix-firefoxos-$VERSION.zip www manifest.webapp LICENSE-GPLv3.txt service-worker.js README.md diff --git a/scripts/push_to_gh_pages.sh b/scripts/push_to_gh_pages.sh new file mode 100755 index 00000000..2796b272 --- /dev/null +++ b/scripts/push_to_gh_pages.sh @@ -0,0 +1,4 @@ +#!/bin/bash +BASEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/.. +cd $BASEDIR/tmp +git checkout gh-pages; git merge master; git push; git checkout master \ No newline at end of file diff --git a/scripts/secret_files.tar.gz.enc b/scripts/secret_files.tar.gz.enc new file mode 100644 index 0000000000000000000000000000000000000000..49feeef34c7a79a434757ab37cd7aaa03e232987 GIT binary patch literal 3920 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 - Kiwix 2.0 beta + Kiwix 2.0-beta