Arthur She | 8c3dac2 | 2024-01-15 20:13:40 -0800 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | set -ex |
| 3 | |
| 4 | echo "########################################################################" |
| 5 | echo " Gerrit Environment" |
| 6 | env |grep '^GERRIT' |
| 7 | echo "########################################################################" |
| 8 | |
| 9 | RTD_WEBHOOK_URL="https://readthedocs.org/api/v2/webhook/trustedfirmware-a/87181/" |
Arthur She | c4b4b5e | 2024-02-09 21:28:27 -0800 | [diff] [blame] | 10 | RTD_VER_API="https://readthedocs.org/api/v3/projects/trustedfirmware-a/versions" |
Arthur She | 8c3dac2 | 2024-01-15 20:13:40 -0800 | [diff] [blame] | 11 | RTD_WEBHOOK_SECRET_KEY=${RTD_WEBHOOK_SECRET} |
| 12 | RTD_API_TOKEN=${RTD_API_TOKEN} |
| 13 | |
| 14 | new_tag="" |
| 15 | refname=${GERRIT_REFNAME##*/} |
| 16 | lts_branch=${refname} |
Paul Sokolovsky | 07bd095 | 2024-03-01 16:14:14 +0700 | [diff] [blame^] | 17 | if echo ${GERRIT_REFNAME} | grep -q "refs/tags/"; then |
| 18 | new_tag=${GERRIT_REFNAME#refs/tags/} |
| 19 | lts_branch=${refname%.*} |
| 20 | fi |
Arthur She | 8c3dac2 | 2024-01-15 20:13:40 -0800 | [diff] [blame] | 21 | |
| 22 | function activate_version() { |
| 23 | version=$1 |
Paul Sokolovsky | 980b3b8 | 2024-02-29 20:54:18 +0700 | [diff] [blame] | 24 | # Convert tag to ReadTheDocs version slug |
| 25 | version=$(echo ${version} | tr '[A-Z]/' '[a-z]-') |
Arthur She | c4b4b5e | 2024-02-09 21:28:27 -0800 | [diff] [blame] | 26 | max_retry_time=20 |
Arthur She | 8c3dac2 | 2024-01-15 20:13:40 -0800 | [diff] [blame] | 27 | retry=0 |
| 28 | |
Arthur She | c4b4b5e | 2024-02-09 21:28:27 -0800 | [diff] [blame] | 29 | ver_status=$(curl -s -H "Authorization: Token ${RTD_API_TOKEN}" ${RTD_VER_API}/${version}/ | \ |
| 30 | jq -r '.detail') |
Arthur She | 8c3dac2 | 2024-01-15 20:13:40 -0800 | [diff] [blame] | 31 | |
Arthur She | c4b4b5e | 2024-02-09 21:28:27 -0800 | [diff] [blame] | 32 | while [ "${ver_status}" == "Not found." ]; |
Arthur She | 8c3dac2 | 2024-01-15 20:13:40 -0800 | [diff] [blame] | 33 | do |
Arthur She | c4b4b5e | 2024-02-09 21:28:27 -0800 | [diff] [blame] | 34 | [ ${retry} -gt ${max_retry_time} ] && break |
| 35 | sleep 30 |
Arthur She | 8c3dac2 | 2024-01-15 20:13:40 -0800 | [diff] [blame] | 36 | retry=$((retry+1)) |
Arthur She | c4b4b5e | 2024-02-09 21:28:27 -0800 | [diff] [blame] | 37 | ver_status=$(curl -s -H "Authorization: Token ${RTD_API_TOKEN}" ${RTD_VER_API}/${version}/ | \ |
| 38 | jq -r '.detail') |
Arthur She | 8c3dac2 | 2024-01-15 20:13:40 -0800 | [diff] [blame] | 39 | done |
Arthur She | c4b4b5e | 2024-02-09 21:28:27 -0800 | [diff] [blame] | 40 | |
| 41 | if [ ${retry} -le ${max_retry_time} ]; then |
| 42 | echo "Active new version: ${version}" |
| 43 | curl -s -X PATCH -H "Content-Type: application/json" -H "Authorization: Token ${RTD_API_TOKEN}" \ |
| 44 | -d "{\"active\": true, \"hidden\": false}" ${RTD_VER_API}/${version}/ |
| 45 | else |
| 46 | echo "RTD can not find the version: ${version}" |
| 47 | exit 1 |
| 48 | fi |
Arthur She | 8c3dac2 | 2024-01-15 20:13:40 -0800 | [diff] [blame] | 49 | } |
| 50 | |
| 51 | echo "Notifying ReadTheDocs of changes on: ${lts_branch}" |
| 52 | build_trigger=$(curl -s -X POST -d "branches=${lts_branch}" -d "token=${RTD_WEBHOOK_SECRET_KEY}" ${RTD_WEBHOOK_URL} | jq .build_triggered) |
| 53 | if [ "${build_trigger}" = "false" ]; then |
Paul Sokolovsky | 92151ad | 2024-02-26 12:38:32 +0700 | [diff] [blame] | 54 | # The branch might be new and hasn't been known by RTD, or hasn't been activated, or both |
Arthur She | 4c341b2 | 2024-01-30 20:13:43 -0800 | [diff] [blame] | 55 | # we can trigger a build for the master branch to update all branches |
Paul Sokolovsky | 92151ad | 2024-02-26 12:38:32 +0700 | [diff] [blame] | 56 | echo "The branch ${lts_branch} is now! Activate and hide it!" |
Arthur She | 8c3dac2 | 2024-01-15 20:13:40 -0800 | [diff] [blame] | 57 | curl -s -X POST -d "branches=master" -d "token=${RTD_WEBHOOK_SECRET_KEY}" ${RTD_WEBHOOK_URL} |
| 58 | activate_version ${lts_branch} |
Arthur She | 4c341b2 | 2024-01-30 20:13:43 -0800 | [diff] [blame] | 59 | curl -s -X PATCH -H "Content-Type: application/json" -H "Authorization: Token ${RTD_API_TOKEN}" \ |
| 60 | -d "{\"hidden\": true}" ${RTD_VER_API}/${lts_branch}/ |
Arthur She | 8c3dac2 | 2024-01-15 20:13:40 -0800 | [diff] [blame] | 61 | fi |
| 62 | |
| 63 | # Triggered by a new tag |
| 64 | if [ -n "${new_tag}" ]; then |
| 65 | echo -e "\nNew release tag: ${new_tag}" |
| 66 | # Hide the current active and unhidden tags |
| 67 | old_tags=$(curl -s -H "Authorization: Token ${RTD_API_TOKEN}" "${RTD_VER_API}/?slug=${lts_branch}&type=tag&active=true" | \ |
Paul Sokolovsky | a313830 | 2024-02-27 18:51:47 +0700 | [diff] [blame] | 68 | jq -r '.results | map(select(.hidden == false) | .slug) | .[]') |
Arthur She | 8c3dac2 | 2024-01-15 20:13:40 -0800 | [diff] [blame] | 69 | for t in ${old_tags}; |
| 70 | do |
| 71 | echo "Hide old tag: ${t}" |
| 72 | curl -s -X PATCH -H "Content-Type: application/json" -H "Authorization: Token ${RTD_API_TOKEN}" \ |
Paul Sokolovsky | 92151ad | 2024-02-26 12:38:32 +0700 | [diff] [blame] | 73 | -d "{\"hidden\": true}" ${RTD_VER_API}/${t}/ |
Arthur She | 8c3dac2 | 2024-01-15 20:13:40 -0800 | [diff] [blame] | 74 | done |
| 75 | # Active the new version |
| 76 | echo "Active new version: ${new_tag}" |
| 77 | activate_version ${new_tag} |
| 78 | fi |
| 79 | |