Skip to content

fix(git-cliff-release): upload the generated changelog as an artifact - #36

Merged
vdusek merged 1 commit into
mainfrom
feat/changelog-artifact
Aug 17, 2026
Merged

fix(git-cliff-release): upload the generated changelog as an artifact#36
vdusek merged 1 commit into
mainfrom
feat/changelog-artifact

Conversation

@vdusek

@vdusek vdusek commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

The changelog output ends up as an input of another action, and the runner passes action inputs as environment variables. Linux caps a single environment string at MAX_ARG_STRLEN (32 pages = 131072 bytes), so once the changelog crosses ~128 KiB the consuming step never starts:

An error occurred trying to start process '.../node' ... Argument list too long

That is what broke every crawlee-python release from 2026-08-17 on, at 131,410 bytes of generated changelog and with no code change involved.

The action now also uploads the changelog as an artifact holding a single CHANGELOG.md. Consumers can download it anywhere in the same workflow run, including inside a reusable workflow, with no size limit and no extra token permission. The changelog output stays for short values such as a release body, with its ceiling documented, and the new changelog_artifact_name input covers a run that calls this action more than once.

The README examples no longer teach the write-file-action pattern that breaks.

Callers can only pin this once it is released as v1.5.0.

✍️ Drafted by Claude Code

@vdusek vdusek self-assigned this Aug 17, 2026
@vdusek vdusek changed the title feat(git-cliff-release): upload the generated changelog as an artifact fix(git-cliff-release): upload the generated changelog as an artifact Aug 17, 2026
@vdusek
vdusek marked this pull request as ready for review August 17, 2026 08:00
@vdusek
vdusek requested a review from janbuchar August 17, 2026 08:00
@vdusek
vdusek merged commit 8a3e3b2 into main Aug 17, 2026
3 checks passed
@vdusek
vdusek deleted the feat/changelog-artifact branch August 17, 2026 09:33
vdusek pushed a commit that referenced this pull request Aug 17, 2026
🤖 I have created a release *beep* *boop*
---


## [1.4.1](v1.4.0...v1.4.1)
(2026-08-17)


### Bug Fixes

* **git-cliff-release:** upload the generated changelog as an artifact
([#36](#36))
([8a3e3b2](8a3e3b2))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
vdusek added a commit to apify/workflows that referenced this pull request Aug 17, 2026
…ow (#312)

The `Update CHANGELOG.md` step handed `inputs.changelog` to
`DamianReeves/write-file-action` via `with: contents:`. The runner
passes action inputs as environment variables, and Linux caps a single
environment string at `MAX_ARG_STRLEN` (32 pages = 131072 bytes), so the
step never starts once the changelog crosses ~128 KiB:

```
An error occurred trying to start process '.../node' ... Argument list too long
```

That broke every crawlee-python beta and stable release from 2026-08-17
on, at 131,410 bytes of generated changelog and with no code change
involved.

The changelog now travels as an artifact instead.
`apify/actions/git-cliff-release` uploads it (apify/actions#36) and this
workflow downloads it and moves it into place - no size limit, and a
same-run download needs no extra token permission.

Backwards compatible: the `changelog` input stays as a deprecated
fallback for callers still pinned to `git-cliff-release@v1.4.0`, which
does not upload the artifact. Drop the input and the fallback step once
every caller is bumped. Since the input is now optional, a separate step
fails the job when neither source carries a changelog, rather than
silently truncating `CHANGELOG.md` and committing it.

Two new optional inputs: `changelog_artifact_name` and `changelog_path`.

Merge order: apify/actions#36 must be released as v1.4.1 before callers
can pin it. This workflow is referenced as `@main`, so it takes effect
for all callers immediately - hence the fallback.

*✍️ Drafted by Claude Code*
vdusek added a commit to apify/crawlee-python that referenced this pull request Aug 17, 2026
Every beta and stable release has failed since 2026-08-17, at the
`Update CHANGELOG.md` step, with no code change involved:

```
An error occurred trying to start process '.../node' ... Argument list too long
```

`CHANGELOG.md` crossed 128 KiB. The changelog was passed to the release
workflow as a string input, the workflow handed it to an action via
`with: contents:`, and the runner passes action inputs as environment
variables - Linux caps a single environment string at `MAX_ARG_STRLEN`
(32 pages = 131072 bytes). The generated changelog measured 131,410
bytes; the last green release squeezed in about 140 bytes under the
limit.

Both release workflows now hand the changelog over as an artifact, which
has no size limit: apify/actions#36 uploads it, apify/workflows#312
downloads it.

Blocked until apify/actions is released as v1.5.0, which is what the
bumped pin refers to.

*✍️ Drafted by Claude Code*
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants