Compare commits

...

7 Commits

Author SHA1 Message Date
André Roth d64ce33e2a mirror: fix rename 2026-07-01 16:11:41 +02:00
André Roth f59b0d2b06 go: 1.26 2026-07-01 10:40:38 +02:00
André Roth aa42fc1025 Merge pull request #1598 from C0deSentin3l/master
Dont lock the go version to the .0 release
2026-06-29 16:58:46 +02:00
C0deSentin3l 080da87b4e Dont lock the go version to the .0 release
the .0 release of go 1.25 is not the latest version of that release so missing out on security fixes etc
2026-06-29 12:06:48 +01:00
André Roth 87e6a36d9b docs: update release task list 2026-06-25 16:33:40 +02:00
André Roth 908f7348d9 Merge pull request #1596 from aptly-dev/release/1.6.3
Release 1.6.3
2026-06-24 23:35:03 +02:00
André Roth 65b34cfec5 debian: update changelog 2026-06-24 20:37:39 +02:00
6 changed files with 130 additions and 4 deletions
+1
View File
@@ -16,3 +16,4 @@ git push origin v$version master
- update version in content/download.md - update version in content/download.md
- push commit to master - push commit to master
- create release announcement on https://github.com/aptly-dev/aptly/discussions - create release announcement on https://github.com/aptly-dev/aptly/discussions
- update aptly infrastructure
+1
View File
@@ -597,6 +597,7 @@ func apiMirrorsUpdate(c *gin.Context) {
if err == nil { if err == nil {
return &task.ProcessReturnValue{Code: http.StatusConflict, Value: nil}, fmt.Errorf("unable to rename: mirror %s already exists", b.Name) return &task.ProcessReturnValue{Code: http.StatusConflict, Value: nil}, fmt.Errorf("unable to rename: mirror %s already exists", b.Name)
} }
remote.Name = b.Name
} }
downloader := context.NewDownloader(out) downloader := context.NewDownloader(out)
+52
View File
@@ -1,3 +1,55 @@
aptly (1.6.3) stable; urgency=medium
* NEW FEATURES:
* Google Cloud Storage (GCS) publish backend (https://github.com/aptly-dev/aptly/pull/1550)
* dput-compatible file upload API (https://github.com/aptly-dev/aptly/pull/1436)
* JFrog Artifactory publish backend (https://github.com/aptly-dev/aptly/pull/1553)
* AppStream (DEP-11) mirror support (https://github.com/aptly-dev/aptly/pull/1543)
* Multiple GPG keys support (https://github.com/aptly-dev/aptly/pull/1479)
* GPG key list & delete API (https://github.com/aptly-dev/aptly/pull/1558)
* Edit mirror API endpoint (https://github.com/aptly-dev/aptly/pull/1535)
* NumPackages in list responses (https://github.com/aptly-dev/aptly/pull/1559)
* Mirror latest packages (https://github.com/aptly-dev/aptly/pull/1513)
* Reproducible builds / `SOURCE_DATE_EPOCH` support (https://github.com/aptly-dev/aptly/pull/1537), https://github.com/aptly-dev/aptly/pull/1542)
* `Release` file `Version` field support (https://github.com/aptly-dev/aptly/pull/1533)
* `InRelease` file `Signed-By` field support (https://github.com/aptly-dev/aptly/pull/1518), https://github.com/aptly-dev/aptly/pull/1519)
* GCP / Google Artifact Registry authentication (https://github.com/aptly-dev/aptly/pull/1505)
* Update publish label & origin (https://github.com/aptly-dev/aptly/pull/1484)
* Ubuntu 26.04 / resolute builds (https://github.com/aptly-dev/aptly/pull/1571)
* BUG FIXES:
* Race condition & concurrency fixes for the REST API (https://github.com/aptly-dev/aptly/pull/1574)
* Fix empty line in `Package-List` for source packages (https://github.com/aptly-dev/aptly/pull/1588)
* Publish: check storage exists before publishing (https://github.com/aptly-dev/aptly/pull/1587)
* S3 publish race condition (https://github.com/aptly-dev/aptly/pull/1594)
* Repo edit name optionally (https://github.com/aptly-dev/aptly/pull/1593)
* Fix crash in `aptly db recover` (https://github.com/aptly-dev/aptly/pull/1565)
* Fix deadlocks in task list (https://github.com/aptly-dev/aptly/pull/1529)
* Fix S3 re-upload issue (https://github.com/aptly-dev/aptly/pull/1480)
* Fix `aptly repo edit` API (https://github.com/aptly-dev/aptly/pull/1493)
* Fix out-of-disk-space error handling (https://github.com/aptly-dev/aptly/pull/1504)
* Fix `aptly mirror update` removing unrelated params (https://github.com/aptly-dev/aptly/pull/1466)
* Fix concurrent pool linking race condition (https://github.com/aptly-dev/aptly/pull/1481)
* Fix `dpkg`-compliant version comparison (https://github.com/aptly-dev/aptly/pull/1509)
* Fix Swagger property casing and spec errors (https://github.com/aptly-dev/aptly/pull/1510), https://github.com/aptly-dev/aptly/pull/1498)
* Remove useless nil check (https://github.com/aptly-dev/aptly/pull/1482)
* Format Go code with gofmt (https://github.com/aptly-dev/aptly/pull/1483)
* DEPENDENCIES CHANGES:
* Go toolchain → 1.25.0
* `go.opentelemetry.io/otel` → v1.41.0 (https://github.com/aptly-dev/aptly/pull/1586)
* `go.opentelemetry.io/otel/sdk` → v1.43.0 (https://github.com/aptly-dev/aptly/pull/1584)
* `github.com/go-jose/go-jose/v4` → v4.1.4 (https://github.com/aptly-dev/aptly/pull/1585)
* `github.com/go-git/go-git/v5` → v5.19.1 (https://github.com/aptly-dev/aptly/pull/1590)
* `github.com/ulikunitz/xz` → v0.5.15 (fixes 32-bit build failures)
* `golang.org/x/crypto` → v0.45.0 (https://github.com/aptly-dev/aptly/pull/1506)
* `google.golang.org/grpc` → v1.79.3 (https://github.com/aptly-dev/aptly/pull/1546)
* `github.com/aws/aws-sdk-go-v2/service/s3` → v1.97.3 (https://github.com/aptly-dev/aptly/pull/1554)
* `github.com/cloudflare/circl` → v1.6.3 (https://github.com/aptly-dev/aptly/pull/1461), https://github.com/aptly-dev/aptly/pull/1541)
* `requests` (Python, system tests) → 2.33.0 (https://github.com/aptly-dev/aptly/pull/1460), https://github.com/aptly-dev/aptly/pull/1547)
* `github.com/ProtonMail/go-crypto` → v1.4.0
* `golang.org/x/net` → v0.48.0
-- André Roth <neolynx@gmail.com> Wed, 24 Jun 2026 18:47:05 +0200
aptly (1.6.2) stable; urgency=medium aptly (1.6.2) stable; urgency=medium
* doc: add swagger doc for /api/gpg/key (https://github.com/aptly-dev/aptly/pull/1456) * doc: add swagger doc for /api/gpg/key (https://github.com/aptly-dev/aptly/pull/1456)
+1 -1
View File
@@ -1,6 +1,6 @@
module github.com/aptly-dev/aptly module github.com/aptly-dev/aptly
go 1.25.0 go 1.26
require ( require (
github.com/AlekSi/pointer v1.1.0 github.com/AlekSi/pointer v1.1.0
+3 -3
View File
@@ -2,7 +2,7 @@ FROM debian:trixie-slim
RUN echo 'deb http://deb.debian.org/debian trixie-backports main' > /etc/apt/sources.list.d/backports.list && \ RUN echo 'deb http://deb.debian.org/debian trixie-backports main' > /etc/apt/sources.list.d/backports.list && \
apt-get update -y && apt-get install -y --no-install-recommends curl gnupg bzip2 xz-utils ca-certificates vim procps \ apt-get update -y && apt-get install -y --no-install-recommends curl gnupg bzip2 xz-utils ca-certificates vim procps \
golang-1.25 golang-1.25-go golang-1.25-src \ golang-1.26 golang-1.26-go golang-1.26-src \
make git python3 python3-requests-unixsocket python3-termcolor python3-swiftclient python3-boto3 python3-azure-storage \ make git python3 python3-requests-unixsocket python3-termcolor python3-swiftclient python3-boto3 python3-azure-storage \
g++ python3-etcd3 python3-plyvel graphviz devscripts sudo dh-golang binutils-i686-linux-gnu binutils-aarch64-linux-gnu \ g++ python3-etcd3 python3-plyvel graphviz devscripts sudo dh-golang binutils-i686-linux-gnu binutils-aarch64-linux-gnu \
binutils-arm-linux-gnueabihf bash-completion zip ruby-dev lintian npm \ binutils-arm-linux-gnueabihf bash-completion zip ruby-dev lintian npm \
@@ -10,8 +10,8 @@ RUN echo 'deb http://deb.debian.org/debian trixie-backports main' > /etc/apt/sou
gcc-i686-linux-gnu gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu \ gcc-i686-linux-gnu gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu \
faketime dput-ng && \ faketime dput-ng && \
apt-get clean && rm -rf /var/lib/apt/lists/* && \ apt-get clean && rm -rf /var/lib/apt/lists/* && \
ln -sf /usr/lib/go-1.25/bin/go /usr/local/bin/go && \ ln -sf /usr/lib/go-1.26/bin/go /usr/local/bin/go && \
ln -sf /usr/lib/go-1.25/bin/gofmt /usr/local/bin/gofmt ln -sf /usr/lib/go-1.26/bin/gofmt /usr/local/bin/gofmt
RUN useradd -m --shell /bin/bash --home-dir /var/lib/aptly aptly RUN useradd -m --shell /bin/bash --home-dir /var/lib/aptly aptly
RUN sed -i 's/#force_color_prompt=yes/force_color_prompt=yes/' /var/lib/aptly/.bashrc RUN sed -i 's/#force_color_prompt=yes/force_color_prompt=yes/' /var/lib/aptly/.bashrc
+72
View File
@@ -279,6 +279,78 @@ class MirrorsAPITestEditArchiveURL(APITest):
self.check_equal(resp.json()['ArchiveRoot'], 'http://repo.aptly.info/system-tests/ftp.ch.debian.org/debian/') self.check_equal(resp.json()['ArchiveRoot'], 'http://repo.aptly.info/system-tests/ftp.ch.debian.org/debian/')
class MirrorsAPITestRename(APITest):
"""
PUT /api/mirrors/:name - Rename mirror via update endpoint
"""
def check(self):
mirror_name = self.random_name()
mirror_desc = {'Name': mirror_name,
'ArchiveURL': 'http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/',
'IgnoreSignatures': True,
'Distribution': 'wheezy',
'Components': ['main'],
'Architectures': ['amd64']}
resp = self.post("/api/mirrors", json=mirror_desc)
self.check_equal(resp.status_code, 201)
# Rename the mirror via PUT
new_name = self.random_name()
resp = self.put_task("/api/mirrors/" + mirror_name, json={'Name': new_name, 'IgnoreSignatures': True})
self.check_task(resp)
# Old name should no longer exist
resp = self.get("/api/mirrors/" + mirror_name)
self.check_equal(resp.status_code, 404)
# New name should exist with correct data
resp = self.get("/api/mirrors/" + new_name)
self.check_equal(resp.status_code, 200)
self.check_subset({'Name': new_name,
'ArchiveRoot': 'http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/',
'Distribution': 'wheezy'}, resp.json())
class MirrorsAPITestRenameConflict(APITest):
"""
PUT /api/mirrors/:name - Rename mirror to an already existing name should fail with 409
"""
def check(self):
mirror_name_a = self.random_name()
mirror_name_b = self.random_name()
mirror_desc_a = {'Name': mirror_name_a,
'ArchiveURL': 'http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/',
'IgnoreSignatures': True,
'Distribution': 'wheezy',
'Components': ['main'],
'Architectures': ['amd64']}
mirror_desc_b = {'Name': mirror_name_b,
'ArchiveURL': 'http://repo.aptly.info/system-tests/packagecloud.io/varnishcache/varnish30/debian/',
'IgnoreSignatures': True,
'Distribution': 'wheezy',
'Components': ['main'],
'Architectures': ['amd64']}
resp = self.post("/api/mirrors", json=mirror_desc_a)
self.check_equal(resp.status_code, 201)
resp = self.post("/api/mirrors", json=mirror_desc_b)
self.check_equal(resp.status_code, 201)
# Try to rename mirror A to mirror B's name — should fail with 409
resp = self.put("/api/mirrors/" + mirror_name_a, json={'Name': mirror_name_b, 'IgnoreSignatures': True})
self.check_equal(resp.status_code, 409)
self.check_in('unable to rename', resp.json()['error'])
# Mirror A should still exist under its original name
resp = self.get("/api/mirrors/" + mirror_name_a)
self.check_equal(resp.status_code, 200)
self.check_subset({'Name': mirror_name_a}, resp.json())
class MirrorsAPITestEditFlatMirrorUdebs(APITest): class MirrorsAPITestEditFlatMirrorUdebs(APITest):
""" """
POST /api/mirrors/{name} - Edit flat mirror with udebs (should fail) POST /api/mirrors/{name} - Edit flat mirror with udebs (should fail)