Commit Graph

2935 Commits

Author SHA1 Message Date
André Roth 9bf71fdbdb fix ststem test 2026-06-17 23:44:28 +02:00
André Roth 91496b33d1 fix test 2026-06-17 23:44:28 +02:00
André Roth c7631a271a disable swagger 2026-06-17 23:44:28 +02:00
André Roth a2bf704785 fix unit tests 2026-06-17 23:44:28 +02:00
André Roth 48514449c6 swagger: remove test 2026-06-17 23:44:28 +02:00
André Roth 405b0cffd8 fix test 2026-06-17 23:44:28 +02:00
André Roth 7b95865103 publish: support MultiDist toggle 2026-06-17 23:42:07 +02:00
André Roth cd9be39cfc tasks: fix race conditions
* show resources in task details
* fix task state locking
* return task object consistently

Race condition iexisted where task State, err, and processReturnValue fields
were written by consumer goroutine and read by concurrent accessors without
proper synchronization, causing torn reads and data races.
2026-06-17 23:42:07 +02:00
André Roth 239d09bbb7 mirror: fix race conditions
* load data inside background tasks
  Perform collection.LoadComplete inside maybeRunTaskInBackground
  Have tasks use a fresh copy of taskCollectionFactory, taskCollection
2026-06-17 23:42:07 +02:00
André Roth a3f3eb69bc snapshot: fix race conditions
* perform collection.LoadComplete inside maybeRunTaskInBackground
 * have tasks use a fresh copy of taskCollectionFactory, taskCollection
 * fix locking for snapshots of snapshots by locking SourceSnapshots
 * use uuids, since names can be renamed
2026-06-17 23:42:07 +02:00
André Roth f50dd95c12 repos: fix race conditions
* load data inside background tasks
  Perform collection.LoadComplete inside maybeRunTaskInBackground
  Have tasks use a fresh copy of taskCollectionFactory, taskCollection
* use uuids, since names can be renamed
2026-06-17 23:42:06 +02:00
André Roth 038a9219d6 publish: fix race conditions
* remove useless resource lock
  Resource locks need to be before the background task. creating same publish endpoint at the same time is unlikely...
* load data inside background tasks
  This fixes a flaw in async apis, which loaded the published repo from the DB and mutated it outside the task closure, before the task lock was acquired.
  Perform collection.LoadComplete inside maybeRunTaskInBackground and have tasks use a fresh copy of taskCollectionFactory, taskCollection
* lock source repos/snapshots for publish operations
  Concurrent tasks were not properly locking their resources, leading to inconsistent published indexes:
  SourceLocalRepo: iterate published.Sources (component -> source UUID), look up each local repo via localRepoCollection.ByUUID and append string(repo.Key()) to resources
  SourceSnapshot: iterate b.Snapshots,look up each snapshot via snapshotCollection.ByName and append string(snapshot.ResourceKey()) to resources.
* lock pool on non MultiDist publish
* revert mutex on LinkFromPool
* use uuids, since names can be renamed
* add test for MultiDist change
2026-06-17 23:42:06 +02:00
André Roth 695297f615 cleanup 2026-06-17 23:42:06 +02:00
André Roth fc3a3140f1 ci: update codecov-action to 7.0.0 2026-06-17 23:42:06 +02:00
André Roth 60da3056b9 ci: use correct ubuntu 26.04 codename 2026-06-17 23:42:06 +02:00
Catalin Muresan ecdcaae838 Added tests to please codeconv 2026-06-17 23:42:06 +02:00
Catalin Muresan b2196cc37a Fix crash in aptly db recover 2026-06-17 23:42:06 +02:00
André Roth d2f8852165 docs: fix typos 2026-06-17 23:42:06 +02:00
André Roth 7686e63dcc ci: build for ubuntu 26.04 2026-06-17 23:42:06 +02:00
André Roth 4e5a57b04c system tests: do not depend on launchpad.net 2026-06-17 23:42:06 +02:00
André Roth b064d9e16f config: allow setting PPA Base URL 2026-06-17 23:42:06 +02:00
André Roth 89e315485d document prometheus API
* enable in dev and test env
* fix api/repos doc
2026-06-17 23:42:06 +02:00
Russell Greene c10ed5e1e8 fix docs for Serve in API mode 2026-06-17 23:42:06 +02:00
André Roth 14e1d16f78 ci: do not upload coverage for dependabot 2026-06-17 23:42:06 +02:00
André Roth 8de57e3ae1 ci: fix coverage 2026-06-17 23:42:06 +02:00
Tim Foerster 59fea9c090 Add SOURCE_DATE_EPOCH support for reproducible builds
Implement support for the SOURCE_DATE_EPOCH environment variable as
specified by reproducible-builds.org. When set, this variable overrides
the current timestamp in the Release file's Date and Valid-Until fields,
enabling reproducible filesystem publishes.

- Read SOURCE_DATE_EPOCH environment variable in Publish()
- Use the epoch timestamp for both Date and Valid-Until fields
- Gracefully fallback to current time if unset or invalid
- Add comprehensive tests for valid and invalid SOURCE_DATE_EPOCH values
2026-06-17 23:42:06 +02:00
André Roth 9775e28d50 multi sign: add test 2026-06-17 23:42:06 +02:00
Ales Bregar ad29c2bdd7 clearer REST api docs, put whitespace to docs to show that keyId strings are trimmed 2026-06-17 23:42:06 +02:00
Ales Bregar c6c771e9a0 updating REST api with multiple gpg keys support, due backwards compatibility introducing CSV under same key (gpg-key) 2026-06-17 23:42:06 +02:00
Ales Bregar c654c691a2 review fix 2026-06-17 23:42:06 +02:00
Ales Bregar 49cb084c8f system test t12_api sends empty keyRef string, making gpg fail 2026-06-17 23:42:06 +02:00
Ales Bregar ec195aad47 system test unexpected string fix (would be helpful, but not changing the test just for this) 2026-06-17 23:42:06 +02:00
Ales Bregar 9bf94f74e2 system test configuration fix 2026-06-17 23:42:06 +02:00
Ales Bregar 86f416793c documentation updated 2026-06-17 23:42:06 +02:00
Ales Bregar 9d2eae0c91 white space revert to minimize change 2026-06-17 23:42:06 +02:00
Ales Bregar 568aab9175 - #309 adding gpgKeys config key, accepting array of keyRef, cli args has precedence
- #691 adding handling of multiple keyRefs when signing with gpg
2026-06-17 23:42:06 +02:00
André Roth 45d2dcad1b tasklist: fix deadlocks
* lock correct resources
* unlock list before queueing
2026-06-17 23:42:05 +02:00
André Roth 9e21584c59 ci: fail on failed coverage upload 2026-06-17 23:42:05 +02:00
André Roth 82badc03ac unit-test: use /smallfs when non-root 2026-06-17 23:42:05 +02:00
André Roth 56cc98cb73 ci: provide 1MB /smallfs to docker 2026-06-17 23:42:05 +02:00
André Roth f409c293e9 ci: run unit tests in docker
- run separate unit-test job
- build docker
- allow make docker-unit-tests in ci
2026-06-17 23:42:05 +02:00
Brian Witt 667f0d530a error on out of space 2026-06-17 23:42:05 +02:00
Linus Fischer 32bca2f680 Fix swagger property casing 2026-06-17 23:42:05 +02:00
Yaksh Bariya d47e5fec16 give myself some credit as well
Cause I'm nice :)
2026-06-17 23:42:05 +02:00
Yaksh Bariya a0b56e1a64 make version comparision more similar to that of dpkg
Initially found by automated repository health checks used by Termux
in https://github.com/termux/termux-packages/issues/27472

The root problem was 4.3.5a comparing less than 4.3.5-rc1-1 by aptly
According to debian "4.3.5a" > "4.3.5-rc1-1"

This is because dpkg splits hyphen for revision at the first hyphen,
whereas aptly was splitting at the last hyphen which is different from
dpkg's behaviour.

dpkg behaviour: https://git.dpkg.org/cgit/dpkg/dpkg.git/tree/lib/dpkg/parsehelp.c#n242

Perhaps this wasn't detected as there was broken tests in the repository
since the initial commit of aptly. This also fixes those tests
2026-06-17 23:42:05 +02:00
Tobias Assarsson f631bea426 fix repo edit api. 2026-06-17 23:42:05 +02:00
Ryan Gonzalez 80753c1deb system-test: Allow skipping coverage
Enabling coverage near-doubles the incremental build time and adds
overhead to individual tests on the order of **5-10x** or more. It's not
essential to have this for quick local system-test runs, so add an option
to disable it.
2026-06-17 23:42:05 +02:00
Ryan Gonzalez 4e394d14d3 system-test: Forward CAPTURE to docker
The code was only forwarding TEST, but CAPTURE is useful too.
2026-06-17 23:42:05 +02:00
Ryan Gonzalez 1ea9d41e46 docker: Preserve the go build cache
Otherwise, every `make docker-...` invocation will need to rebuild
everything from scratch.
2026-06-17 23:42:05 +02:00
Ryan Gonzalez 119330c1bf docker: Fix usage with rootless podman and SELinux
When using rootless podman, the *current user* gets mapped to uid 0,
which results in the aptly user being unable to write to the build
directory. We can instead map the current user to the corresponding uid
in the container via `PODMAN_USERNS=keep-id`, which matches up with what
docker-wrapper wants...but then that will *enter the container as the
current uid*, which messes with the ability to set permissions on
`/var/lib/aptly`. That can be fixed by explicitly passing `--user 0:0`,
which should be a no-op on docker (since the container's default user is
already root).

Additionally, this adds `--security-opt label=disable` to avoid
permission errors when running on systems with SELinux enforcing.
2026-06-17 23:42:05 +02:00