8da7ec2bff00c79124d1b8f21f360fc5ccbaf84a
Unbound Release / Check Preconditions (push) Successful in 25s
Unbound Release / Create Tag (push) Skipped
storage / test (push) Skipped
storage / vulnerabilities (push) Skipped
pre-commit / pre-commit (push) Skipped
Unbound Release / Create Release (push) Successful in 29s
Unbound Release / Generate Changelog and Handle PR (push) Successful in 10m23s
Release / release (push) Successful in 33m12s
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/setup-python](https://github.com/actions/setup-python) | action | major | `v6` → `v7` | --- ### Release Notes <details> <summary>actions/setup-python (actions/setup-python)</summary> ### [`v7.0.0`](https://github.com/actions/setup-python/releases/tag/v7.0.0) [Compare Source](https://github.com/actions/setup-python/compare/v7.0.0...v7.0.0) #### What's Changed ##### Enhancements - Migrate to ESM and upgrade dependencies by [@​priyagupta108](https://github.com/priyagupta108) in [#​1330](https://github.com/actions/setup-python/pull/1330) - Pin SHA commits and update docs with latest versions by [@​HarithaVattikuti](https://github.com/HarithaVattikuti) in [#​1338](https://github.com/actions/setup-python/pull/1338) - Remove the pip-install input by [@​gowridurgad](https://github.com/gowridurgad) in [#​1336](https://github.com/actions/setup-python/pull/1336) ##### Bug Fix - Fix to Classify stderr warning messages as warnings instead of errors in annotations by [@​lmvysakh](https://github.com/lmvysakh) in [#​1335](https://github.com/actions/setup-python/pull/1335) - Validate and retry manifest fetch to prevent silent failures by [@​priyagupta108](https://github.com/priyagupta108) in [#​1332](https://github.com/actions/setup-python/pull/1332) ##### Dependency Upgrade - Bump certifi from 2020.6.20 to 2024.7.4 in /**tests**/data by [@​dependabot](https://github.com/dependabot) in [#​1328](https://github.com/actions/setup-python/pull/1328) - Remove EOL Python versions and Bumps numpy text fixture by [@​priya-kinthali](https://github.com/priya-kinthali) in [#​1333](https://github.com/actions/setup-python/pull/1333) - Upgrade [@​actions/cache](https://github.com/actions/cache) to 6.2.0 by [@​philip-gai](https://github.com/philip-gai) in [#​1337](https://github.com/actions/setup-python/pull/1337) #### New Contributors - [@​lmvysakh](https://github.com/lmvysakh) made their first contribution in [#​1335](https://github.com/actions/setup-python/pull/1335) - [@​philip-gai](https://github.com/philip-gai) made their first contribution in [#​1337](https://github.com/actions/setup-python/pull/1337) **Full Changelog**: <https://github.com/actions/setup-python/compare/v6...v7.0.0> ### [`v7`](https://github.com/actions/setup-python/compare/v6.3.0...v7.0.0) [Compare Source](https://github.com/actions/setup-python/compare/v6.3.0...v7.0.0) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTcuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI1Ny4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->Reviewed-on: #165 Co-authored-by: Renovate Bot <renovate@unbound.se>
Storage Module
Shared storage utilities for AWS S3.
Features
- S3 object storage with presigned URL generation
- Two upload strategies: managed uploads (for large files) and direct uploads
- Configurable part size for multipart uploads
- 15-minute presigned URL expiration
Usage
Using the Upload Manager (recommended for large files)
import "gitea.unbound.se/unboundsoftware/storage"
// Create storage with automatic AWS config loading
s3Storage, err := storage.New("my-bucket")
if err != nil {
// handle error
}
// Upload a file and get a presigned URL
url, err := s3Storage.Store("path/to/file.pdf", fileReader, "application/pdf")
Using Direct Upload (for smaller files or custom config)
import (
"github.com/aws/aws-sdk-go-v2/config"
"git.unbound.se/unboundsoftware/storage"
)
// Load custom AWS config
cfg, err := config.LoadDefaultConfig(context.Background())
if err != nil {
// handle error
}
// Create storage with custom config
s3Storage := storage.NewS3(cfg, "my-bucket")
// Upload a file and get a presigned URL
url, err := s3Storage.Store("path/to/file.pdf", fileReader, "application/pdf")
Configuration
The storage module uses AWS SDK v2 and loads configuration from:
- Environment variables (
AWS_REGION,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY) - Shared configuration files (
~/.aws/config,~/.aws/credentials) - IAM roles (when running on AWS infrastructure)