snapshot of https://github.com/zulip/zulip.git @ 48c69911c7dd4e03b20552eb3bd77ad8151c1357 (2026-09-15)
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
This commit is contained in:
45
puppet/zulip/files/hooks/common/sentry.sh
Executable file
45
puppet/zulip/files/hooks/common/sentry.sh
Executable file
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -u
|
||||
|
||||
if ! grep -Eq 'SENTRY_DSN|SENTRY_FRONTEND_DSN' /etc/zulip/settings.py; then
|
||||
echo "sentry: No DSN configured! Set SENTRY_DSN or SENTRY_FRONTEND_DSN in /etc/zulip/settings.py"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! SENTRY_AUTH_TOKEN=$(crudini --get /etc/zulip/zulip-secrets.conf secrets sentry_release_auth_token); then
|
||||
echo "sentry: No release auth token set! Set sentry_release_auth_token in /etc/zulip/zulip-secrets.conf"
|
||||
exit 0
|
||||
fi
|
||||
export SENTRY_AUTH_TOKEN
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
if ! sentry_org=$(crudini --get /etc/zulip/zulip.conf sentry organization); then
|
||||
echo "sentry: No organization set! Set sentry.organization in /etc/zulip/zulip.conf"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
sentry_project=$(crudini --get /etc/zulip/zulip.conf sentry project)
|
||||
sentry_frontend_project=$(crudini --get /etc/zulip/zulip.conf sentry frontend_project)
|
||||
if [ -z "$sentry_project" ] && [ -z "$sentry_frontend_project" ]; then
|
||||
echo "sentry: No project set! Set sentry.project and/or sentry.frontend_project in /etc/zulip/zulip.conf"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -n "$sentry_project" ] && ! grep -q 'SENTRY_DSN' /etc/zulip/settings.py; then
|
||||
echo "sentry: sentry.project is set but SENTRY_DSN is not set in /etc/zulip/settings.py"
|
||||
exit 0
|
||||
fi
|
||||
if [ -n "$sentry_frontend_project" ] && ! grep -q 'SENTRY_FRONTEND_DSN' /etc/zulip/settings.py; then
|
||||
echo "sentry: sentry.frontend_project is set but SENTRY_FRONTEND_DSN is not set in /etc/zulip/settings.py"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! which sentry-cli >/dev/null; then
|
||||
echo "sentry: No sentry-cli installed!"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2034
|
||||
sentry_release="zulip-server@$ZULIP_NEW_VERSION"
|
||||
46
puppet/zulip/files/hooks/common/zulip_notify.sh
Normal file
46
puppet/zulip/files/hooks/common/zulip_notify.sh
Normal file
@@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -u
|
||||
|
||||
if ! zulip_api_key=$(crudini --get /etc/zulip/zulip-secrets.conf secrets zulip_release_api_key); then
|
||||
echo "zulip_notify: No zulip_release_api_key set! Set zulip_release_api_key in /etc/zulip/zulip-secrets.conf"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! zulip_notify_bot_email=$(crudini --get /etc/zulip/zulip.conf zulip_notify bot_email); then
|
||||
echo "zulip_notify: No zulip_notify.bot_email set in /etc/zulip/zulip.conf"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! zulip_notify_server=$(crudini --get /etc/zulip/zulip.conf zulip_notify server); then
|
||||
echo "zulip_notify: No zulip_notify.server set in /etc/zulip/zulip.conf"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! zulip_notify_stream=$(crudini --get /etc/zulip/zulip.conf zulip_notify stream); then
|
||||
echo "zulip_notify: No zulip_notify.stream set in /etc/zulip/zulip.conf"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
from=${ZULIP_OLD_MERGE_BASE_COMMIT:-$ZULIP_OLD_VERSION}
|
||||
to=${ZULIP_NEW_MERGE_BASE_COMMIT:-$ZULIP_NEW_VERSION}
|
||||
deploy_environment=$(crudini --get /etc/zulip/zulip.conf machine deploy_type || echo "development")
|
||||
# shellcheck disable=SC2034
|
||||
commit_count=$(git rev-list "${from}..${to}" | wc -l)
|
||||
|
||||
# Sending the notification is best-effort: a failure to deliver it
|
||||
# (e.g. the bot lacks posting permission, or the server is
|
||||
# unreachable) must never abort a deploy, so we swallow the error
|
||||
# after logging it.
|
||||
zulip_send() {
|
||||
if ! uv run --no-sync zulip-send \
|
||||
--site "$zulip_notify_server" \
|
||||
--user "$zulip_notify_bot_email" \
|
||||
--api-key "$zulip_api_key" \
|
||||
--stream "$zulip_notify_stream" \
|
||||
--subject "$deploy_environment deploy" \
|
||||
--message "$1"; then
|
||||
echo "zulip_notify: Failed to send deploy notification; continuing anyway."
|
||||
fi
|
||||
}
|
||||
21
puppet/zulip/files/hooks/post-deploy.d/push_git_ref.hook
Normal file
21
puppet/zulip/files/hooks/post-deploy.d/push_git_ref.hook
Normal file
@@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -u
|
||||
|
||||
if [ -z "${ZULIP_NEW_MERGE_BASE_COMMIT:-}" ]; then
|
||||
echo "push_git_ref: Can't push because deploy is not from git!"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! repo=$(crudini --get /etc/zulip/zulip.conf push_git_ref repo); then
|
||||
echo "push_git_ref: No repo set! Set push_git_ref.repo in /etc/zulip/zulip.conf"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! ref=$(crudini --get /etc/zulip/zulip.conf push_git_ref ref); then
|
||||
echo "push_git_ref: No ref set! Set push_git_ref.ref in /etc/zulip/zulip.conf"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
git push -f "$repo" "$ZULIP_NEW_MERGE_BASE_COMMIT:$ref"
|
||||
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
/home/zulip/deployments/current/manage.py send_zulip_update_announcements --automated --progress
|
||||
17
puppet/zulip/files/hooks/post-deploy.d/sentry.hook
Executable file
17
puppet/zulip/files/hooks/post-deploy.d/sentry.hook
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -u
|
||||
|
||||
source "$(dirname "$0")/../common/sentry.sh"
|
||||
|
||||
deploy_environment=$(crudini --get /etc/zulip/zulip.conf machine deploy_type || echo "development")
|
||||
|
||||
echo "sentry: Adding deploy of '$deploy_environment' and finalizing release"
|
||||
|
||||
sentry-cli releases --org="$sentry_org" deploys "$sentry_release" new \
|
||||
--env "$deploy_environment" \
|
||||
--started "$(stat -c %Y ./sentry-release)" \
|
||||
--finished "$(date +%s)" \
|
||||
--name "$(hostname --fqdn)"
|
||||
sentry-cli releases --org="$sentry_org" finalize "$sentry_release"
|
||||
10
puppet/zulip/files/hooks/post-deploy.d/zulip_notify.hook
Normal file
10
puppet/zulip/files/hooks/post-deploy.d/zulip_notify.hook
Normal file
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -u
|
||||
|
||||
source "$(dirname "$0")/../common/zulip_notify.sh"
|
||||
|
||||
echo "zulip_notify: Sending notify of $from .. $to ($commit_count commits) for $deploy_environment to $zulip_notify_server"
|
||||
|
||||
zulip_send "Finished ${deploy_environment} deploy of [${commit_count} new commits](https://github.com/zulip/zulip/compare/${from}...${to}) on $(hostname)"
|
||||
35
puppet/zulip/files/hooks/pre-deploy.d/sentry.hook
Executable file
35
puppet/zulip/files/hooks/pre-deploy.d/sentry.hook
Executable file
@@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -u
|
||||
|
||||
source "$(dirname "$0")/../common/sentry.sh"
|
||||
|
||||
echo "$sentry_release" >./sentry-release
|
||||
|
||||
echo "sentry: Creating release $sentry_release"
|
||||
|
||||
# sentry-cli only supports passing one project when making a new
|
||||
# release, and we want to possibly create more than once at once. Use
|
||||
# curl to make the API request.
|
||||
json=$(jq -nc '{version: $ARGS.named.version,
|
||||
projects: $ARGS.positional | map(select( . != ""))}' \
|
||||
--arg version "$sentry_release" \
|
||||
--args "$sentry_project" "$sentry_frontend_project")
|
||||
curl "https://sentry.io/api/0/organizations/$sentry_org/releases/" \
|
||||
-H "Authorization: Bearer $SENTRY_AUTH_TOKEN" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d "$json" \
|
||||
--silent -o /dev/null
|
||||
|
||||
merge_base="${ZULIP_NEW_MERGE_BASE_COMMIT:-}"
|
||||
if [ -n "$merge_base" ]; then
|
||||
old_merge_base="$ZULIP_OLD_MERGE_BASE_COMMIT"
|
||||
echo "sentry: Setting commit range based on merge-base to upstream of $merge_base"
|
||||
sentry-cli releases --org="$sentry_org" set-commits "$sentry_release" --commit="zulip/zulip@$old_merge_base..$merge_base"
|
||||
fi
|
||||
|
||||
if [ -n "$sentry_frontend_project" ]; then
|
||||
echo "sentry: Uploading sourcemaps"
|
||||
sentry-cli releases --org="$sentry_org" --project="$sentry_frontend_project" files "$sentry_release" upload-sourcemaps static/webpack-bundles/
|
||||
fi
|
||||
10
puppet/zulip/files/hooks/pre-deploy.d/zulip_notify.hook
Normal file
10
puppet/zulip/files/hooks/pre-deploy.d/zulip_notify.hook
Normal file
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -u
|
||||
|
||||
source "$(dirname "$0")/../common/zulip_notify.sh"
|
||||
|
||||
echo "zulip_notify: Sending notify of $from .. $to ($commit_count commits) for $deploy_environment to $zulip_notify_server"
|
||||
|
||||
zulip_send "Starting ${deploy_environment} deploy of [${commit_count} new commits](https://github.com/zulip/zulip/compare/${from}...${to}) on $(hostname)"
|
||||
Reference in New Issue
Block a user