hooks: Switch to passing values through the environment.

This commit is contained in:
Alex Vandiver 2023-04-05 02:15:42 +00:00 committed by Alex Vandiver
parent 160a917ad3
commit ecfb12404a
3 changed files with 14 additions and 8 deletions

View File

@ -1,6 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Arguments: OLD_COMMIT NEW_COMMIT ...where both are `git describe`
# output or tag names. The CWD will be the new deploy directory.
set -e set -e
set -u set -u

View File

@ -1,6 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Arguments: OLD_COMMIT NEW_COMMIT ...where both are `git describe`
# output or tag names. The CWD will be the new deploy directory.
set -e set -e
set -u set -u
@ -42,8 +40,6 @@ if ! which sentry-cli >/dev/null; then
exit 0 exit 0
fi fi
new_version="$2"
merge_base="" merge_base=""
if [ "$(git rev-parse --is-inside-work-tree 2>/dev/null || true)" = "true" ]; then if [ "$(git rev-parse --is-inside-work-tree 2>/dev/null || true)" = "true" ]; then
# Extract the merge-base that tools/cache-zulip-git-version # Extract the merge-base that tools/cache-zulip-git-version
@ -57,7 +53,7 @@ if [ "$(git rev-parse --is-inside-work-tree 2>/dev/null || true)" = "true" ]; th
fi fi
fi fi
sentry_release="zulip-server@$new_version" sentry_release="zulip-server@$ZULIP_NEW_VERSION"
echo "$sentry_release" >./sentry-release echo "$sentry_release" >./sentry-release
echo "sentry: Creating release $sentry_release" echo "sentry: Creating release $sentry_release"

View File

@ -29,6 +29,7 @@ from scripts.lib.zulip_tools import (
assert_running_as_root, assert_running_as_root,
get_config, get_config,
get_config_file, get_config_file,
get_zulip_pwent,
listening_publicly, listening_publicly,
parse_os_release, parse_os_release,
parse_version_from, parse_version_from,
@ -445,11 +446,22 @@ def run_hooks(kind: Literal["pre-deploy", "post-deploy"]) -> None:
path = f"/etc/zulip/hooks/{kind}.d" path = f"/etc/zulip/hooks/{kind}.d"
if not os.path.exists(path): if not os.path.exists(path):
return return
# Pass in, via environment variables, the old/new "version
# string" (which is a `git describe` output)
env = os.environ.copy()
env["ZULIP_OLD_VERSION"] = old_version
env["ZULIP_NEW_VERSION"] = NEW_ZULIP_VERSION
# preexec_fn=su_to_zulip normally handles this, but our explicit
# env overrides that
env["HOME"] = get_zulip_pwent().pw_dir
for script_name in sorted(f for f in os.listdir(path) if f.endswith(".hook")): for script_name in sorted(f for f in os.listdir(path) if f.endswith(".hook")):
subprocess.check_call( subprocess.check_call(
[os.path.join(path, script_name), old_version, NEW_ZULIP_VERSION], [os.path.join(path, script_name)],
cwd=deploy_path, cwd=deploy_path,
preexec_fn=su_to_zulip, preexec_fn=su_to_zulip,
env=env,
) )