Merge branch 'pleroma-ctl-enchancements' into 'develop'
pleroma_ctl: Make it possible to specify branches/flavours when updating See merge request pleroma/pleroma!1832
This commit is contained in:
commit
44afe4c887
|
@ -37,29 +37,60 @@ detect_branch() {
|
||||||
elif [ "$branch" = "" ]; then
|
elif [ "$branch" = "" ]; then
|
||||||
echo "master"
|
echo "master"
|
||||||
else
|
else
|
||||||
# Note: branch name in version is of SemVer format and may only contain [0-9a-zA-Z-] symbols —
|
# Note: branch name in version is of SemVer format and may only contain [0-9a-zA-Z-] symbols —
|
||||||
# if supporting releases for more branches, need to ensure they contain only these symbols.
|
# if supporting releases for more branches, need to ensure they contain only these symbols.
|
||||||
echo "Releases are built only for master and develop branches" >&2
|
echo "Releases are built only for master and develop branches" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
update() {
|
update() {
|
||||||
set -e
|
set -e
|
||||||
|
NO_RM=false
|
||||||
|
|
||||||
|
while echo "$1" | grep "^-" >/dev/null; do
|
||||||
|
case "$1" in
|
||||||
|
--zip-url)
|
||||||
|
FULL_URI="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--no-rm)
|
||||||
|
NO_RM=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--flavour)
|
||||||
|
FLAVOUR="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--branch)
|
||||||
|
BRANCH="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--tmp-dir)
|
||||||
|
TMP_DIR="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
echo "invalid option: $1" 1>&2
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
RELEASE_ROOT=$(dirname "$SCRIPTPATH")
|
RELEASE_ROOT=$(dirname "$SCRIPTPATH")
|
||||||
uri="${PLEROMA_CTL_URI:-https://git.pleroma.social}"
|
uri="https://git.pleroma.social"
|
||||||
project_id="${PLEROMA_CTL_PROJECT_ID:-2}"
|
project_id="2"
|
||||||
project_branch="$(detect_branch)"
|
project_branch="${BRANCH:-$(detect_branch)}"
|
||||||
flavour="${PLEROMA_CTL_FLAVOUR:-$(detect_flavour)}"
|
flavour="${FLAVOUR:-$(detect_flavour)}"
|
||||||
echo "Detected flavour: $flavour"
|
tmp="${TMP_DIR:-/tmp}"
|
||||||
tmp="${PLEROMA_CTL_TMP_DIR:-/tmp}"
|
|
||||||
artifact="$tmp/pleroma.zip"
|
artifact="$tmp/pleroma.zip"
|
||||||
full_uri="${uri}/api/v4/projects/${project_id}/jobs/artifacts/${project_branch}/download?job=${flavour}"
|
full_uri="${FULL_URI:-${uri}/api/v4/projects/${project_id}/jobs/artifacts/${project_branch}/download?job=${flavour}}"
|
||||||
echo "Downloading the artifact from ${full_uri} to ${artifact}"
|
echo "Downloading the artifact from ${full_uri} to ${artifact}"
|
||||||
curl "$full_uri" -o "${artifact}"
|
curl "$full_uri" -o "${artifact}"
|
||||||
echo "Unpacking ${artifact} to ${tmp}"
|
echo "Unpacking ${artifact} to ${tmp}"
|
||||||
unzip -q "$artifact" -d "$tmp"
|
unzip -q "$artifact" -d "$tmp"
|
||||||
echo "Copying files over to $RELEASE_ROOT"
|
echo "Copying files over to $RELEASE_ROOT"
|
||||||
if [ "$1" != "--no-rm" ]; then
|
if [ "$NO_RM" = false ]; then
|
||||||
|
echo "Removing files from the previous release"
|
||||||
rm -r "${RELEASE_ROOT:-?}"/*
|
rm -r "${RELEASE_ROOT:-?}"/*
|
||||||
fi
|
fi
|
||||||
cp -rf "$tmp/release"/* "$RELEASE_ROOT"
|
cp -rf "$tmp/release"/* "$RELEASE_ROOT"
|
||||||
|
@ -86,36 +117,41 @@ if [ -z "$1" ] || [ "$1" = "help" ]; then
|
||||||
Rollback database migrations (needs to be done before downgrading)
|
Rollback database migrations (needs to be done before downgrading)
|
||||||
|
|
||||||
update [OPTIONS]
|
update [OPTIONS]
|
||||||
Update the instance using the latest CI artifact for the current branch.
|
Update the instance.
|
||||||
|
|
||||||
The only supported option is --no-rm, when set the script won't delete the whole directory, but
|
|
||||||
just force copy over files from the new release. This wastes more space, but may be useful if
|
|
||||||
some files are stored inside of the release directories (although you really shouldn't store them
|
|
||||||
there), or if you want to be able to quickly revert a broken update.
|
|
||||||
|
|
||||||
The script will try to detect your architecture and ABI and set a flavour automatically,
|
|
||||||
but if it is wrong, you can overwrite it by setting PLEROMA_CTL_FLAVOUR to the desired flavour.
|
|
||||||
|
|
||||||
By default the artifact will be downloaded from https://git.pleroma.social for pleroma/pleroma (project id: 2)
|
|
||||||
to /tmp/, you can overwrite these settings by setting PLEROMA_CTL_URI, PLEROMA_CTL_PROJECT_ID and PLEROMA_CTL_TMP_DIR
|
|
||||||
respectively.
|
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--branch Update to a specified branch, instead of the latest version of the current one.
|
||||||
|
--flavour Update to a specified flavour (CPU architecture+libc), instead of the current one.
|
||||||
|
--zip-url Get the release from a specified url. If set, renders the previous 2 options inactive.
|
||||||
|
--no-rm Do not erase previous release's files.
|
||||||
|
--tmp-dir Download the temporary files to a specified directory.
|
||||||
|
|
||||||
and any mix tasks under Pleroma namespace, for example \`mix pleroma.user COMMAND\` is
|
and any mix tasks under Pleroma namespace, for example \`mix pleroma.user COMMAND\` is
|
||||||
equivalent to \`$(basename "$0") user COMMAND\`
|
equivalent to \`$(basename "$0") user COMMAND\`
|
||||||
|
|
||||||
By default pleroma_ctl will try calling into a running instance to execute non migration-related commands,
|
By default pleroma_ctl will try calling into a running instance to execute non migration-related commands,
|
||||||
if for some reason this is undesired, set PLEROMA_CTL_RPC_DISABLED environment variable
|
if for some reason this is undesired, set PLEROMA_CTL_RPC_DISABLED environment variable.
|
||||||
|
|
||||||
"
|
"
|
||||||
else
|
else
|
||||||
SCRIPT=$(readlink -f "$0")
|
SCRIPT=$(readlink -f "$0")
|
||||||
SCRIPTPATH=$(dirname "$SCRIPT")
|
SCRIPTPATH=$(dirname "$SCRIPT")
|
||||||
|
|
||||||
if [ "$1" = "update" ]; then
|
FULL_ARGS="$*"
|
||||||
update "$2"
|
|
||||||
elif [ "$1" = "migrate" ] || [ "$1" = "rollback" ] || [ "$1" = "create" ] || [ "$1 $2" = "instance gen" ] || [ -n "$PLEROMA_CTL_RPC_DISABLED" ]; then
|
ACTION="$1"
|
||||||
"$SCRIPTPATH"/pleroma eval 'Pleroma.ReleaseTasks.run("'"$*"'")'
|
shift
|
||||||
|
|
||||||
|
if [ "$(echo \"$1\" | grep \"^-\" >/dev/null)" = false ]; then
|
||||||
|
SUBACTION="$1"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$ACTION" = "update" ]; then
|
||||||
|
update "$@"
|
||||||
|
elif [ "$ACTION" = "migrate" ] || [ "$ACTION" = "rollback" ] || [ "$ACTION" = "create" ] || [ "$ACTION $SUBACTION" = "instance gen" ] || [ "$PLEROMA_CTL_RPC_DISABLED" = true ]; then
|
||||||
|
"$SCRIPTPATH"/pleroma eval 'Pleroma.ReleaseTasks.run("'"$FULL_ARGS"'")'
|
||||||
else
|
else
|
||||||
"$SCRIPTPATH"/pleroma rpc 'Pleroma.ReleaseTasks.run("'"$*"'")'
|
"$SCRIPTPATH"/pleroma rpc 'Pleroma.ReleaseTasks.run("'"$FULL_ARGS"'")'
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in New Issue