buildDev 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #!/bin/bash
  2. date=$(date +%Y%m%d)
  3. libraryCommit=$(curl https://api.github.com/repos/nextcloud/android-library/commits/master | jq .sha | sed s'/\"//g')
  4. # use current date for version code/name
  5. sed -i "/versionDev/,/\}/ s/versionCode .*/versionCode $date/" build.gradle
  6. sed -i "/versionDev/,/\}/ s/versionName .*/versionName \"$date\"/" build.gradle
  7. # change library
  8. sed -i s"#androidLibraryVersion.*#androidLibraryVersion =\"$libraryCommit\"#" build.gradle
  9. # build signed apk
  10. ./gradlew assembleVersionDevRelease >> /tmp/dev.log 2>&1
  11. if [ $? != 0 ] ; then
  12. echo "Build error!"
  13. exit 1
  14. fi
  15. # sign
  16. mkdir -p ~/apks
  17. source ~/.gradle/devVersionSecrets
  18. /home/nextcloud/bin/apksigner sign --ks-pass env:VERSION_DEV_STORE_PASSWORD \
  19. --key-pass env:VERSION_DEV_KEY_PASSWORD \
  20. --ks $VERSION_DEV_STORE_FILE \
  21. --out ~/apks/nextcloud-dev-$date.apk \
  22. ./build/outputs/apk/versionDev/release/versionDev-release-$date.apk
  23. # use the current date
  24. echo $date > ~/apks/latest
  25. ln -s nextcloud-dev-$date.apk latest.apk
  26. mv latest.apk ~/apks/
  27. # remove all but the latest 5 apks
  28. /bin/ls -t ~/apks/*.apk | awk 'NR>6' | xargs rm -f
  29. lastBuildTime=$(date --date="$(git log -1 --format=%ai $(git tag | grep dev | tail -n1))" +%s)
  30. # Show only the commit subject in the changelog and filter out:
  31. # * Merges
  32. # * Dependabot commits
  33. # * Commits touching only non-user-facing stuff like tests
  34. # * Version bump commits
  35. changelog=$(git log --no-merges --after=$lastBuildTime --invert-grep --author=dependabot --pretty='format:%s' -- ':!src/androidTest' ':!.*' ':!scripts/analysis' | grep -vE '^daily dev [[:digit:]]{8}$')
  36. # Make Transifex updates have a nicer description
  37. if echo "$changelog" | grep -q 'tx-robot'; then
  38. changelog=$(echo "$changelog" | grep -v 'tx-robot')
  39. # This is a funky bashism - preceding a single-quote string with $ lets you put escape chars in it
  40. changelog="${changelog}"$'\nUpdate translations'
  41. fi
  42. libraryCommit=$(curl https://api.github.com/repos/nextcloud/android-library/commits/master | jq .sha | sed s'/\"//g')
  43. # Check if the library was updated
  44. if ! grep -q libraryCommit build.gradle; then
  45. changelog="${changelog}"$'\nUpdate Nextcloud Android library'
  46. fi
  47. # Collapse dependency updates into a single "Update dependencies" entry
  48. if git log --after=$lastBuildTime --pretty='format:%an' | grep -q dependabot; then
  49. changelog="${changelog}"$'\nUpdate 3rd-party dependencies'
  50. fi
  51. # changelog
  52. echo "$changelog" > src/versionDev/fastlane/metadata/android/en-US/changelogs/$date.txt
  53. git add .
  54. git commit -m "daily dev $date" -m "$changelog"
  55. git push
  56. git tag dev-$date
  57. git push origin dev-$date