mirror of
https://github.com/MetaProvide/nextcloud-swarm-plugin.git
synced 2025-03-14 16:22:51 +00:00

* Support-from-NC29-to-NC31 (#115) * Feature/sentry integration (#110) * new setting page * unit tests * settings page * Unit test * chore: fix code style * update settingscontroller * chore: fix code style * add: sentry to composer.json * chore: fix code style * fix: sending to sentry * chore: fix code style * update(settings): new explain text and service status link * add sentry library in vendor-bin * chore: fix code style * adjusted autoload path for sentry * chore: fix code style * sentry ready * chore: fix code style * feat(sentry): remove vendor-bin from repo - update: makefile to install composer in release and appstore - update: move require of vendor-bin to register method - add: gitignore entry for vendor-bin * chore: fix code style * chore(sentry): remove test exception * style: better readability for settings page * enable telemetry by default * feat(docker): add install ocs api viewer app (#108) * bugfix/correct-install-docker-windows (#106) * - Correction to docker-compose for Windows installations. - Added README for known issues * Update README.md bugfix(correct-install-docker-windows): add supporting images * - add: formatting changes to README.md --------- Co-authored-by: Take one <rontrevor@hotmail.com> * Feature #1192 feedback form js (#111) * Adding Feedback form * Not working yet. Probably need to change strategy and send request to nc first * Feedback js working. Something might be improved: // TODO - Get API Url from beeswarmtrait or another place // TODO - Improve layout with css // TODO - Remove wiget when not is not in swarm folders * chore: fix code style * feat(env): upgrade get - update: return null if key is not found * feat(feedback): add api url - add: app const - add: env example * feat(curl): add post and get methods - update: swarm endpoints to use new methods * feat(feedback): update feedback request * refactor(curl): rename curl to request * feat(curl): add accept headers to getLink - refactor: use get for download instead of exec * style(feedback): improve feedback from ui * style(feedback): improve feedback from ui * feat(feedback): use custom exception * feat(feedback): add status code to exception * feat(feedback): return correct status code * feat(feedback): add feedback js as dependency - remove: manual added js file - add: npm package - update: the code usage --------- Co-authored-by: JoaoSRaposo <1598265+JoaoSRaposo@users.noreply.github.com> Co-authored-by: Mahyar Iranibazaz <mahiarirani@pm.me> * bugfix(feedback): remove the removed script load * feat(curl): check url for protocol * fix: ensure environment * Feature #1192 feedback form js (#111) * Adding Feedback form * Not working yet. Probably need to change strategy and send request to nc first * Feedback js working. Something might be improved: // TODO - Get API Url from beeswarmtrait or another place // TODO - Improve layout with css // TODO - Remove wiget when not is not in swarm folders * chore: fix code style * feat(env): upgrade get - update: return null if key is not found * feat(feedback): add api url - add: app const - add: env example * feat(curl): add post and get methods - update: swarm endpoints to use new methods * feat(feedback): update feedback request * refactor(curl): rename curl to request * feat(curl): add accept headers to getLink - refactor: use get for download instead of exec * style(feedback): improve feedback from ui * style(feedback): improve feedback from ui * feat(feedback): use custom exception * feat(feedback): add status code to exception * feat(feedback): return correct status code * feat(feedback): add feedback js as dependency - remove: manual added js file - add: npm package - update: the code usage --------- Co-authored-by: JoaoSRaposo <1598265+JoaoSRaposo@users.noreply.github.com> Co-authored-by: Mahyar Iranibazaz <mahiarirani@pm.me> * bugfix(feedback): remove the removed script load * feat(curl): check url for protocol * feat(toast): add nextcloud dialogs (#112) - add: library package - update: fileactions.js usage - update: swarm logo remove xml * use .env to get environment * chore: fix code style * remove debug line * fix: makefile include correct directories in vendor-bin * fix: telemetry to be autoenabled * chore: fix code style * fix: exclude changelog.md in build * chore: remove old admin page * Support-from-NC29-to-NC31 (#115) * Release 20250307 (#114) * Improving github and NC app store documentation (#102) * fix(curl): upload SSL verification (#105) - remove: verify parameters to default to curl - add: only in dev env * feat(upload): add filename as meta param when uploading (#103) * Improve settings information (#104) * Improve settings information * feat(settings): add server host URL as default value * style(settings): remove extra wordings --------- Co-authored-by: Mahyar Iranibazaz <mahiarirani@pm.me> * Feature: secure API communication upgrade (#107) * feat(exception): throw separate exceptions * feat(api): separate token from api link - update: merge getLink into a single function - add: Dto for Links results - pass: token in authorization header - update: upload and download to use new api links - refactor: remove extra isVersion input * chore: fix code style --------- Co-authored-by: mahiarirani <10583381+mahiarirani@users.noreply.github.com> * bugfix: exception handling to ensure the response is handled correctly (#109) * bugfix: correct exception handling to ensure the response is handled correclty by calling test() function. - update: do not assume an array (json) response from the api. The response is not always json which cause the json_decode() to return null; - add: use StorageNotAvailableException to ensure a user-friendly error message to be displayed on the front.end; - update: return value can be a string * chore: fix code style * feat(api): check status - update: response based on status code - add: specific error for invalid code * chore: fix code style --------- Co-authored-by: Take one <rontrevor@hotmail.com> Co-authored-by: Mahyar Iranibazaz <mahiarirani@pm.me> Co-authored-by: mahiarirani <10583381+mahiarirani@users.noreply.github.com> * feat(docker): add install ocs api viewer app (#108) * bugfix/correct-install-docker-windows (#106) * - Correction to docker-compose for Windows installations. - Added README for known issues * Update README.md bugfix(correct-install-docker-windows): add supporting images * - add: formatting changes to README.md --------- Co-authored-by: Take one <rontrevor@hotmail.com> * Feature #1192 feedback form js (#111) * Adding Feedback form * Not working yet. Probably need to change strategy and send request to nc first * Feedback js working. Something might be improved: // TODO - Get API Url from beeswarmtrait or another place // TODO - Improve layout with css // TODO - Remove wiget when not is not in swarm folders * chore: fix code style * feat(env): upgrade get - update: return null if key is not found * feat(feedback): add api url - add: app const - add: env example * feat(curl): add post and get methods - update: swarm endpoints to use new methods * feat(feedback): update feedback request * refactor(curl): rename curl to request * feat(curl): add accept headers to getLink - refactor: use get for download instead of exec * style(feedback): improve feedback from ui * style(feedback): improve feedback from ui * feat(feedback): use custom exception * feat(feedback): add status code to exception * feat(feedback): return correct status code * feat(feedback): add feedback js as dependency - remove: manual added js file - add: npm package - update: the code usage --------- Co-authored-by: JoaoSRaposo <1598265+JoaoSRaposo@users.noreply.github.com> Co-authored-by: Mahyar Iranibazaz <mahiarirani@pm.me> * feat(curl): check url for protocol * bugfix(feedback): remove the removed script load * feat(toast): add nextcloud dialogs (#112) - add: library package - update: fileactions.js usage - update: swarm logo remove xml * Fix/#1085 adding moodle to the documentation (#100) * Adding moodle documentation * FIxing link formating error --------- Co-authored-by: JoaoSRaposo <joaosraposo@gmail.com> Co-authored-by: Mahyar Iranibazaz <mahiarirani@pm.me> Co-authored-by: mahiarirani <10583381+mahiarirani@users.noreply.github.com> Co-authored-by: retrevor <75954541+retrevor@users.noreply.github.com> Co-authored-by: Take one <rontrevor@hotmail.com> Co-authored-by: JoaoSRaposo <1598265+JoaoSRaposo@users.noreply.github.com> --------- Co-authored-by: frozenbanana <3958329+frozenbanana@users.noreply.github.com> Co-authored-by: Mahyar Iranibazaz <mahiarirani@pm.me> Co-authored-by: mahiarirani <10583381+mahiarirani@users.noreply.github.com> Co-authored-by: retrevor <75954541+retrevor@users.noreply.github.com> Co-authored-by: Take one <rontrevor@hotmail.com> Co-authored-by: JoaoSRaposo <joaosraposo@gmail.com> Co-authored-by: JoaoSRaposo <1598265+JoaoSRaposo@users.noreply.github.com> * update version deployed * bump version --------- Co-authored-by: JoaoSRaposo <joaosraposo@gmail.com> Co-authored-by: frozenbanana <3958329+frozenbanana@users.noreply.github.com> Co-authored-by: Mahyar Iranibazaz <mahiarirani@pm.me> Co-authored-by: mahiarirani <10583381+mahiarirani@users.noreply.github.com> Co-authored-by: retrevor <75954541+retrevor@users.noreply.github.com> Co-authored-by: Take one <rontrevor@hotmail.com> Co-authored-by: JoaoSRaposo <1598265+JoaoSRaposo@users.noreply.github.com>
137 lines
2.2 KiB
Bash
137 lines
2.2 KiB
Bash
#!/bin/bash
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
BLUE='\033[0;34m'
|
|
YELLOW='\033[0;33m'
|
|
NC='\033[0m'
|
|
|
|
log () {
|
|
echo -e "$1"
|
|
}
|
|
|
|
log_message() {
|
|
echo -e "${BLUE}$1${NC}"
|
|
}
|
|
|
|
log_note() {
|
|
echo -e "${YELLOW}$1${NC}"
|
|
}
|
|
|
|
log_success() {
|
|
echo -e "${GREEN}$1${NC}"
|
|
}
|
|
|
|
log_error() {
|
|
echo -e "${RED}$1${NC}"
|
|
}
|
|
|
|
log_gap() {
|
|
echo -e "-------------------------------------"
|
|
}
|
|
|
|
output=()
|
|
buffer() {
|
|
local line=$1
|
|
output+=("$line")
|
|
}
|
|
|
|
print_buffer() {
|
|
for line in "${output[@]}"
|
|
do
|
|
log "$line"
|
|
done
|
|
output=()
|
|
}
|
|
|
|
failed() {
|
|
local version=$1
|
|
local result=$2
|
|
print_buffer
|
|
log_error "$result"
|
|
log_error "failed to deploy hejbit-$version"
|
|
log_gap
|
|
exit 1
|
|
}
|
|
|
|
action() {
|
|
local action=$1
|
|
local message=$2
|
|
buffer "$(log_message "$message")"
|
|
result=$($action) || failed "$version" "$result"
|
|
buffer "$result"
|
|
}
|
|
|
|
deploy() {
|
|
local version=$1
|
|
cd hejbit-"$version" || failed "hejbit-$version not found"
|
|
|
|
buffer "$(log_note "deploying hejbit-$version")"
|
|
|
|
action "sync_code" "syncing code"
|
|
|
|
action "build_app" "building app"
|
|
|
|
action "nextcloud_upgrade" "upgrading nextcloud"
|
|
|
|
buffer "$(log_success "deployed hejbit-$version")"
|
|
|
|
print_buffer
|
|
log_gap
|
|
}
|
|
|
|
sync_code() {
|
|
git reset --hard > /dev/null 2>&1
|
|
git pull 2>&1 || return 1
|
|
}
|
|
|
|
build_app() {
|
|
result=$(npm install 2>&1)
|
|
status=$?
|
|
log "$result"
|
|
|
|
[ $status -ne 0 ] && return $status
|
|
|
|
result=$(npm run build 2>&1)
|
|
status=$?
|
|
log "$result"
|
|
|
|
return $status
|
|
}
|
|
|
|
nextcloud_upgrade() {
|
|
INFO_XML="appinfo/info.xml"
|
|
CURRENT_VERSION=$(grep -oPm1 "(?<=<version>)[^<]+" "$INFO_XML")
|
|
NEW_VERSION="${CURRENT_VERSION}_${TIMESTAMP}"
|
|
|
|
sed -i "s/<version>${CURRENT_VERSION}<\/version>/<version>${NEW_VERSION}<\/version>/" "$INFO_XML"
|
|
log_message "bumped version to $NEW_VERSION"
|
|
|
|
result=$(docker exec -u www-data hejbit-"$version"-nextcloud-1 php occ upgrade 2>&1)
|
|
status=$?
|
|
log "$result"
|
|
return $status
|
|
}
|
|
|
|
cd /opt/hejbit || log_error "/opt/hejbit not found"
|
|
log_note "deploying hejbit to staging"
|
|
log_gap
|
|
|
|
DEPLOYMENT=()
|
|
TIMESTAMP=$(date +%s)
|
|
for version in {29..31}; do
|
|
deploy "$version" &
|
|
DEPLOYMENT+=($!)
|
|
done
|
|
|
|
statuses=0
|
|
for pid in "${DEPLOYMENT[@]}"; do
|
|
wait "$pid"
|
|
statuses+=$?
|
|
done
|
|
|
|
if [ $statuses -ne 0 ]; then
|
|
log_error "failed to deploy hejbit to staging"
|
|
exit 1
|
|
fi
|
|
log_success "deployed hejbit to staging"
|