mirror of
https://github.com/Dvorinka/Trackeep.git
synced 2026-06-03 20:12:58 +00:00
chore: Add automated release workflow and version management
- Add GitHub Actions workflow for automated releases
- Add semantic versioning support
- Update docker-compose files with version variables
- Add release script for manual versioning
- Add comprehensive version workflow documentation
🚀 Ready for v1.2.5 release
This commit is contained in:
Executable
+221
@@ -0,0 +1,221 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Trackeep Auto-Update Service
|
||||
# Alternative to cron - runs as a systemd service for more reliable scheduling
|
||||
|
||||
set -e
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Configuration
|
||||
TRACKEEP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
AUTO_UPDATE_SCRIPT="$TRACKEEP_DIR/scripts/auto-update.sh"
|
||||
SERVICE_NAME="trackeep-auto-update"
|
||||
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
|
||||
TIMER_FILE="/etc/systemd/system/${SERVICE_NAME}.timer"
|
||||
|
||||
print_status() {
|
||||
echo -e "${BLUE}🔧 $1${NC}"
|
||||
}
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}✅ $1${NC}"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}⚠️ $1${NC}"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}❌ $1${NC}"
|
||||
}
|
||||
|
||||
# Check if running as root
|
||||
check_root() {
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
print_error "This script requires root privileges to install systemd services"
|
||||
print_status "Please run with: sudo $0"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Check if auto-update script exists
|
||||
check_script() {
|
||||
if [ ! -f "$AUTO_UPDATE_SCRIPT" ]; then
|
||||
print_error "Auto-update script not found at: $AUTO_UPDATE_SCRIPT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -x "$AUTO_UPDATE_SCRIPT" ]; then
|
||||
chmod +x "$AUTO_UPDATE_SCRIPT"
|
||||
fi
|
||||
}
|
||||
|
||||
# Create systemd service file
|
||||
create_service() {
|
||||
print_status "Creating systemd service..."
|
||||
|
||||
cat > "$SERVICE_FILE" << EOF
|
||||
[Unit]
|
||||
Description=Trackeep Auto-Update Service
|
||||
After=docker.service
|
||||
Requires=docker.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=$AUTO_UPDATE_SCRIPT
|
||||
WorkingDirectory=$TRACKEEP_DIR
|
||||
User=root
|
||||
Group=root
|
||||
StandardOutput=append:/var/log/trackeep-auto-update.log
|
||||
StandardError=append:/var/log/trackeep-auto-update.log
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
print_success "Service file created: $SERVICE_FILE"
|
||||
}
|
||||
|
||||
# Create systemd timer file
|
||||
create_timer() {
|
||||
print_status "Creating systemd timer..."
|
||||
|
||||
cat > "$TIMER_FILE" << EOF
|
||||
[Unit]
|
||||
Description=Run Trackeep Auto-Update Daily
|
||||
Requires=${SERVICE_NAME}.service
|
||||
|
||||
[Timer]
|
||||
OnCalendar=daily
|
||||
Persistent=true
|
||||
RandomizedDelaySec=3600 # Random delay up to 1 hour
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
EOF
|
||||
|
||||
print_success "Timer file created: $TIMER_FILE"
|
||||
}
|
||||
|
||||
# Install and enable service
|
||||
install_service() {
|
||||
print_status "Installing systemd service and timer..."
|
||||
|
||||
# Reload systemd daemon
|
||||
systemctl daemon-reload
|
||||
|
||||
# Enable and start the timer
|
||||
systemctl enable "$SERVICE_NAME.timer"
|
||||
systemctl start "$SERVICE_NAME.timer"
|
||||
|
||||
print_success "Service and timer installed successfully!"
|
||||
}
|
||||
|
||||
# Show status
|
||||
show_status() {
|
||||
print_status "Service status:"
|
||||
systemctl status "$SERVICE_NAME.timer" --no-pager
|
||||
|
||||
echo ""
|
||||
print_status "Next run time:"
|
||||
systemctl list-timers "$SERVICE_NAME.timer" --no-pager
|
||||
|
||||
echo ""
|
||||
print_status "Recent logs:"
|
||||
journalctl -u "$SERVICE_NAME.service" --no-pager -n 10 || tail -10 /var/log/trackeep-auto-update.log 2>/dev/null || print_warning "No logs found"
|
||||
}
|
||||
|
||||
# Test service
|
||||
test_service() {
|
||||
print_status "Testing auto-update service..."
|
||||
|
||||
# Run the service manually
|
||||
systemctl start "$SERVICE_NAME.service"
|
||||
|
||||
# Show results
|
||||
echo ""
|
||||
print_status "Service execution results:"
|
||||
journalctl -u "$SERVICE_NAME.service" --no-pager -n 20 || tail -20 /var/log/trackeep-auto-update.log 2>/dev/null
|
||||
}
|
||||
|
||||
# Remove service
|
||||
remove_service() {
|
||||
print_status "Removing auto-update service..."
|
||||
|
||||
# Stop and disable timer
|
||||
systemctl stop "$SERVICE_NAME.timer" 2>/dev/null || true
|
||||
systemctl disable "$SERVICE_NAME.timer" 2>/dev/null || true
|
||||
|
||||
# Remove service and timer files
|
||||
rm -f "$SERVICE_FILE" "$TIMER_FILE"
|
||||
|
||||
# Reload systemd daemon
|
||||
systemctl daemon-reload
|
||||
|
||||
print_success "Auto-update service removed"
|
||||
}
|
||||
|
||||
# Main function
|
||||
main() {
|
||||
echo ""
|
||||
print_status "Trackeep Auto-Update Service Setup"
|
||||
print_status "=================================="
|
||||
echo ""
|
||||
|
||||
case "${1:-install}" in
|
||||
"install")
|
||||
check_root
|
||||
check_script
|
||||
create_service
|
||||
create_timer
|
||||
install_service
|
||||
show_status
|
||||
print_success "SystemD auto-update service installed!"
|
||||
echo ""
|
||||
print_status "The service will run daily at a randomized time"
|
||||
print_status "To view logs: journalctl -u $SERVICE_NAME.service -f"
|
||||
print_status "To run manually: systemctl start $SERVICE_NAME.service"
|
||||
print_status "To remove: sudo $0 remove"
|
||||
;;
|
||||
"remove")
|
||||
check_root
|
||||
remove_service
|
||||
;;
|
||||
"status")
|
||||
show_status
|
||||
;;
|
||||
"test")
|
||||
check_root
|
||||
test_service
|
||||
;;
|
||||
"enable")
|
||||
check_root
|
||||
systemctl enable "$SERVICE_NAME.timer"
|
||||
print_success "Timer enabled"
|
||||
;;
|
||||
"disable")
|
||||
check_root
|
||||
systemctl disable "$SERVICE_NAME.timer"
|
||||
print_success "Timer disabled"
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 [install|remove|status|test|enable|disable]"
|
||||
echo " install - Install systemd service for daily auto-update (default)"
|
||||
echo " remove - Remove systemd service"
|
||||
echo " status - Show service status and next run time"
|
||||
echo " test - Run auto-update service manually"
|
||||
echo " enable - Enable the timer"
|
||||
echo " disable - Disable the timer"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Run main function
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user