Skip to content

archive: Tarballer.Go: suppress io.ErrClosedPipe logs on close - #94

Merged
vvoland merged 1 commit into
moby:mainfrom
thaJeztah:denoise
Jul 31, 2026
Merged

vvoland merged 1 commit into
moby:mainfrom
thaJeztah:denoise

Conversation

@thaJeztah

Copy link
Copy Markdown
Member

Before this patch:

go test -v -run TestCopyCaseI
=== RUN   TestCopyCaseI
    copy_unix_test.go:117: copying from "/tmp/T/TestCopyCaseI2681583485/001/archive-copy-test2002515556/dir1/." to "/tmp/T/TestCopyCaseI2681583485/001/archive-copy-test3740527566/file1" (not follow symbol link)
    copy_unix_test.go:123: copying from "/tmp/T/TestCopyCaseI2681583485/001/archive-copy-test3740527566/dirSymlink" to "/tmp/T/TestCopyCaseI2681583485/001/archive-copy-test3740527566/file1" (follow symbol link)
ERRO[0000] Can't add file /tmp/T/TestCopyCaseI2681583485/001/archive-copy-test3740527566/dir1 to tar: io: read/write on closed pipe
ERRO[0000] Can't close tar writer: io: read/write on closed pipe
ERRO[0000] Can't add file /tmp/T/TestCopyCaseI2681583485/001/archive-copy-test2002515556/dir1/. to tar: io: read/write on closed pipe
ERRO[0000] Can't close tar writer: io: read/write on closed pipe
--- PASS: TestCopyCaseI (0.01s)
PASS
ok  	github.com/moby/go-archive	0.828s

After this test, the "closed pipe" errors are ignored when closing;

go test -v -run TestCopyCaseI
=== RUN   TestCopyCaseI
    copy_unix_test.go:117: copying from "/tmp/T/TestCopyCaseI1855397298/001/archive-copy-test1695505150/dir1/." to "/tmp/T/TestCopyCaseI1855397298/001/archive-copy-test1369902297/file1" (not follow symbol link)
    copy_unix_test.go:123: copying from "/tmp/T/TestCopyCaseI1855397298/001/archive-copy-test1369902297/dirSymlink" to "/tmp/T/TestCopyCaseI1855397298/001/archive-copy-test1369902297/file1" (follow symbol link)
ERRO[0000] Can't add file /tmp/T/TestCopyCaseI1855397298/001/archive-copy-test1695505150/dir1/. to tar: io: read/write on closed pipe
ERRO[0000] Can't add file /tmp/T/TestCopyCaseI1855397298/001/archive-copy-test1369902297/dir1 to tar: io: read/write on closed pipe
--- PASS: TestCopyCaseI (0.01s)
PASS
ok  	github.com/moby/go-archive	0.413s

Before this patch:

    go test -v -run TestCopyCaseI
    === RUN   TestCopyCaseI
        copy_unix_test.go:117: copying from "/tmp/T/TestCopyCaseI2681583485/001/archive-copy-test2002515556/dir1/." to "/tmp/T/TestCopyCaseI2681583485/001/archive-copy-test3740527566/file1" (not follow symbol link)
        copy_unix_test.go:123: copying from "/tmp/T/TestCopyCaseI2681583485/001/archive-copy-test3740527566/dirSymlink" to "/tmp/T/TestCopyCaseI2681583485/001/archive-copy-test3740527566/file1" (follow symbol link)
    ERRO[0000] Can't add file /tmp/T/TestCopyCaseI2681583485/001/archive-copy-test3740527566/dir1 to tar: io: read/write on closed pipe
    ERRO[0000] Can't close tar writer: io: read/write on closed pipe
    ERRO[0000] Can't add file /tmp/T/TestCopyCaseI2681583485/001/archive-copy-test2002515556/dir1/. to tar: io: read/write on closed pipe
    ERRO[0000] Can't close tar writer: io: read/write on closed pipe
    --- PASS: TestCopyCaseI (0.01s)
    PASS
    ok  	github.com/moby/go-archive	0.828s

After this test, the "closed pipe" errors are ignored when closing;

    go test -v -run TestCopyCaseI
    === RUN   TestCopyCaseI
        copy_unix_test.go:117: copying from "/tmp/T/TestCopyCaseI1855397298/001/archive-copy-test1695505150/dir1/." to "/tmp/T/TestCopyCaseI1855397298/001/archive-copy-test1369902297/file1" (not follow symbol link)
        copy_unix_test.go:123: copying from "/tmp/T/TestCopyCaseI1855397298/001/archive-copy-test1369902297/dirSymlink" to "/tmp/T/TestCopyCaseI1855397298/001/archive-copy-test1369902297/file1" (follow symbol link)
    ERRO[0000] Can't add file /tmp/T/TestCopyCaseI1855397298/001/archive-copy-test1695505150/dir1/. to tar: io: read/write on closed pipe
    ERRO[0000] Can't add file /tmp/T/TestCopyCaseI1855397298/001/archive-copy-test1369902297/dir1 to tar: io: read/write on closed pipe
    --- PASS: TestCopyCaseI (0.01s)
    PASS
    ok  	github.com/moby/go-archive	0.413s

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
@thaJeztah
thaJeztah requested a review from Copilot July 31, 2026 12:18
@codecov-commenter

codecov-commenter commented Jul 31, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 0% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 64.93%. Comparing base (216738e) to head (1bec7ec).
⚠️ Report is 65 commits behind head on main.

Files with missing lines Patch % Lines
archive.go 0.00% 0 Missing and 3 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #94      +/-   ##
==========================================
- Coverage   65.81%   64.93%   -0.89%     
==========================================
  Files          42       44       +2     
  Lines        2039     2270     +231     
==========================================
+ Hits         1342     1474     +132     
- Misses        519      595      +76     
- Partials      178      201      +23     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR reduces log noise during tarball creation by suppressing io.ErrClosedPipe errors that can occur when closing the tar, compression, or pipe writers after the reader side has already been closed (e.g., during tests like TestCopyCaseI).

Changes:

  • Ignore io.ErrClosedPipe from ta.TarWriter.Close() to avoid redundant error logs on shutdown.
  • Ignore io.ErrClosedPipe from t.compressWriter.Close() to avoid redundant error logs on shutdown.
  • Ignore io.ErrClosedPipe from t.pipeWriter.Close() to avoid redundant error logs on shutdown.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@thaJeztah
thaJeztah marked this pull request as ready for review July 31, 2026 12:28
Comment thread archive.go
// Make sure to check the error on Close.
if err := ta.TarWriter.Close(); err != nil {
if err := ta.TarWriter.Close(); err != nil && !errors.Is(err, io.ErrClosedPipe) {
log.G(context.TODO()).Errorf("Can't close tar writer: %s", err)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking for these logs; I see they were changed to Error in 3c7c468, which ... describes exactly the opposite for most of these (it was debug before that);

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably a Warnf (at most) would be appropriate for these? Thoughts @vvoland ?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SGTM

@thaJeztah
thaJeztah requested a review from vvoland July 31, 2026 12:37
@vvoland
vvoland merged commit 5bb8a45 into moby:main Jul 31, 2026
12 checks passed
@thaJeztah
thaJeztah deleted the denoise branch July 31, 2026 14:25
mergify Bot added a commit to ArcadeData/arcadedb that referenced this pull request Aug 5, 2026
…p ci]

Bumps the go-modules group in /e2e-go with 2 updates: [github.com/moby/go-archive](https://github.com/moby/go-archive) and [github.com/shirou/gopsutil/v4](https://github.com/shirou/gopsutil).
Updates `github.com/moby/go-archive` from 0.2.1 to 0.3.2
Release notes

*Sourced from [github.com/moby/go-archive's releases](https://github.com/moby/go-archive/releases).*

> v0.3.2
> ------
>
> What's Changed
> --------------
>
> Fix a regression introduced in v0.3.0 that caused archive extraction to fail when paths traversed absolute symlinks inside the destination root, such as `var/run -> /run`. Absolute symlink targets are now resolved relative to the extraction root while relative symlink escapes remain rejected. [moby/go-archive#93](https://github.com/proxy/redirect.github.com/moby/go-archive/pull/93)
>
> **Full Changelog**: <moby/go-archive@v0.3.1...v0.3.2>
>
> v0.3.1
> ------
>
> Fixes
> -----
>
> This patch release fixes a regression introduced in v0.2.1 where archive extraction could fail when an archive omitted explicit entries for parent directories. For example, extracting `etc/dnf/` without a preceding `etc/` entry could return `mkdirat etc/dnf: no such file or directory`.
>
> This prevented affected images from being extracted. Archive extraction now creates implied parent directories for both file and directory entries.
>
> What's Changed
> --------------
>
> * archive: create implied parents for directory entries [moby/go-archive#92](https://github.com/proxy/redirect.github.com/moby/go-archive/pull/92)
> * archive: Tarballer.Go: suppress io.ErrClosedPipe logs on close [moby/go-archive#94](https://github.com/proxy/redirect.github.com/moby/go-archive/pull/94)
>
> **Full Changelog**: <moby/go-archive@v0.3.0...v0.3.1>
>
> v0.3.0
> ------
>
> Security
> --------
>
> This release fixes **CVE-2026-17106** / **[GHSA-hfg8-hc9c-6c3h](https://github.com/moby/go-archive/security/advisories/GHSA-hfg8-hc9c-6c3h)**, where a crafted tar archive could use links to cause extraction operations to create or overwrite files outside the intended destination directory.
>
> The issue affected `Unpack`, `UnpackLayer`, `Untar`, `UntarUncompressed`, and the `ApplyLayer` helpers. Users should upgrade and avoid extracting untrusted archives with earlier versions.
>
> What's Changed
> --------------
>
> * archive: harden tar extraction against path traversal [moby/go-archive#45](https://github.com/proxy/redirect.github.com/moby/go-archive/pull/45)
> * archive: do not follow reparse points in chtimes [moby/go-archive#90](https://github.com/proxy/redirect.github.com/moby/go-archive/pull/90)
> * archive: fix creation time updates on Windows [moby/go-archive#79](https://github.com/proxy/redirect.github.com/moby/go-archive/pull/79)
> * archive: minor cleanups and godoc touch-up [moby/go-archive#87](https://github.com/proxy/redirect.github.com/moby/go-archive/pull/87)
> * archive: RebaseArchiveEntries: fix archive path rebasing [moby/go-archive#43](https://github.com/proxy/redirect.github.com/moby/go-archive/pull/43)
>
> Test and CI changes
> -------------------
>
> * ci: enable dependabot for actions [moby/go-archive#81](https://github.com/proxy/redirect.github.com/moby/go-archive/pull/81)
> * archive: make breakoutErr unwrap its cause [moby/go-archive#91](https://github.com/proxy/redirect.github.com/moby/go-archive/pull/91)
> * archive: use filepath for filesystem paths in tests [moby/go-archive#80](https://github.com/proxy/redirect.github.com/moby/go-archive/pull/80)
> * archive: use filepath for filesystem paths in tests [moby/go-archive#80](https://github.com/proxy/redirect.github.com/moby/go-archive/pull/80)
>
> **Full Changelog**: <moby/go-archive@v0.2.1...v0.3.0>


Commits

* [`9e6d2c7`](moby/go-archive@9e6d2c7) Merge pull request [#93](https://github.com/proxy/redirect.github.com/moby/go-archive/issues/93) from thaJeztah/fix\_absolute\_symlinks
* [`4f6cd58`](moby/go-archive@4f6cd58) archive: resolve hardlinks through absolute symlinks
* [`e564ecc`](moby/go-archive@e564ecc) archive: resolve absolute symlinks within extraction root
* [`5bb8a45`](moby/go-archive@5bb8a45) Merge pull request [#94](https://github.com/proxy/redirect.github.com/moby/go-archive/issues/94) from thaJeztah/denoise
* [`1bec7ec`](moby/go-archive@1bec7ec) archive: Tarballer.Go: suppress io.ErrClosedPipe logs on close
* [`279fa6d`](moby/go-archive@279fa6d) Merge pull request [#92](https://github.com/proxy/redirect.github.com/moby/go-archive/issues/92) from thaJeztah/fix\_implied\_directories
* [`517985a`](moby/go-archive@517985a) archive: create implied parents for directory entries
* [`1c23372`](moby/go-archive@1c23372) Merge pull request [#43](https://github.com/proxy/redirect.github.com/moby/go-archive/issues/43) from thaJeztah/fix\_rebase\_from\_root
* [`8829a25`](moby/go-archive@8829a25) RebaseArchiveEntries: fix archive path rebasing
* [`c583b20`](moby/go-archive@c583b20) Merge pull request [#90](https://github.com/proxy/redirect.github.com/moby/go-archive/issues/90) from thaJeztah/chtimes\_nofollow
* Additional commits viewable in [compare view](moby/go-archive@v0.2.1...v0.3.2)
  
Updates `github.com/shirou/gopsutil/v4` from 4.26.6 to 4.26.7
Release notes

*Sourced from [github.com/shirou/gopsutil/v4's releases](https://github.com/shirou/gopsutil/releases).*

> v4.26.7
> -------
>
> What's Changed
> --------------
>
> ### cpu
>
> * fix: harden parsers against malformed/truncated input by [`@​shirou`](https://github.com/shirou) in [shirou/gopsutil#2109](https://github.com/proxy/redirect.github.com/shirou/gopsutil/pull/2109)
> * [cpu][windows]: compute cpu-total times from integer ticks by [`@​skartikey`](https://github.com/skartikey) in [shirou/gopsutil#2111](https://github.com/proxy/redirect.github.com/shirou/gopsutil/pull/2111)
> * [darwin][process]: fix errno handling and library lifetime on darwin by [`@​shirou`](https://github.com/shirou) in [shirou/gopsutil#2119](https://github.com/proxy/redirect.github.com/shirou/gopsutil/pull/2119)
> * [cpu][windows]: compute total counters from individual stats to handle processor groups correctly by [`@​srebhan`](https://github.com/srebhan) in [shirou/gopsutil#2125](https://github.com/proxy/redirect.github.com/shirou/gopsutil/pull/2125)
> * [cpu][windows]: harden the cpu-total computation added in [#2125](https://github.com/proxy/redirect.github.com/shirou/gopsutil/issues/2125) by [`@​shirou`](https://github.com/shirou) in [shirou/gopsutil#2128](https://github.com/proxy/redirect.github.com/shirou/gopsutil/pull/2128)
>
> ### net
>
> * fix(net): pad GetExtendedTcpTable buffer to prevent GC thrashing on Windows by [`@​HarshalPatel1972`](https://github.com/HarshalPatel1972) in [shirou/gopsutil#2108](https://github.com/proxy/redirect.github.com/shirou/gopsutil/pull/2108)
>
> ### process
>
> * process: implement Darwin IOCounters via proc\_pid\_rusage by [`@​DavRack`](https://github.com/DavRack) in [shirou/gopsutil#2117](https://github.com/proxy/redirect.github.com/shirou/gopsutil/pull/2117)
>
> ### other
>
> * feat: add psutil comparison tests for cpu, mem and load by [`@​shirou`](https://github.com/shirou) in [shirou/gopsutil#2114](https://github.com/proxy/redirect.github.com/shirou/gopsutil/pull/2114)
>
> New Contributors
> ----------------
>
> * [`@​DavRack`](https://github.com/DavRack) made their first contribution in [shirou/gopsutil#2117](https://github.com/proxy/redirect.github.com/shirou/gopsutil/pull/2117)
> * [`@​srebhan`](https://github.com/srebhan) made their first contribution in [shirou/gopsutil#2125](https://github.com/proxy/redirect.github.com/shirou/gopsutil/pull/2125)
>
> **Full Changelog**: <shirou/gopsutil@v4.26.6...v4.26.7>


Commits

* [`52a24c8`](shirou/gopsutil@52a24c8) Merge pull request [#2128](https://github.com/proxy/redirect.github.com/shirou/gopsutil/issues/2128) from shirou/feat/follow-up-2125
* [`268a953`](shirou/gopsutil@268a953) [cpu][windows]: harden the cpu-total computation added in [#2125](https://github.com/proxy/redirect.github.com/shirou/gopsutil/issues/2125)
* [`1e34da6`](shirou/gopsutil@1e34da6) Merge pull request [#2125](https://github.com/proxy/redirect.github.com/shirou/gopsutil/issues/2125) from srebhan/fix\_cpu\_windows\_total
* [`61f8802`](shirou/gopsutil@61f8802) Merge pull request [#2122](https://github.com/proxy/redirect.github.com/shirou/gopsutil/issues/2122) from shirou/dependabot/github\_actions/actions/checko...
* [`7fb4dcf`](shirou/gopsutil@7fb4dcf) Merge pull request [#2123](https://github.com/proxy/redirect.github.com/shirou/gopsutil/issues/2123) from shirou/dependabot/github\_actions/actions/setup-...
* [`ae7d91a`](shirou/gopsutil@ae7d91a) Merge pull request [#2119](https://github.com/proxy/redirect.github.com/shirou/gopsutil/issues/2119) from shirou/fix/darwin-errno-and-libcache
* [`49052a1`](shirou/gopsutil@49052a1) [darwin][process]: use a PID above PID\_MAX in the not-running tests
* [`991b238`](shirou/gopsutil@991b238) [darwin]: pass the remaining Go pointers as unsafe.Pointer on darwin
* [`b9930e2`](shirou/gopsutil@b9930e2) Merge pull request [#2124](https://github.com/proxy/redirect.github.com/shirou/gopsutil/issues/2124) from shirou/dependabot/github\_actions/actions/labele...
* [`38a01b4`](shirou/gopsutil@38a01b4) [cpu][windows]: compute total counters from individual stats to handle proces...
* Additional commits viewable in [compare view](shirou/gopsutil@v4.26.6...v4.26.7)
  
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
  
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show  ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore  major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
- `@dependabot ignore  minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
- `@dependabot ignore ` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore ` will remove all of the ignore conditions of the specified dependency
- `@dependabot unignore  ` will remove the ignore condition of the specified dependency and ignore conditions
Sirherobrine23 pushed a commit to Sirherobrine23/gitea-runner that referenced this pull request Aug 10, 2026
This PR contains the following updates:

| Package | Type | Update | Change | Pending | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|---|
| docker | stage | minor | `29.6.2-dind-rootless` → `29.7.1-dind-rootless` |  | ![age](https://developer.mend.io/api/mc/badges/age/docker/docker/29.7.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/docker/29.6.2/29.7.1?slim=true) |
| docker | stage | minor | `29.6.2-dind` → `29.7.1-dind` |  | ![age](https://developer.mend.io/api/mc/badges/age/docker/docker/29.7.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/docker/29.6.2/29.7.1?slim=true) |
| [github.com/docker/cli](https://github.com/docker/cli) | require | minor | `v29.6.2+incompatible` → `v29.7.1+incompatible` | `v29.7.2+incompatible` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fdocker%2fcli/v29.7.1+incompatible?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fdocker%2fcli/v29.6.2+incompatible/v29.7.1+incompatible?slim=true) |
| [github.com/moby/go-archive](https://github.com/moby/go-archive) | require | minor | `v0.2.1` → `v0.3.2` | `v0.3.3` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fmoby%2fgo-archive/v0.3.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fmoby%2fgo-archive/v0.2.1/v0.3.2?slim=true) |

---

### Release Notes

<details>
<summary>docker/cli (github.com/docker/cli)</summary>

### [`v29.7.1+incompatible`](docker/cli@v29.7.0...v29.7.1)

[Compare Source](docker/cli@v29.7.0...v29.7.1)

### [`v29.7.0+incompatible`](docker/cli@v29.6.2...v29.7.0)

[Compare Source](docker/cli@v29.6.2...v29.7.0)

</details>

<details>
<summary>moby/go-archive (github.com/moby/go-archive)</summary>

### [`v0.3.2`](https://github.com/moby/go-archive/releases/tag/v0.3.2)

[Compare Source](moby/go-archive@v0.3.1...v0.3.2)

#### What's Changed

Fix a regression introduced in v0.3.0 that caused archive extraction to fail when paths traversed absolute symlinks inside the destination root, such as `var/run -> /run`. Absolute symlink targets are now resolved relative to the extraction root while relative symlink escapes remain rejected. [#&#8203;93](moby/go-archive#93)

**Full Changelog**: <moby/go-archive@v0.3.1...v0.3.2>

### [`v0.3.1`](https://github.com/moby/go-archive/releases/tag/v0.3.1)

[Compare Source](moby/go-archive@v0.3.0...v0.3.1)

#### Fixes

This patch release fixes a regression introduced in v0.2.1 where archive extraction could fail when an archive omitted explicit entries for parent directories. For example, extracting `etc/dnf/` without a preceding `etc/` entry could return `mkdirat etc/dnf: no such file or directory`.

This prevented affected images from being extracted. Archive extraction now creates implied parent directories for both file and directory entries.

#### What's Changed

- archive: create implied parents for directory entries [#&#8203;92](moby/go-archive#92)
- archive: Tarballer.Go: suppress io.ErrClosedPipe logs on close [#&#8203;94](moby/go-archive#94)

**Full Changelog**: <moby/go-archive@v0.3.0...v0.3.1>

### [`v0.3.0`](https://github.com/moby/go-archive/releases/tag/v0.3.0)

[Compare Source](moby/go-archive@v0.2.1...v0.3.0)

#### Security

This release fixes **CVE-2026-17106** / **[GHSA-hfg8-hc9c-6c3h](https://github.com/moby/go-archive/security/advisories/GHSA-hfg8-hc9c-6c3h)**, where a crafted tar archive could use links to cause extraction operations to create or overwrite files outside the intended destination directory.

The issue affected `Unpack`, `UnpackLayer`, `Untar`, `UntarUncompressed`, and the `ApplyLayer` helpers. Users should upgrade and avoid extracting untrusted archives with earlier versions.

#### What's Changed

- archive: harden tar extraction against path traversal [#&#8203;45](moby/go-archive#45)
- archive: do not follow reparse points in chtimes [#&#8203;90](moby/go-archive#90)
- archive: fix creation time updates on Windows [#&#8203;79](moby/go-archive#79)
- archive: minor cleanups and godoc touch-up [#&#8203;87](moby/go-archive#87)
- archive: RebaseArchiveEntries: fix archive path rebasing [#&#8203;43](moby/go-archive#43)

#### Test and CI changes

- ci: enable dependabot for actions [#&#8203;81](moby/go-archive#81)
- archive: make breakoutErr unwrap its cause [#&#8203;91](moby/go-archive#91)
- archive: use filepath for filesystem paths in tests [#&#8203;80](moby/go-archive#80)
- archive: use filepath for filesystem paths in tests [#&#8203;80](moby/go-archive#80)

**Full Changelog**: <moby/go-archive@v0.2.1...v0.3.0>

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- 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.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiI0My4xOTEuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE5MS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: https://gitea.com/gitea/runner/pulls/1160
Reviewed-by: silverwind <2021+silverwind@noreply.gitea.com>
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants