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

This commit is contained in:
upstream-mirror
2026-09-15 15:05:30 +05:00
commit 64898b2c79
8999 changed files with 1757358 additions and 0 deletions

View 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"

View 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
}

View 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"

View File

@@ -0,0 +1,5 @@
#!/usr/bin/env bash
set -e
/home/zulip/deployments/current/manage.py send_zulip_update_announcements --automated --progress

View 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"

View 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)"

View 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

View 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)"