observability.svc.plus/bin/release
2026-02-01 20:53:55 +08:00

84 lines
4.3 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
#==============================================================#
# File : release
# Desc : make pigsty release
# Ctime : 2021-04-20
# Mtime : 2026-01-27
# Path : bin/release
# License : Apache-2.0 @ https://pigsty.io/docs/about/license/
# Copyright : 2018-2026 Ruohang Feng / Vonng (rh@vonng.com)
#==============================================================#
PROG_NAME="$(basename $0)"
PROG_DIR="$(cd $(dirname $0) && pwd)"
#--------------------------------------------------------------#
# Param
#--------------------------------------------------------------#
# complete version string start with 'v'. e.g: v1.0.0
# if default 'latest' is used, released source code will be generated @ dist/latest
PIGSTY_VERSION=${1-'latest'}
# pigsty home directory
# output will be dist/latest/pigsty.tgz
PIGSTY_HOME="$(cd $(dirname ${PROG_DIR}) && pwd)"
RELEASE_DIR=${PIGSTY_HOME}/dist/
DIR="${RELEASE_DIR}/${PIGSTY_VERSION}"
#--------------------------------------------------------------#
# source code dir
#--------------------------------------------------------------#
cd ${PIGSTY_HOME}
mkdir -p "${DIR}"
rm -rf "${DIR}/pigsty"
mkdir -p "${DIR}/pigsty" "${DIR}/pigsty/files/bin" "${DIR}/pigsty/files/pki" "${DIR}/pigsty/vagrant" "${DIR}/pigsty/terraform" "${DIR}/pigsty/docker"
mkdir ${DIR}/pigsty/files/pki/{ca,etcd,misc,infra,pgsql,redis,nginx,minio,mongo,mysql,csr}
#--------------------------------------------------------------#
# copy resources
#--------------------------------------------------------------#
cp -r ${PIGSTY_HOME}/{README.md,KEYS,LICENSE,NOTICE,Makefile,CLAUDE.md} "${DIR}/pigsty/"
cp -r ${PIGSTY_HOME}/vagrant/{ssh,dns,spec,nuke,config,Vagrantfile.libvirt,Vagrantfile.virtualbox,Makefile,README.md} "${DIR}/pigsty/vagrant/"
cp -r ${PIGSTY_HOME}/terraform/{README.md,terraform.tf,spec,ssh,Makefile} "${DIR}/pigsty/terraform/"
cp -r ${PIGSTY_HOME}/docker/{Dockerfile,docker-compose.yml,.env,Makefile,README.md} "${DIR}/pigsty/docker/"
cp -R ${PIGSTY_HOME}/files/{grafana,victoria,migration,postgres,*.sql} "${DIR}/pigsty/files/"
cp -r ${PIGSTY_HOME}/app "${DIR}/pigsty/" # copy pigsty app
cp -r ${PIGSTY_HOME}/conf "${DIR}/pigsty/" # copy pigsty conf
cp -r ${PIGSTY_HOME}/{bin,roles} "${DIR}/pigsty/" # copy scripts, playbooks
cp -r ${PIGSTY_HOME}/ansible.cfg "${DIR}/pigsty/" # copy ansible config
cp -R ${PIGSTY_HOME}/templates "${DIR}/pigsty/" # copy templates
cp -r ${PIGSTY_HOME}/deploy.yml "${DIR}/pigsty/" # copy deploy playbook
cp -r ${PIGSTY_HOME}/node*.yml "${DIR}/pigsty/" # copy node playbooks
cp -r ${PIGSTY_HOME}/infra*.yml "${DIR}/pigsty/" # copy infra playbooks
cp -r ${PIGSTY_HOME}/pgsql*.yml "${DIR}/pigsty/" # copy pgsql playbooks
cp -r ${PIGSTY_HOME}/redis*.yml "${DIR}/pigsty/" # copy redis playbooks
cp -r ${PIGSTY_HOME}/etcd*.yml "${DIR}/pigsty/" # copy etcd playbooks
cp -r ${PIGSTY_HOME}/minio*.yml "${DIR}/pigsty/" # copy minio playbooks
cp -r ${PIGSTY_HOME}/mongo*.yml "${DIR}/pigsty/" # copy mongo playbooks
cp -r ${PIGSTY_HOME}/juice.yml "${DIR}/pigsty/" # copy juice playbooks
cp -r ${PIGSTY_HOME}/vibe.yml "${DIR}/pigsty/" # copy vibe playbook
cp -r ${PIGSTY_HOME}/cert.yml "${DIR}/pigsty/" # copy cert playbook
cp -r ${PIGSTY_HOME}/cache.yml "${DIR}/pigsty/" # copy cache playbook
cp -r ${PIGSTY_HOME}/docker.yml "${DIR}/pigsty/" # copy docker playbook
cp -r ${PIGSTY_HOME}/slim.yml "${DIR}/pigsty/" # copy slim playbooks
cp -r ${PIGSTY_HOME}/app.yml "${DIR}/pigsty/" # copy app playbooks
cp -r ${PIGSTY_HOME}/pigsty.yml "${DIR}/pigsty/" # copy pigsty config
cp -r ${PIGSTY_HOME}/.gitignore "${DIR}/pigsty/" # copy .gitignore
cp -r ${PIGSTY_HOME}/{bootstrap,configure} "${DIR}/pigsty/" # basic scripts
rm -rf "${DIR}/pigsty/bin/__pycache__" # remove py cache files
rm -rf "${DIR}/pigsty/files/grafana/__pycache__" # remove py cache files
rm -rf "${DIR}/pigsty/conf/build/" # remove building file
find "${DIR}/pigsty/" -type f -name .DS_Store -delete
#--------------------------------------------------------------#
# make tarball
#--------------------------------------------------------------#
if [[ "$(uname -s)" == "Darwin" ]]; then
cd ${DIR} && gtar cf - pigsty | gzip -9 > pigsty-${PIGSTY_VERSION}.tgz
else
cd ${DIR} && tar cf - pigsty | gzip -9 > pigsty-${PIGSTY_VERSION}.tgz
fi
rm -rf ${DIR}/pigsty