* Add "show-config" subcommand
* Add integration tests
* Handle wrong additional args
* Support "BackupFilenameExpand" option
* Rename to print-config
* Remove config nil check as it will never be nil
* Rework print config to work with config.resolve()
* Use defer unset()
* Add warning about feature not being stable yet
The current behavior is prone to introducing unwanted
drift between docs and latest image. Change deployment
to happen on release only, and leave a workflow_dispatch
for when smaller fixes need to go out without a release.
* feat: Add Google Drive storage backend with custom endpoint support
- Implement Google Drive storage backend using service account authentication
- Add support for custom Google Drive API endpoints for testing
- Include comprehensive test setup with mock services
- Add configuration options for Google Drive credentials and folder ID
- Update documentation with Google Drive configuration examples
* remove debug messages
* Improve tests
* Add mounting tip on documentation
* Replace deprecated lib usage
* Fix identation
* Fix googledrive tests
* Fix googledrive support for _FILE credentials
* Remove googledrive test unecessary echos
* Update set-up-dropbox.md
Updated text for explanation of DROPBOX_REMOTE_PATH environment variable usage accordingly to how the Dropbox App was scoped during creation.
* Update set-up-dropbox.md
Minor style edit
* Update index.md
Replaced /Apps/my-test-app/some_subdir with /somedir in example value for DROPBOX_REMOTE_PATH environment variable under "Backing up to Dropbox" section, to align with updates done to related "how-to" text
GPG is known to have usability issues and is generally cumbersome to
use. age [0] is a modern alternative to GPG that is designed by a
cryptographer that has worked and continues to work on Golang's crypto
packages for years.
Allowing age to be used to encrypt backups dramatically simplifies the
backup process.
[0]: https://age-encryption.org/
* Add "none" compression type
* Add "none" compression to docs
* Use passThroughWriteCloser for "none" compression
* Add test for none compression
---------
Co-authored-by: Frederik Ring <frederik.ring@gmail.com>
* Move cron scheduling inside application
* Make envvar a fallback and check for errors
* Panic significantly less
* propagate error out of runBackup
* Add structured logging
* FIx error propagation to exit
* Enable the new scheduler by default
* Review fixes
* Added docs and better error propagation
* Do not await containers when there was an error on scaling
* Add test case for usage with socket proxy
* Add documentation on required permissions for docker-socket-proxy
* Add full list of used Docker APIs to doc
* CONTAINER_START and CONTAINER_STOP is not needed
* Query for labeled services as well
* Try scaling down services
* Scale services back up
* Use progress tool from Docker CLI
* In test, label both services
* Clean up error and log messages
* Document scale-up/down approach in docs
* Downgrade Docker CLI to match client
* Document services stats
* Do not rely on PreviousSpec for storing desired replica count
* Log warnings from Docker when updating services
* Check whether container and service labels collide
* Document script behavior on label collision
* Add additional check if all containers have been removed
* Scale services concurrently
* Move docker interaction code into own file
* Factor out code for service updating
* Time out after five minutes of not reaching desired container count
* Inline handling of in-swarm container level restart
* Timer is more suitable for timeout race
* Timeout when scaling down services should be configurable
* Choose better filename
* Reflect changes in naming
* Rename and deprecate BACKUP_STOP_CONTAINER_LABEL
* Improve logging
* Further simplify logging