snapshot of https://github.com/centrifugal/centrifugo.git (master, 2026-09-16; blobs > 131072B omitted)
This commit is contained in:
17
misc/scripts/generate.sh
Normal file
17
misc/scripts/generate.sh
Normal file
@@ -0,0 +1,17 @@
|
||||
set -e
|
||||
|
||||
cd internal/apiproto
|
||||
bash generate.sh
|
||||
cd -
|
||||
|
||||
cd internal/apiproto/swagger
|
||||
bash generate_swagger.sh
|
||||
cd -
|
||||
|
||||
cd internal/proxyproto
|
||||
bash generate.sh
|
||||
cd -
|
||||
|
||||
cd internal/unigrpc/unistream
|
||||
bash generate.sh
|
||||
cd -
|
||||
207
misc/scripts/package.sh
Executable file
207
misc/scripts/package.sh
Executable file
@@ -0,0 +1,207 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Debian 7: lsb sysv
|
||||
# Debian 8: systemd
|
||||
# Ubuntu 14.04: upstart
|
||||
# Ubuntu 16.04: systemd
|
||||
# Centos 6: sysv
|
||||
# Centos 7: systemd
|
||||
#
|
||||
if [ "$1" = "" ]
|
||||
then
|
||||
echo "Usage: $0 <version> <iteration>"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$2" = "" ]
|
||||
then
|
||||
echo "Usage: $0 <version> <iteration>"
|
||||
exit
|
||||
fi
|
||||
|
||||
VERSION=$1
|
||||
ITERATION=$2
|
||||
UNIX_NOW=$( date +%s )
|
||||
|
||||
INSTALL_DIR=/usr/bin
|
||||
LOG_DIR=/var/log/centrifugo
|
||||
CONFIG_DIR=/etc/centrifugo
|
||||
LOGROTATE_DIR=/etc/logrotate.d
|
||||
DATA_DIR=/var/lib/centrifugo
|
||||
SCRIPT_DIR=/usr/lib/centrifugo
|
||||
|
||||
SAMPLE_CONFIGURATION=misc/packaging/config.json
|
||||
INITD_SCRIPT=misc/packaging/initd.sh
|
||||
INITD_EL6_SCRIPT=misc/packaging/initd.el6.sh
|
||||
UPSTART_SCRIPT=misc/packaging/centrifugo.upstart
|
||||
SYSTEMD_SCRIPT=misc/packaging/centrifugo.service
|
||||
POSTINSTALL_SCRIPT=misc/packaging/post_install.sh
|
||||
PREINSTALL_SCRIPT=misc/packaging/pre_install.sh
|
||||
POSTUNINSTALL_SCRIPT=misc/packaging/post_uninstall.sh
|
||||
LOGROTATE=misc/packaging/logrotate
|
||||
|
||||
TMP_WORK_DIR=`mktemp -d`
|
||||
TMP_BINARIES_DIR=`mktemp -d`
|
||||
ARCH=amd64
|
||||
NAME=centrifugo
|
||||
LICENSE=MIT
|
||||
URL="https://github.com/centrifugal/centrifugo"
|
||||
MAINTAINER="frvzmb@gmail.com"
|
||||
VENDOR=centrifugo
|
||||
DESCRIPTION="Real-time messaging server"
|
||||
|
||||
echo "Start packaging, version: $VERSION, iteration: $ITERATION, release time: $UNIX_NOW"
|
||||
|
||||
# cleanup_exit removes all resources created during the process and exits with
|
||||
# the supplied returned code.
|
||||
cleanup_exit() {
|
||||
rm -r $TMP_WORK_DIR
|
||||
rm -r $TMP_BINARIES_DIR
|
||||
exit $1
|
||||
}
|
||||
|
||||
# make_dir_tree creates the directory structure within the packages.
|
||||
make_dir_tree() {
|
||||
work_dir=$1
|
||||
|
||||
mkdir -p $work_dir/$INSTALL_DIR
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to create install directory -- aborting."
|
||||
cleanup_exit 1
|
||||
fi
|
||||
mkdir -p $work_dir/$SCRIPT_DIR/scripts
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to create script directory -- aborting."
|
||||
cleanup_exit 1
|
||||
fi
|
||||
mkdir -p $work_dir/$CONFIG_DIR
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to create configuration directory -- aborting."
|
||||
cleanup_exit 1
|
||||
fi
|
||||
mkdir -p $work_dir/$LOGROTATE_DIR
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to create logrotate directory -- aborting."
|
||||
cleanup_exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# do_build builds the code. The version and commit must be passed in.
|
||||
do_build() {
|
||||
echo "Start building binary"
|
||||
|
||||
if [ -z "$STATS_ENDPOINT" ]
|
||||
then
|
||||
echo "STATS_ENDPOINT not defined"
|
||||
cleanup_exit 1
|
||||
else
|
||||
echo "STATS_ENDPOINT found"
|
||||
fi
|
||||
|
||||
if [ -z "$STATS_TOKEN" ]
|
||||
then
|
||||
echo "STATS_TOKEN not defined"
|
||||
cleanup_exit 1
|
||||
else
|
||||
echo "STATS_TOKEN found"
|
||||
fi
|
||||
|
||||
CGO_ENABLED=0 GOOS="linux" GOARCH="amd64" go build -ldflags="-X github.com/centrifugal/centrifugo/v6/internal/build.Version=$VERSION -X github.com/centrifugal/centrifugo/v6/internal/build.UsageStatsEndpoint=$STATS_ENDPOINT -X github.com/centrifugal/centrifugo/v6/internal/build.UsageStatsToken=$STATS_TOKEN" -o "$TMP_BINARIES_DIR/centrifugo"
|
||||
echo "Binary build completed successfully"
|
||||
"$TMP_BINARIES_DIR"/centrifugo version
|
||||
}
|
||||
|
||||
do_build $VERSION
|
||||
|
||||
make_dir_tree $TMP_WORK_DIR
|
||||
|
||||
cp $TMP_BINARIES_DIR/centrifugo $TMP_WORK_DIR/$INSTALL_DIR/
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to copy binaries to packaging directory ($TMP_WORK_DIR/$INSTALL_DIR/) -- aborting."
|
||||
cleanup_exit 1
|
||||
fi
|
||||
|
||||
echo "centrifugo binary copied to $TMP_WORK_DIR/$INSTALL_DIR/"
|
||||
|
||||
cp $INITD_SCRIPT $TMP_WORK_DIR/$SCRIPT_DIR/scripts/initd.sh
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to copy init.d script to packaging directory ($TMP_WORK_DIR/$SCRIPT_DIR/) -- aborting."
|
||||
cleanup_exit 1
|
||||
fi
|
||||
|
||||
echo "initd script copied to $TMP_WORK_DIR/$SCRIPT_DIR/scripts"
|
||||
|
||||
cp $INITD_EL6_SCRIPT $TMP_WORK_DIR/$SCRIPT_DIR/scripts/initd.el6.sh
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to copy initd.el6.sh script to packaging directory ($TMP_WORK_DIR/$SCRIPT_DIR/) -- aborting."
|
||||
cleanup_exit 1
|
||||
fi
|
||||
|
||||
echo "initd.el6 script copied to $TMP_WORK_DIR/$SCRIPT_DIR/scripts"
|
||||
|
||||
cp $SYSTEMD_SCRIPT $TMP_WORK_DIR/$SCRIPT_DIR/scripts/centrifugo.service
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to copy systemd script to packaging directory -- aborting."
|
||||
cleanup_exit 1
|
||||
fi
|
||||
|
||||
echo "systemd script copied to $TMP_WORK_DIR/$SCRIPT_DIR/scripts"
|
||||
|
||||
cp $UPSTART_SCRIPT $TMP_WORK_DIR/$SCRIPT_DIR/scripts/centrifugo.upstart
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to copy upstart script to packaging directory -- aborting."
|
||||
cleanup_exit 1
|
||||
fi
|
||||
|
||||
echo "upstart script copied to $TMP_WORK_DIR/$SCRIPT_DIR/scripts"
|
||||
|
||||
install -m 644 $LOGROTATE $TMP_WORK_DIR/$LOGROTATE_DIR/centrifugo
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Failed to copy logrotate configuration to packaging directory -- aborting."
|
||||
cleanup_exit 1
|
||||
fi
|
||||
|
||||
echo "logrotate script copied to $TMP_WORK_DIR/$LOGROTATE_DIR/centrifugo"
|
||||
|
||||
COMMON_FPM_ARGS="\
|
||||
-C $TMP_WORK_DIR \
|
||||
--log error \
|
||||
--version $VERSION \
|
||||
--iteration $ITERATION \
|
||||
--name $NAME \
|
||||
--vendor $VENDOR \
|
||||
--url $URL \
|
||||
--category Network \
|
||||
--license $LICENSE \
|
||||
--maintainer $MAINTAINER \
|
||||
--force \
|
||||
--after-install $POSTINSTALL_SCRIPT \
|
||||
--before-install $PREINSTALL_SCRIPT \
|
||||
--after-remove $POSTUNINSTALL_SCRIPT \
|
||||
--config-files $CONFIG_DIR \
|
||||
--config-files $LOGROTATE_DIR "
|
||||
|
||||
echo "Start building rpm package"
|
||||
|
||||
rm -r ./PACKAGES
|
||||
mkdir -p PACKAGES
|
||||
|
||||
fpm -s dir -t rpm $COMMON_FPM_ARGS --description "$DESCRIPTION" \
|
||||
--rpm-os linux \
|
||||
-p PACKAGES/ \
|
||||
-a amd64 .
|
||||
|
||||
echo "Start building deb package"
|
||||
|
||||
fpm -s dir -t deb $COMMON_FPM_ARGS --description "$DESCRIPTION" \
|
||||
-p PACKAGES/ \
|
||||
-a amd64 .
|
||||
|
||||
cd PACKAGES
|
||||
for f in *.deb; do sha256sum $f >> ${f}_checksum.txt; done
|
||||
for f in *.rpm; do sha256sum $f >> ${f}_checksum.txt; done
|
||||
cd ..
|
||||
|
||||
echo "Packaging complete!"
|
||||
|
||||
cleanup_exit 0
|
||||
6
misc/scripts/release_package.sh
Executable file
6
misc/scripts/release_package.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
sudo gem install rake
|
||||
sudo gem install package_cloud
|
||||
sudo gem install fpm
|
||||
sudo apt-get install -y rpm
|
||||
make package
|
||||
2
misc/scripts/release_packagecloud.sh
Executable file
2
misc/scripts/release_packagecloud.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/bin/sh
|
||||
make packagecloud
|
||||
56
misc/scripts/update-deps.sh
Executable file
56
misc/scripts/update-deps.sh
Executable file
@@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env bash
|
||||
# Update all Go module dependencies.
|
||||
#
|
||||
# Usage:
|
||||
# ./scripts/update-deps.sh # minor/patch updates only
|
||||
# ./scripts/update-deps.sh --major # also apply major version updates
|
||||
set -euo pipefail
|
||||
|
||||
cd "$(pwd)"
|
||||
|
||||
pwd
|
||||
|
||||
# Packages to exclude from automatic updates (updated manually).
|
||||
EXCLUDE=(
|
||||
"github.com/centrifugal/centrifuge"
|
||||
"github.com/mailru/easyjson"
|
||||
)
|
||||
|
||||
# Record current versions of excluded packages.
|
||||
SAVED=()
|
||||
for pkg in "${EXCLUDE[@]}"; do
|
||||
ver=$(grep "^[[:space:]]*${pkg} " go.mod | awk '{print $2}')
|
||||
if [[ -n "$ver" ]]; then
|
||||
SAVED+=("${pkg}@${ver}")
|
||||
fi
|
||||
done
|
||||
|
||||
echo "==> Updating all dependencies to latest minor/patch versions..."
|
||||
go get -u ./...
|
||||
|
||||
# Restore excluded packages to their original versions.
|
||||
for entry in "${SAVED[@]}"; do
|
||||
echo "==> Pinning $entry (excluded from update)"
|
||||
go get "$entry"
|
||||
done
|
||||
|
||||
echo "==> Running go mod tidy..."
|
||||
go mod tidy
|
||||
|
||||
if [[ "${1:-}" == "--major" ]]; then
|
||||
if ! command -v gomajor &>/dev/null; then
|
||||
echo "gomajor not found, installing..."
|
||||
go install github.com/icholy/gomajor@latest
|
||||
fi
|
||||
echo "==> Checking for major version updates..."
|
||||
gomajor list
|
||||
echo ""
|
||||
read -rp "Apply all major version updates? [y/N] " answer
|
||||
if [[ "$answer" =~ ^[Yy]$ ]]; then
|
||||
gomajor get -a ./...
|
||||
echo "==> Running go mod tidy after major updates..."
|
||||
go mod tidy
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "==> Done. Review changes with: git diff go.mod"
|
||||
25
misc/scripts/update_swagger_web.sh
Executable file
25
misc/scripts/update_swagger_web.sh
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
|
||||
# this script updates embedded swagger web interface.
|
||||
# Script intended to be run from the repo root folder:
|
||||
# ./misc/scripts/update_swagger_web.sh
|
||||
|
||||
TMP_WORK_DIR=$(mktemp -d)
|
||||
|
||||
# cleanup_exit removes all resources created during the process and exits with
|
||||
# the supplied returned code.
|
||||
cleanup_exit() {
|
||||
rm -rf "$TMP_WORK_DIR"
|
||||
exit "$1"
|
||||
}
|
||||
|
||||
git clone -c advice.detachedHead=false --depth 1 --branch v4.18.1 --single-branch https://github.com/swagger-api/swagger-ui.git "$TMP_WORK_DIR"
|
||||
cp internal/apiproto/swagger/api.swagger.json "$TMP_WORK_DIR"/dist/swagger.json
|
||||
|
||||
oldString="https://petstore.swagger.io/v2/"
|
||||
newString="./"
|
||||
sed -i '' "s|${oldString}|${newString}|g" "$TMP_WORK_DIR"/dist/swagger-initializer.js
|
||||
|
||||
statik -src="$TMP_WORK_DIR"/dist -dest ./internal/ -package=swaggerui
|
||||
|
||||
cleanup_exit 0
|
||||
20
misc/scripts/update_web.sh
Executable file
20
misc/scripts/update_web.sh
Executable file
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash
|
||||
|
||||
# this script updates embedded web interface.
|
||||
# Script intended to be run from the repo root folder:
|
||||
# ./misc/scripts/update_web.sh
|
||||
|
||||
TMP_WORK_DIR=$(mktemp -d)
|
||||
|
||||
# cleanup_exit removes all resources created during the process and exits with
|
||||
# the supplied returned code.
|
||||
cleanup_exit() {
|
||||
rm -rf "$TMP_WORK_DIR"
|
||||
exit "$1"
|
||||
}
|
||||
|
||||
git clone -c advice.detachedHead=false --depth 1 --branch main --single-branch https://github.com/centrifugal/web.git "$TMP_WORK_DIR"
|
||||
|
||||
statik -src="$TMP_WORK_DIR"/dist -dest ./internal/ -package=webui
|
||||
|
||||
cleanup_exit 0
|
||||
Reference in New Issue
Block a user