From 28317f38ef5e585ef2ac835a082e6c1a04b59216 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kai=20L=C3=BCke?= Date: Wed, 18 Sep 2019 23:28:47 +0200 Subject: [PATCH] Revert "transfer.sh: Drop support for boards other than amd64-usr" This reverts commit 32863264fda3a7313ce1b9a63142b39334ff44de. NOTE: devsign/sign now require the board as additional parameter. --- signing/transfer.sh | 84 ++++++++++++++++++++++++++++----------------- 1 file changed, 53 insertions(+), 31 deletions(-) diff --git a/signing/transfer.sh b/signing/transfer.sh index 387aec5eac..361146c773 100755 --- a/signing/transfer.sh +++ b/signing/transfer.sh @@ -2,8 +2,9 @@ set -eux -APPID=e96281a6-d1af-4bde-9a0a-97b76e56dc57 -BOARD=amd64-usr +declare -A APPID +APPID[amd64-usr]=e96281a6-d1af-4bde-9a0a-97b76e56dc57 +APPID[arm64-usr]=103867da-e3a2-4c92-b0b3-7fbd7f7d8b71 declare -A RELEASE_CHANNEL RELEASE_CHANNEL[alpha]=Alpha @@ -13,9 +14,10 @@ RELEASE_CHANNEL[stable]=Stable download() { local channel="$1" local version="$2" + local board="$3" - local gs="gs://builds.release.core-os.net/${channel}/boards/${BOARD}/${version}" - local dir="${BASEDIR}/${BOARD}/${version}" + local gs="gs://builds.release.core-os.net/${channel}/boards/${board}/${version}" + local dir="${BASEDIR}/${board}/${version}" mkdir -p "${dir}" pushd "${dir}" >/dev/null @@ -31,7 +33,7 @@ download() { local torcx_base="gs://builds.release.core-os.net/embargoed/devfiles/torcx/manifests/${board}/${version}" if ! gsutil -q stat "${torcx_base}/torcx_manifest.json"; then # Non-embargoed release - local torcx_base="gs://builds.developer.core-os.net/torcx/manifests/${board}/${version}" + local torcx_base="gs://builds.developer.core-os.net/torcx/manifests/${BOARD}/${version}" fi gsutil -m cp \ "${torcx_base}/torcx_manifest.json" \ @@ -49,6 +51,7 @@ download() { devsign() { local channel="$1" local version="$2" + local board="$3" "$(dirname $0)/../core_dev_sign_update" \ --data_dir "${BASEDIR}" \ @@ -62,17 +65,19 @@ devsign() { sign() { local channel="$1" local version="$2" + local board="$3" "$(dirname $0)/sign.sh" \ - "${BASEDIR}/${BOARD}/${version}" \ - "${SIGDIR}/${BOARD}/${version}" + "${BASEDIR}/${board}/${version}" \ + "${SIGDIR}/${board}/${version}" } upload() { local channel="$1" local version="$2" + local board="$3" - local dir="${BASEDIR}/${BOARD}/${version}" + local dir="${BASEDIR}/${board}/${version}" local payload="${dir}/flatcar_production_update.gz" local torcx_manifest="${dir}/torcx_manifest.json" local torcx_manifest_sig="${dir}/torcx_manifest.json.asc" @@ -87,8 +92,8 @@ upload() { "$(dirname $0)/../core_roller_upload" \ --user="${ROLLER_USERNAME}" \ --api_key="${ROLLER_API_KEY}" \ - --app_id="${APPID}" \ - --board="${BOARD}" \ + --app_id="${APPID[${board}]}" \ + --board="${board}" \ --version="${version}" \ --payload="${payload}" @@ -96,7 +101,7 @@ upload() { gsutil cp \ "${torcx_manifest}" \ "${torcx_manifest_sig}" \ - "gs://coreos-tectonic-torcx/manifests/${BOARD}/${version}/" + "gs://coreos-tectonic-torcx/manifests/${board}/${version}/" # Update version in a canary channel if one is defined. local -n canary_channel="ROLLER_CANARY_CHANNEL_${channel^^}" @@ -106,7 +111,7 @@ upload() { --user="${ROLLER_USERNAME}" \ --key="${ROLLER_API_KEY}" \ channel update \ - --app-id="${APPID}" \ + --app-id="${APPID[${board}]}" \ --channel="${canary_channel}" \ --version="${version}" fi @@ -115,16 +120,17 @@ upload() { ready() { local channel="$1" local version="$2" + local board="$3" # setting the percent will deactivate (not delete) any existing rollouts for # this specific group. - echo "Rollout set to 0%" + echo "Rollout set to 0% for ${board}" updateservicectl \ --server="https://public.update.core-os.net" \ --user="${ROLLER_USERNAME}" \ --key="${ROLLER_API_KEY}" \ group percent \ - --app-id="${APPID}" \ + --app-id="${APPID[${board}]}" \ --group-id="${channel}" \ --update-percent=0 @@ -135,7 +141,7 @@ ready() { --user="${ROLLER_USERNAME}" \ --key="${ROLLER_API_KEY}" \ channel update \ - --app-id="${APPID}" \ + --app-id="${APPID[${board}]}" \ --channel="${RELEASE_CHANNEL[${channel}]}" \ --publish=true \ --version="${version}" @@ -144,26 +150,40 @@ ready() { roll() { local channel="$1" local hours="$2" + local board="$3" local seconds=$((${hours} * 3600)) - # creating a new rollout deletes any existing rollout for this group and - # automatically activates the new one. - echo "Creating linear rollout that will get to 100% in ${hours}h" - updateservicectl \ - --server="https://public.update.core-os.net" \ - --user="${ROLLER_USERNAME}" \ - --key="${ROLLER_API_KEY}" \ - rollout create linear \ - --app-id="${APPID}" \ - --group-id="${channel}" \ - --duration="${seconds}" \ - --frame-size="60" + # Only ramp rollouts on AMD64; ARM64 is too small + if [[ "$board" = "arm64-usr" ]]; then + echo "Setting rollout for arm64-usr to 100%" + updateservicectl \ + --server="https://public.update.core-os.net" \ + --user="${ROLLER_USERNAME}" \ + --key="${ROLLER_API_KEY}" \ + group percent \ + --app-id="${APPID[${board}]}" \ + --group-id="${channel}" \ + --update-percent=100 + else + # creating a new rollout deletes any existing rollout for this group and + # automatically activates the new one. + echo "Creating linear rollout for ${board} that will get to 100% in ${hours}h" + updateservicectl \ + --server="https://public.update.core-os.net" \ + --user="${ROLLER_USERNAME}" \ + --key="${ROLLER_API_KEY}" \ + rollout create linear \ + --app-id="${APPID[${board}]}" \ + --group-id="${channel}" \ + --duration="${seconds}" \ + --frame-size="60" + fi } usage() { echo "Usage: $0 {download|upload} [{-a|-b|-s} ]..." >&2 - echo "Usage: $0 {devsign|sign} [{-a|-b|-s} ]..." >&2 + echo "Usage: $0 {devsign|sign} [{-a|-b|-s} ]..." >&2 echo "Usage: $0 ready [{-a|-b|-s} ]..." >&2 echo "Usage: $0 roll [{-a|-b|-s} ]..." >&2 exit 1 @@ -226,13 +246,15 @@ while [[ $# > 0 ]]; do case "${c}" in -a) - $CMD "alpha" "${v}" + $CMD "alpha" "${v}" "amd64-usr" + $CMD "alpha" "${v}" "arm64-usr" ;; -b) - $CMD "beta" "${v}" + $CMD "beta" "${v}" "amd64-usr" + $CMD "beta" "${v}" "arm64-usr" ;; -s) - $CMD "stable" "${v}" + $CMD "stable" "${v}" "amd64-usr" ;; *) usage