Releases: creativeprojects/resticprofile
v0.32.0
🍁 Autumn release 🍂
This release brings significant improvements to scheduling, HTTP hooks, configuration handling, and copy operations, along with important bug fixes and dependency updates.
New Features
Enhanced Copy Command Support
- Copy from repository: Added support for specifying source repositories in copy operations with new
from-repository,from-password-file,from-password-command, and otherfrom-*configuration options. - This enables more flexible backup copying workflows between different repositories.
Improved Windows Task Scheduler Integration
- Run Level Control: New
schedule-run-leveloption allows setting task privilege levels (lowest,highest,auto) for Windows Task Scheduler. - Hide Window Option: New
schedule-hide-windowoption to prevent task windows from interrupting user activity when running withuser_logged_onpermission. - Enhanced Task Management: Completely rewritten task information parsing to fix issues with spaces in filenames.
Template Function Enhancements
- Random Number Generation: New
randInttemplate function for generating pseudo-random numbers with seeded repeatability. - Usage:
{{ "seed" | randInt low high }}- useful for creating variable schedules or unique identifiers.
HTTP Hooks Improvements
- URL Encoding: Automatic URL encoding applied to
ERROR,ERROR_COMMANDLINE, andERROR_STDERRenvironment variables when used in URLs. - Environment Variable Resolution: Enhanced environment variable resolution in both URL and body of HTTP hooks, with proper separation of URL and body processing.
Bug Fixes and Improvements
Signal Handling
- Group Execution: Fixed interrupt signal handling to properly stop execution of remaining profiles in a group when Ctrl+C is pressed.
Path Resolution
- Executable Handling: Enhanced executable path resolution on Linux to properly handle relative paths, PATH lookups, and working directory resolution.
- Configuration Escaping: Fixed proper escaping of backup source paths in configuration to handle special characters and spaces.
Scheduling Fixes
- Crontab Generation: Fixed crontab file generation to work without user field, improving compatibility with various cron implementations.
New contributors
Thanks to @lil5, @jeinwag, @hansmi and @zumm for their valuable help in making this new release 🎉
Changelog
- c7e87a1 Add "randInt" template function for random number (#540)
- f93ce20 Add copy from repository in configuration (#486)
- de391cb [Docs] Add ~/.config/resticprofile/ to macOS default paths (#509)
- f222ed2 add Makefile help target
- 63dee21 add field bytes_added_packed in status file etc. (#519)
- adf90cb enhance Executable function to handle relative paths (#537)
- f98a2f5 feat(schedule): introduce
run-leveloption (#546) - 5f1c69d feat(schedule): introduce
schtasks-hide-windowoption (#541) - 461710b fix(http-hooks): apply url encoding for ERROR_* env vars (#538)
- f9039fa fix(http-hooks): resolve profile env in url and body (#544)
- 1dce428 fix(schedule): generate crontab files without user field (#556)
- 25c2f06 linux: don't resolve symlink on executable to keep a constant name when installed via homebrew (#508)
- 859da21 optimize systemctl commands (#531)
- f748032 read task info from list format instead of CSV (#547)
- 99e6d33 stop running other profiles in group after receiving interrupt signal (#539)
- 720d7ee update Node.js version to 22 and upgrade dependencies in go.mod and go.sum (#543)
- f265fa2 update SonarCloud trigger condition to check for SONAR_TOKEN presence (#542)
v0.31.0
🍸 Spring Bank Holiday release 🌞
This release includes several long-awaited improvements.
Improvements:
- Add support for the new Restic flag
exclude-cloud-filesintroduced in version 0.18.0 (Windows only). - Include missing
run-*andsend-*targets in all commands (previously missing incheckandcopycommands). - Send Restic version as a new Prometheus metric.
- Support
.ymlfiles when searching for configuration files (previously only.yamlwas considered).
Bug fixes:
- Ignore missing drop-in files to prevent creating an empty systemd schedule.
Changelog
- f7566ac Add missing run-* and send-* to all command sections (#504)
- 88fcedb add support for windows only flag exclude-cloud-files (#500)
- 81a6e45 add support for yml extension when searching for configuration file (#506)
- 43b6c84 add version of restic to the Prometheus metrics (#495)
- 763a2cd fix: remove duplicated field
- c3add93 ignore missing drop-in files to avoid creating an empty configuration (#502)
- 8fd3ddb replace deprecated sonar scan action (#503)
v0.30.1
v0.30.0
🌱 Spring release 🌸
This release introduces features and fixes for profile scheduling.
⚠️ Breaking change
Until this release, the user scheduling permission was broken. With systemd or the default macOS scheduler, the permission functioned as user_logged_on, running the profile only when the user was logged in.
This issue is now fixed for new schedules.
To update existing schedules, run unschedule and then schedule again.
For systemd, resticprofile requires root privileges (via sudo) to schedule with user permission, as it now uses a system unit running as the user.
Scheduler
Scheduling has been significantly improved with the ability to read existing schedules. The status and unschedule commands now detect any resticprofile schedules from the selected configuration file, even if the profile is no longer present.
Due to recent error reports, Windows Task Scheduler integration has been completely rewritten to use the schtasks CLI tool.
Other
- Fixed issue with non-existent battery reported on recent Mac desktop hardware.
- Added support for Restic 0.18.
- Included pre-built binary for Windows on ARM64.
- Upload Resticprofile container to GitHub Container Registry.
Changelog
- f14094b Correct configuration search paths on Windows (#478)
- 1b05c7a Create FUNDING.yml
- b6b8285 Documentation versioning (#464)
- edc1292 Run tests on read only source dir (#461)
- ae073ae Schedule user logged in (#470)
- 8d8a0da Scheduling improvements (#425)
- e490c42 Set schedule permissions (#476)
- 07df141 Upload to Github Container Registry (#479)
- 4103971 Use schtasks.exe CLI to schedule jobs on Windows (#459)
- ae38db9 add microarchitecture to version command (#466)
- 87cfd5d add other restic exit codes
- ac3b810 chore: add pre-built binary for windows arm64
- edbea57 chore: add support for restic 0.18
- c5a5dfa don't include systemd dependencies on macos & windows
- af9ab7f fix for macOs ghost battery (#468)
- 6c9b3cd remove devcontainer config
- b867b01 replace experimental maps package with standard library (#467)
v0.29.1
❄️ Small maintenance release ☃️
Not much going on in this maintenance release while I'm still working on a big refactoring of the scheduling for the next release.
- logrotate package added to the Docker image
- upgrade dependencies to fix security vulnerabilities
Changelog
- e2297a6 add logrotate to docker image #440
- 37c9aef upgrade package - CVE-2024-45337
- 467b82e upgrade packages
v0.29.0
🧙🏻♀️ Halloween edition 🎃
- Finally a long standing bug was fixed in this version: use proper
niceandionicevalues onsystemdscheduled tasks. - Also the last chunk of work for the configuration
v2: we can now schedule groups! - Improvement on the JSON schema: a single URL can be used for
v1andv2configuration - Another long standing bug on Windows: escape configuration file path on scheduled tasks
Changelog
- fb6c7a2 Escape config file name in schedule parameters (#420)
- 1d3ec32 Fix scheduling arguments (#423)
- 62c5c64 Global json schema (auto versioning) (#412)
- 2a34ea7 Group schedule (#418)
- 830d0fd Setup systemd priority (#409)
- 62f3118 doc: upgrade hugo theme
- da03de7 fix deprecated option in goreleaser config
v0.28.1
🍂 Autumn bug fixing 🍁
- fix JSON schema for TOML files that stopped working some time ago (when using
Even Better TOMLextension on VSCode) - [configuration v2] fix regression bug where profile groups were stopping after an error when the
continue-on-errorflag was set
Changelog
- 57d1439 Fix for continue-on-error broken in 0.26.0 (#407)
- ccccfa2 Linters (#397)
- 249fd41 add base url on json schema (#408)
- b254503 add misspell linter
- 7dcb41b fix bullet points from restic man (#398)
- 4181d9e fix overflow integer conversion lint warning from gosec (#399)
- 2231793 generate JSON schema for restic 0.17
- 0ad1b68 prepare next release
- 3612b51 use goreleaser v2
v0.28.0
🌞 Sunny Summer Edition 🌻
Two big things in this release:
- support for all the new commands and flags of
restic 0.17 - experimental support for environment variables in configuration flags
Example of using environment variables in configuration:
check-repo-profile:
inherit: default
run-before:
- "echo DOW=`date +\"%u\"` >> {{ env }}"
check:
read-data-subset: "$DOW/7"
Changelog
v0.27.1
🌦️ Rainy Summer Edition ☔
Fix of a regression bug preventing resticprofile from sending logs to a temporary session log file (prefixed with temp:/t/)
Thanks @iluvatyr for the quick bug report 👍🏻
Changelog
- a615444 fix creation of mock binaries during unit tests (#375)
- c9f87ec fix documentation for release
- eb13003 fix regression with temporary log file (#386)
- abf35a7 prepare next release
- 854f6c9 refactor unit tests on package lock (#374)
- ffffabf remove flaky test
- 5cfdca2 remove goarm linked to the internal variable of runtime go1.23 will apparently forbid the use of linkname to the standard library
v0.27.0
🌻 Summer release 🌞
Summer is here in the Northern Hemisphere! A new release is here too! 🎉
A lot of goodies in this release:
new run-schedule command
It's more a behind the scene feature: you no longer need to re-schedule your targets after you changed the configuration. The generated schedule command line is now using this new run-schedule command that reads all the newest bits from the configuration.
You might want to unschedule and schedule all your profiles one last time to replace the existing command line using the new run-schedule command.
More information: https://creativeprojects.github.io/resticprofile/schedules/commands/index.html#run-schedule-command
direct support for crontab files
Previously resticprofile was using the crontab tool to read and write crond schedules. Now you can directly setup a crontab file no matter which tool is going to consume it.
More information: https://creativeprojects.github.io/resticprofile/schedules/index.html
keep content of configuration variables between commands
This was a big issue for some time. The wait is over! You can now set a configuration variable anywhere in a script and use its value later.
More information: https://creativeprojects.github.io/resticprofile/configuration/run_hooks/index.html#passing-environment-variables
"RESTICPROFILE_{FLAGNAME}" env vars
All cli flags can now be set using environment variables.
More information: #334
allow controlling command output redirection
Allow redirection of the console messages to a log file or to syslog.
More information: #343
Add "--stderr" to redirect console to stderr (for "cat" and "dump")
More information: #353
Add option to set working directory for restic backup
More information: #354
many bug fixes!
Changelog
- 1bbac2a Add "--stderr" to redirect console to stderr (for "cat" and "dump") (#353)
- 0598026 Add documentation on how to ingest resticprofile stats into telegraf (#366)
- f9b5dac Add option to set working directory for restic backup (#354)
- 00360a2 Fix group priority (#339)
- a05ad39 Relative source followup: Evaluate symlinks (#355)
- 56f20af Squashed commit of the following: (#259)
- 6b00c2c add "profile" flag as an alias for "name" (#357)
- 6da0317 also search configuration from ~/.config/resticprofile on macOS (#370)
- 5739b13 crond: add support for crontab file only (on any OS) (#289)
- 9719411 don't replace header value in stringifyHeaders (#327)
- 2a7d5fc drop-ins: move systemd drop-ins into unified schedule struct (#341)
- 7e03741 drop-ins: transparent timer drop-in support (#340)
- 9b2bd8c env-file: Implement dotenv and {{env}} support (#323)
- 16f5dc5 fix remaining unit tests failing in Windows (#360)
- 3b8613e fixed link to config reference / global section (#349)
- 5fad1cb flags: added "RESTICPROFILE_{FLAGNAME}" env vars (#335)
- 85d5afc log: allow controlling command output redirection (#343)
- e5b17d3 restic: use repository-file if the repo flag contains a password (#336)
- 4255868 schedule: added unified schedule config struct (#333)
- 667180e syslog: local syslog and stdout redirection (#344)
- e93874d build with go 1.22 and macOs arm64 (#317)
- e6eed3d update test to pass on Windows 11 (#359)
- 655e9c5 upgrade packages (CVE-2024-24786) (#347)
- 08a01c4 upgrade packages (CVE-2024-6104)