diff --git a/.gitmodules b/.gitmodules index eea022faf7a5579b914794e8fed7fd293f2fb200..41c9e6de1179efea291dbe69d96b1d839882f2ab 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "dist/desktop"] path = dist/desktop url = git@git.duniter.org:clients/cesium-grp/cesium-desktop.git -[submodule "platforms/android"] - path = platforms/android +[submodule "dist/android/sources"] + path = dist/android/sources url = git@git.duniter.org:clients/cesium-grp/cesium-android.git diff --git a/app/config.json b/app/config.json index ae0671c9d152c7379fb228d7553cb5cb6eed8ddb..6a5dc3dd84a88e72b5488bb964aebbacf1a06e03 100644 --- a/app/config.json +++ b/app/config.json @@ -67,7 +67,7 @@ "port": 443 }, { - "host": "g1v1.p2P.legal", + "host": "g1v1.p2p.legal", "port": 443 } ], diff --git a/dist/android/sources b/dist/android/sources new file mode 160000 index 0000000000000000000000000000000000000000..bd92e40dd32fbf30d3d3428c7b2ef469098ed66f --- /dev/null +++ b/dist/android/sources @@ -0,0 +1 @@ +Subproject commit bd92e40dd32fbf30d3d3428c7b2ef469098ed66f diff --git a/dist/desktop b/dist/desktop index e5b6b4baad35456b9a0a39cd9f875e308fb9bad7..ae5f10132376fdd9789db506baa634864b89a19e 160000 --- a/dist/desktop +++ b/dist/desktop @@ -1 +1 @@ -Subproject commit e5b6b4baad35456b9a0a39cd9f875e308fb9bad7 +Subproject commit ae5f10132376fdd9789db506baa634864b89a19e diff --git a/scripts/env-global.sh b/scripts/env-global.sh index 4da919fdf5668ae67f73604918ec2153c335b61d..c66c6aebaefb307ee4b8b786b7c3f6b2f41cfd6e 100755 --- a/scripts/env-global.sh +++ b/scripts/env-global.sh @@ -39,7 +39,8 @@ ANDROID_OUTPUT_MIN_SDK_VERSION=22 # Used by release-android-sign.sh ANDROID_OUTPUT_MAX_SDK_VERSION=34 # Used by release-android-sign.sh DIST_WEB=${PROJECT_DIR}/dist/web/build -DIST_ANDROID=${PROJECT_DIR}/dist/android +DIST_ANDROID=${PROJECT_DIR}/dist/android/build # Where APK are stored +SOURCES_ANDROID=${PROJECT_DIR}/dist/android/sources # Where git cesium-android is checkout # Addons Mozilla Web extension ID WEB_EXT_ID=${WEB_EXT_ID:-"{6f9922f7-a054-4609-94ce-d269993246a5}"} diff --git a/scripts/release-android-sign.sh b/scripts/release-android-sign.sh index e21efa9e66c20e6c92b91d58976c7f10a293f2e0..7ea9f22602595ee7e269c793fe35b46b4bddcf54 100755 --- a/scripts/release-android-sign.sh +++ b/scripts/release-android-sign.sh @@ -16,9 +16,9 @@ KEYSTORE_PWD= . ${PROJECT_DIR}/scripts/env-android.sh [[ $? -ne 0 ]] && exit 1 -APK_SIGNED_FILE=${ANDROID_OUTPUT_APK_RELEASE}/${ANDROID_OUTPUT_APK_PREFIX}-release-signed.apk +APK_SIGNED_FILE=${APK_SIGNED_FILE:-"${ANDROID_OUTPUT_APK_RELEASE}/${ANDROID_OUTPUT_APK_PREFIX}-release-signed.apk"} APK_UNSIGNED_FILE=${ANDROID_OUTPUT_APK_RELEASE}/${ANDROID_OUTPUT_APK_PREFIX}-release-unsigned.apk -APK_FILE_ALTERNATIVE=${ANDROID_OUTPUT_APK_RELEASE}/${ANDROID_OUTPUT_APK_PREFIX}-release.apk +APK_UNSIGNED_FILE_ALTERNATIVE=${ANDROID_OUTPUT_APK_RELEASE}/${ANDROID_OUTPUT_APK_PREFIX}-release.apk cd ${PROJECT_DIR} @@ -30,11 +30,11 @@ if [[ ! -f "${KEYSTORE_FILE}" ]]; then fi if [[ ! -f "${APK_UNSIGNED_FILE}" ]]; then # Check in an alternative path (e.g. Android default signed file) - if [[ ! -f "${APK_FILE_ALTERNATIVE}" ]]; then + if [[ ! -f "${APK_UNSIGNED_FILE_ALTERNATIVE}" ]]; then echo "ERROR: Unsigned APK file not found: ${APK_UNSIGNED_FILE}" exit 1 fi - APK_UNSIGNED_FILE=${APK_FILE_ALTERNATIVE} + APK_UNSIGNED_FILE=${APK_UNSIGNED_FILE_ALTERNATIVE} fi echo "--- Signing Android APK..." @@ -78,5 +78,4 @@ echo "" export APK_SIGNED_FILE echo "--- Successfully generated signed APK at: ${APK_SIGNED_FILE}" -echo "" exit 0 diff --git a/scripts/release-android-sources.sh b/scripts/release-android-sources.sh index db3ec392b2bd3a1b51aa6d0b68403c8b52ff5f9e..d72de2bf7f49abb5a32893292c76fb2edc81ed83 100755 --- a/scripts/release-android-sources.sh +++ b/scripts/release-android-sources.sh @@ -7,22 +7,58 @@ if [[ "_" == "_${PROJECT_DIR}" ]]; then export PROJECT_DIR fi; + +### Get version to release cd ${PROJECT_DIR} +current=$(grep -m1 -P "version\": \"\d+.\d+.\d+(-\w+[-0-9]*)?\"" package.json | grep -oP "\d+.\d+.\d+(-\w+[-0-9]*)?") +if [[ "_$current" == "_" ]]; then + echo " - Make sure the file 'package.json' exists and is readable." + echo " - Check version format is: x.y.z (x and y should be an integer)" + exit 1 +fi # Preparing the environment source ${PROJECT_DIR}/scripts/env-global.sh [[ $? -ne 0 ]] && exit 1 -# Commit android project -cd ${PROJECT_DIR}/platforms/android || exit 1 -git reset HEAD -git add -A -git commit -m "v$1" -git tag -f -a "v$1" -m "Release v$1" -# Push the tag -git push -f origin "v$1" -# Push the master branch -git push -f origin -if [[ $? -ne 0 ]]; then - echo "ERROR: cannot push platform/android project ! Continue anyway..." +# Make sure to checkout the source project +if ! test -d "${SOURCES_ANDROID}"; then + echo "-- Checkout submodules (dist/android/sources) ..." + cd "${PROJECT_DIR}" + git submodule init && git submodule sync && git submodule update --remote --merge + if ! test $? == 0; then + echo "ERROR: Unable to sync git submodule. Will not be able commit android sources !" + #exit 1 + else + echo "-- Checkout submodules (dist/android/sources) [OK]" + fi +fi + +if test -d "${SOURCES_ANDROID}"; then + + # Revert changes in the Android sources project + cd ${SOURCES_ANDROID} || exit 1 + git fetch && git reset --hard --merge HEAD + + # Update sources, from platforms/android + echo "--- Copy Android sources from 'platforms/android' to '${SOURCES_ANDROID}' ..." + rsync -rlptgocq --exclude=.* --exclude=build --exclude=release-signing.* --exclude=*.keystore --delete --force "${PROJECT_DIR}/platforms/android/" "${SOURCES_ANDROID}/" + + echo "--- Copy Android sources [OK] ..." + echo "" + + echo "--- Git push Android sources, and tag as 'v$current'..." + cd ${SOURCES_ANDROID} || exit 1 + git add -A + git commit -a -m "v$current" + git tag -f -a "v$current" -m "Release v$current" + # Push the tag + git push -f origin "v$current" + # Push the master branch + git push -f origin + if [[ $? -ne 0 ]]; then + echo "ERROR: cannot push Android sources at '${SOURCES_ANDROID}' ! Continue anyway..." + else + echo "--- Git push Android sources, and tag [OK]" + fi fi diff --git a/scripts/release-android.sh b/scripts/release-android.sh index c75b88845c23400efec6c402737e56c7630769cd..f4a0cc4c46f18ae411605054ac318361baa0b5fd 100755 --- a/scripts/release-android.sh +++ b/scripts/release-android.sh @@ -37,6 +37,19 @@ echo "" # Sign APK file cd ${PROJECT_DIR}/scripts ./release-android-sign.sh -[[ $? -ne 0 ]] && exit 1 -cd ${PROJECT_DIR} +# Check signed APK exists +if [[ ! -f "${APK_SIGNED_FILE}" ]]; then + echo "Missing signed APK file at: ${APK_SIGNED_FILE}" + exit 1 +fi + +# Copy signed APK to 'dist/android/build' +echo "" +echo "--- Copying Android APK to '${DIST_ANDROID}'..." +APK_BASENAME="${PROJECT_NAME}-v${current}-android.apk" +APK_FINAL_FILE="${DIST_ANDROID}/${APK_BASENAME}" +mkdir -p ${DIST_ANDROID} +cp -f "${APK_SIGNED_FILE}" "${DIST_ANDROID}/${APK_BASENAME}" +echo "--- Copying Android APK [OK]" +echo "" diff --git a/scripts/release-desktop.sh b/scripts/release-desktop.sh index 2b5732a435fb4c765cdb9b8e59b78160fbaea26a..1d251b9bacda19b0bf892423217a2bf353d0bdf5 100755 --- a/scripts/release-desktop.sh +++ b/scripts/release-desktop.sh @@ -22,7 +22,7 @@ then fi ### Get version to release -current=$(grep -P "version\": \"\d+.\d+.\d+(-?\w*)" package.json | grep -m 1 -oP "\d+.\d+.\d+(-?\w*)") +current=$(grep -P "version\": \"\d+.\d+.\d+(-\w+[-0-9]*)?\"" package.json | grep -m 1 -oP "\d+.\d+.\d+(-\w+[-0-9]*)?") if [[ "_$current" == "_" ]]; then echo "Unable to read the current version in 'package.json'. Please check version format is: x.y.z (x and y should be an integer)." exit 1; diff --git a/scripts/release-sign-extension.sh b/scripts/release-sign-extension.sh index 8b6bb42e20cca3e6450f3e45515f39a3f1723e79..b46535da2cdc542e10765b5a5c843a0a2a453e6d 100755 --- a/scripts/release-sign-extension.sh +++ b/scripts/release-sign-extension.sh @@ -20,7 +20,7 @@ then fi ### Get version to release -current=$(grep -m 1 -oP "version\": \"\d+.\d+.\d+(-\w+[0-9]*)?" package.json | grep -m 1 -oP "\d+.\d+.\d+(-\w+[0-9]*)?") +current=$(grep -m 1 -oP "version\": \"\d+.\d+.\d+(-\w+[-0-9]*)?\"" package.json | grep -m 1 -oP "\d+.\d+.\d+(-\w+[-0-9]*)?") if [[ "_$current" == "_" ]]; then echo "Unable to read the current version in 'package.json'. Please check version format is: x.y.z (x and y should be an integer)." exit 1; diff --git a/scripts/release-to-github.sh b/scripts/release-to-github.sh index a007963318f2232ae9b3bf93e8993f7fbe3769ee..40f3d1f4479c657a4df2622668d1f755200ef42a 100755 --- a/scripts/release-to-github.sh +++ b/scripts/release-to-github.sh @@ -20,7 +20,7 @@ then fi ### Get version to release -current=$(grep -m1 -P "version\": \"\d+.\d+.\d+(-\w+[0-9]*)?" package.json | grep -oP "\d+.\d+.\d+(-\w+[0-9]*)?") +current=$(grep -m1 -P "version\": \"\d+.\d+.\d+(-\w+[-0-9]*)?\"" package.json | grep -oP "\d+.\d+.\d+(-\w+[-0-9]*)?") if [[ "_$current" == "_" ]]; then echo " - Make sure the file 'package.json' exists and is readable." echo " - Check version format is: x.y.z (x and y should be an integer)" @@ -160,18 +160,14 @@ fi # Upload Android APK file APK_BASENAME="${PROJECT_NAME}-v${current}-android.apk" -APK_SIGNED_FILE="${ANDROID_OUTPUT_APK_RELEASE}/${ANDROID_OUTPUT_APK_PREFIX}-release-signed.apk" -if [[ -f "${APK_SIGNED_FILE}" ]]; then - # Copy to dist/android - mkdir -p ${DIST_ANDROID} - cp -f "${APK_SIGNED_FILE}" "${DIST_ANDROID}/${APK_BASENAME}" - - result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: application/vnd.android.package-archive' -T "${APK_SIGNED_FILE}" "${upload_url}?name=${APK_BASENAME}") +APK_FILE="${DIST_ANDROID}/${APK_BASENAME}" +if [[ -f "${APK_FILE}" ]]; then + result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: application/vnd.android.package-archive' -T "${APK_FILE}" "${upload_url}?name=${APK_BASENAME}") browser_download_url=$(echo "$result" | grep -P "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "\"browser_download_url\":[ ]?\"[^\"]+" | grep -oP "https://[A-Za-z0-9/.-]+") - APK_SHA256=$(sha256sum "${APK_SIGNED_FILE}" | sed 's/ /\n/gi' | head -n 1) + APK_SHA256=$(sha256sum "${APK_FILE}" | sed 's/ /\n/gi' | head -n 1) echo " - ${browser_download_url} | SHA256 Checksum: ${APK_SHA256}" - echo "${APK_SHA256} ${APK_BASENAME}" > "${APK_SIGNED_FILE}.sha256" - result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: text/plain' -T "${APK_SIGNED_FILE}.sha256" "${upload_url}?name=${APK_BASENAME}.sha256") + echo "${APK_SHA256} ${APK_BASENAME}" > "${APK_FILE}.sha256" + result=$(curl -s -H ''"$GITHUT_AUTH"'' -H 'Content-Type: text/plain' -T "${APK_FILE}.sha256" "${upload_url}?name=${APK_BASENAME}.sha256") else echo "- ERROR: Android release (APK) not found! Skipping." missing_file=true diff --git a/scripts/release.sh b/scripts/release.sh index 47c202e11e6ddfb3722d4f5ec9a11ea00cb80a4f..eccc9d01f4650b07284ef5659e8f1cde7643e463 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -18,7 +18,7 @@ then fi ### Get current version (package.json) -current=$(grep -m1 -P "version\": \"\d+.\d+.\d+(-\w+[0-9]*)?" package.json | grep -oP "\d+.\d+.\d+(-\w+[0-9]*)?") +current=$(grep -m1 -P "version\": \"\d+.\d+.\d+(-\w+[-0-9]*)?\"" package.json | grep -oP "\d+.\d+.\d+(-\w+[-0-9]*)?") if [[ "_$current" == "_" ]]; then echo "Unable to read the current version in 'package.json'. Please check version format is: x.y.z (x and y should be an integer)." exit 1; @@ -34,7 +34,7 @@ fi echo "Current Android version: $currentAndroid" # Check version format -if [[ ! $2 =~ ^[0-9]+.[0-9]+.[0-9]+(-(alpha|beta|rc)[-0-9]*)?$ || ! $3 =~ ^[0-9]+$ ]]; then +if [[ ! $2 =~ ^[0-9]+.[0-9]+.[0-9]+(-[a-z]+[-0-9]*)?$ || ! $3 =~ ^[0-9]+$ ]]; then echo "Wrong version format" echo "Usage:" echo " > ./release.sh [pre|rel] <version> <android-version> <release_description>" @@ -53,16 +53,16 @@ case "$1" in rel|pre) # Change the version in files: 'package.json' and 'config.xml' sed -i "s/version\": \"$current\"/version\": \"$2\"/g" package.json - currentConfigXmlVersion=$(grep -m 1 -oP "version=\"\d+.\d+.\d+(-\w+[0-9]*)?\"" config.xml | grep -oP "\d+.\d+.\d+(-\w+[0-9]*)?") + currentConfigXmlVersion=$(grep -m 1 -oP "version=\"\d+.\d+.\d+(-\w+[-0-9]*)?\"" config.xml | grep -oP "\d+.\d+.\d+(-\w+[-0-9]*)?") sed -i "s/ version=\"$currentConfigXmlVersion\"/ version=\"$2\"/g" config.xml sed -i "s/ android-versionCode=\"$currentAndroid\"/ android-versionCode=\"$3\"/g" config.xml # Change version in file: 'www/manifest.json' - currentManifestJsonVersion=$(grep -m 1 -oP "version\": \"\d+.\d+.\d+(-\w+[0-9]*)?\"" www/manifest.json | grep -oP "\d+.\d+.\d+(-\w+[0-9]*)?") + currentManifestJsonVersion=$(grep -m 1 -oP "version\": \"\d+.\d+.\d+(-\w+[-0-9]*)?\"" www/manifest.json | grep -oP "\d+.\d+.\d+(-\w+[-0-9]*)?") sed -i "s/version\": \"$currentManifestJsonVersion\"/version\": \"$2\"/g" www/manifest.json # Change version in file: 'resources/web-ext/manifest.json' - currentExtManifestJsonVersion=$(grep -m 1 -oP "version\": \"\d+.\d+.\d+(-\w+[0-9]*)?\"" resources/web-ext/manifest.json | grep -oP "\d+.\d+.\d+(-\w+[0-9]*)?") + currentExtManifestJsonVersion=$(grep -m 1 -oP "version\": \"\d+.\d+.\d+(-\w+[-0-9]*)?\"" resources/web-ext/manifest.json | grep -oP "\d+.\d+.\d+(-\w+[-0-9]*)?") sed -i "s/version\": \"$currentExtManifestJsonVersion\"/version\": \"$2\"/g" resources/web-ext/manifest.json # Bump the install.sh @@ -92,11 +92,7 @@ echo "----------------------------------" cd ${PROJECT_DIR}/scripts || exit 1 ./release-android.sh #[[ $? -ne 0 ]] && exit 1 -APK_SIGNED_FILE="${ANDROID_OUTPUT_APK_RELEASE}/${ANDROID_OUTPUT_APK_PREFIX}-release-signed.apk" -if [[ ! -f "${APK_SIGNED_FILE}" ]]; then - echo "Missing signed APK file at: ${APK_SIGNED_FILE}" - exit 1 -fi + echo "----------------------------------" echo "- Building web and extension artifacts..."