Bug 1868136 - add support for mobile first-run experiments to periodic-updates scripts. r=releng-reviewers,gbrown DONTBUILD

Differential Revision: https://phabricator.services.mozilla.com/D196744
This commit is contained in:
Julien Cristau 2023-12-20 14:32:51 +00:00
parent 80d786a51f
commit f656db908e
3 changed files with 61 additions and 3 deletions

View file

@ -28,6 +28,10 @@ job-defaults:
by-project:
mozilla-(central|beta|esr.*): "1"
default: ""
DO_MOBILE_EXPERIMENTS:
by-project:
mozilla-central: "" # TODO: enable after firefox-android merge
default: ""
USE_MOZILLA_CENTRAL:
by-project:
mozilla-central: "1"
@ -66,5 +70,8 @@ jobs:
- name: 'public/build/remote-settings.diff'
path: '/home/worker/artifacts/remote-settings.diff'
type: file
- name: 'public/build/initial_experiments.diff'
path: '/home/worker/artifacts/initial_experiments.diff'
type: file
scopes:
- secrets:get:project/releng/gecko/build/level-{level}/arc-phabricator-token

View file

@ -42,6 +42,11 @@ then
PARAMS="${PARAMS} --suffix-list"
fi
if [ -n "${DO_MOBILE_EXPERIMENTS}" ]
then
PARAMS="${PARAMS} --mobile-experiments"
fi
if [ -n "${DONTBUILD}" ]
then
PARAMS="${PARAMS} -d"

View file

@ -14,7 +14,7 @@ Usage: $(basename "$0") [-p product]
# Use archive.m.o instead of the taskcluster index to get xpcshell
[--use-ftp-builds]
# One (or more) of the following actions must be specified.
--hsts | --hpkp | --remote-settings | --suffix-list
--hsts | --hpkp | --remote-settings | --suffix-list | --mobile-experiments
-b branch
EOF
@ -75,12 +75,19 @@ HG_SUFFIX_LOCAL="effective_tld_names.dat"
HG_SUFFIX_PATH="/netwerk/dns/${HG_SUFFIX_LOCAL}"
SUFFIX_LIST_UPDATED=false
DO_MOBILE_EXPERIMENTS=false
EXPERIMENTER_URL="https://experimenter.services.mozilla.com/api/v6/experiments-first-run/"
FENIX_INITIAL_EXPERIMENTS="mobile/android/fenix/app/src/main/res/raw/initial_experiments.json"
FOCUS_INITIAL_EXPERIMENTS="mobile/android/focus-android/app/src/main/res/raw/initial_experiments.json"
MOBILE_EXPERIMENTS_UPDATED=false
ARTIFACTS_DIR="${ARTIFACTS_DIR:-.}"
# Defaults
HSTS_DIFF_ARTIFACT="${ARTIFACTS_DIR}/${HSTS_DIFF_ARTIFACT:-"nsSTSPreloadList.diff"}"
HPKP_DIFF_ARTIFACT="${ARTIFACTS_DIR}/${HPKP_DIFF_ARTIFACT:-"StaticHPKPins.h.diff"}"
REMOTE_SETTINGS_DIFF_ARTIFACT="${ARTIFACTS_DIR}/${REMOTE_SETTINGS_DIFF_ARTIFACT:-"remote-settings.diff"}"
SUFFIX_LIST_DIFF_ARTIFACT="${ARTIFACTS_DIR}/${SUFFIX_LIST_DIFF_ARTIFACT:-"effective_tld_names.diff"}"
EXPERIMENTER_DIFF_ARTIFACT="${ARTIFACTS_DIR}/initial_experiments.diff"
# duplicate the functionality of taskcluster-lib-urls, but in bash..
queue_base="$TASKCLUSTER_ROOT_URL/api/queue/v1"
@ -387,6 +394,26 @@ function update_remote_settings_attachment() {
${WGET} -qO "${REMOTE_SETTINGS_OUTPUT}/${path_to_attachment}" "${ATTACHMENT_BASE_URL}${attachment_path_from_meta}"
}
function compare_mobile_experiments() {
echo "INFO ${WGET} ${EXPERIMENTER_URL}"
${WGET} -O experiments.json "${EXPERIMENTER_URL}"
${WGET} -O fenix-experiments-old.json "${HGREPO}/raw-file/default/${FENIX_INITIAL_EXPERIMENTS}"
${WGET} -O focus-experiments-old.json "${HGREPO}/raw-file/default/${FOCUS_INITIAL_EXPERIMENTS}"
# shellcheck disable=SC2016
${JQ} --arg APP_NAME fenix '{"data":map(select(.appName == $APP_NAME))}' < experiments.json > fenix-experiments-new.json
# shellcheck disable=SC2016
${JQ} --arg APP_NAME focus_android '{"data":map(select(.appName == $APP_NAME))}' < experiments.json > focus-experiments-new.json
( ${DIFF} fenix-experiments-old.json fenix-experiments-new.json; ${DIFF} focus-experiments-old.json focus-experiments-new.json ) > "${EXPERIMENTER_DIFF_ARTIFACT}"
if [ -s "${EXPERIMENTER_DIFF_ARTIFACT}" ]; then
# no change
return 1
else
return 0
fi
}
# Clones an hg repo
function clone_repo {
cd "${BASEDIR}"
@ -419,6 +446,13 @@ function stage_tld_suffix_files {
cp -a "${GITHUB_SUFFIX_LOCAL}" "${REPODIR}/${HG_SUFFIX_PATH}"
}
function stage_mobile_experiments_files {
cd "${BASEDIR}"
cp fenix-experiments-new.json "${REPODIR}/${FENIX_INITIAL_EXPERIMENTS}"
cp focus-experiments-new.json "${REPODIR}/${FOCUS_INITIAL_EXPERIMENTS}"
}
# Push all pending commits to Phabricator
function push_repo {
cd "${REPODIR}"
@ -466,6 +500,7 @@ while [ $# -gt 0 ]; do
--hpkp) DO_HPKP=true ;;
--remote-settings) DO_REMOTE_SETTINGS=true ;;
--suffix-list) DO_SUFFIX_LIST=true ;;
--mobile-experiments) DO_MOBILE_EXPERIMENTS=true ;;
-r) REPODIR="$2"; shift ;;
--use-mozilla-central) USE_MC=true ;;
--use-ftp-builds) USE_TC=false ;;
@ -484,7 +519,7 @@ if [ "${BRANCH}" == "" ]; then
fi
# Must choose at least one update action.
if [ "$DO_HSTS" == "false" ] && [ "$DO_HPKP" == "false" ] && [ "$DO_REMOTE_SETTINGS" == "false" ] && [ "$DO_SUFFIX_LIST" == "false" ]
if [ "$DO_HSTS" == "false" ] && [ "$DO_HPKP" == "false" ] && [ "$DO_REMOTE_SETTINGS" == "false" ] && [ "$DO_SUFFIX_LIST" == "false" ] && [ "$DO_MOBILE_EXPERIMENTS" == false ]
then
echo "Error: you must specify at least one action from: --hsts, --hpkp, --remote-settings, or --suffix-list" >&2
usage
@ -559,9 +594,15 @@ if [ "${DO_SUFFIX_LIST}" == "true" ]; then
SUFFIX_LIST_UPDATED=true
fi
fi
if [ "${DO_MOBILE_EXPERIMENTS}" == "true" ]; then
if compare_mobile_experiments
then
MOBILE_EXPERIMENTS_UPDATED=true
fi
fi
if [ "${HSTS_UPDATED}" == "false" ] && [ "${HPKP_UPDATED}" == "false" ] && [ "${REMOTE_SETTINGS_UPDATED}" == "false" ] && [ "${SUFFIX_LIST_UPDATED}" == "false" ]; then
if [ "${HSTS_UPDATED}" == "false" ] && [ "${HPKP_UPDATED}" == "false" ] && [ "${REMOTE_SETTINGS_UPDATED}" == "false" ] && [ "${SUFFIX_LIST_UPDATED}" == "false" ] && [ "${MOBILE_EXPERIMENTS_UPDATED}" == "false" ]; then
echo "INFO: no updates required. Exiting."
exit 0
else
@ -598,6 +639,11 @@ then
COMMIT_MESSAGE="${COMMIT_MESSAGE} tld-suffixes"
fi
if [ "${MOBILE_EXPERIMENTS_UPDATED}" == "true" ]
then
stage_mobile_experiments_files
COMMIT_MESSAGE="${COMMIT_MESSAGE} mobile-experiments"
fi
if [ ${DONTBUILD} == true ]; then
COMMIT_MESSAGE="${COMMIT_MESSAGE} - (DONTBUILD)"