feat(runtime): push monorepo Actors to the local Actor runtime by Pijukatel · Pull Request #1470 · apify/apify-cli · GitHub
Skip to content

feat(runtime): push monorepo Actors to the local Actor runtime - #1470

Merged
Pijukatel merged 7 commits into
actor-runtimefrom
claude/zealous-euler-on5bpz
Sep 30, 2026
Merged

Pijukatel merged 7 commits into
actor-runtimefrom
claude/zealous-euler-on5bpz

Conversation

@Pijukatel

@Pijukatel Pijukatel commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor
  • apify push of an Actor whose .actor/actor.json sets dockerContextDir sends its Git repository, as the platform's clone would have it, to the local Actor runtime (feat: Add support for monorepo Actors with shared Docker contexts actor-runtime#89), with the Actor's path in it.
  • Files: tracked ones as on disk plus untracked ones Git doesn't ignore, symlinks kept, no .actorignore; uncommitted changes are pushed with a warning.
  • A dockerContextDir outside the Git repository is rejected; the Docker context is registered as the dev folder.
  • Against the Apify platform, such a push stops with an error linking https://github.com/apify/apify-core/issues/28685.
  • No new dependencies (uses the existing archiver).

…ctor runtime

apify push of an Actor whose .actor/actor.json sets dockerContextDir now pushes
the whole Docker context to the local Actor runtime, with the Actor's folder
inside it and the Git branch/commit of the working copy, and registers the
context root as the dev folder. Against the Apify platform, such a push stops
with an error pointing to https://github.com/apify/apify-core/issues/28685.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YLTcFYmvHYZwuwLdHDphTQ
…repo files

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YLTcFYmvHYZwuwLdHDphTQ
- files in the Actor's folder follow its own .actorignore (force-includes too),
  exactly as an ordinary push of that folder
- the context is pushed before an existing version is updated, and a newly created
  version is removed again when the push fails, so a refused push changes nothing
- the uncommitted-changes flag covers only the pushed Docker context
- clearer message for a runtime without the endpoint; no size sum or buffer copy
  for context pushes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YLTcFYmvHYZwuwLdHDphTQ
- the files are those Git tracks, as on disk, plus untracked files it does not
  ignore; .actorignore does not apply, as it does not to the platform's Git builds
- a dockerContextDir outside the Git repository is rejected, since the platform
  could not build it; uncommitted changes are pushed with a warning
- files keep their permission bits in the pushed archive

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YLTcFYmvHYZwuwLdHDphTQ
The runtime now takes the Docker context from the pushed files as the platform's
builder does, so apify push sends the Git repository's root with the Actor's
path inside it (the context root outside Git), and keeps symlinks as links.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YLTcFYmvHYZwuwLdHDphTQ
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YLTcFYmvHYZwuwLdHDphTQ
Pijukatel added a commit to apify/actor-runtime that referenced this pull request Sep 30, 2026
- Monorepo Actors (`dockerContextDir` in `.actor/actor.json`) can be
pushed and built: `PUT
/actor-runtime/source-context/:actorId/:versionNumber` takes the
repository as one `.tar.gz`, plus the Actor's folder in it.
- Every build now takes its Docker context as the platform's builder
(apify-worker) does: context from `dockerContextDir` inside the pushed
files, schema paths anywhere in them, Dockerfile only from the context,
files `0777`, symlinks kept.
- `ACTOR_PATH_IN_DOCKER_CONTEXT` is passed to every build, and env vars
override it; a named `input` file that does not exist fails the build.
- New `samples/actor_monorepo` and e2e tests covering builds that fail
and succeed as they would from Git on the platform; the e2e runs only
with a local CLI until apify/apify-cli#1470 is released.

---------

Co-authored-by: Claude <noreply@anthropic.com>
@Pijukatel
Pijukatel marked this pull request as ready for review September 30, 2026 13:17
@Pijukatel
Pijukatel merged commit 12faf8b into actor-runtime Sep 30, 2026
@Pijukatel
Pijukatel deleted the claude/zealous-euler-on5bpz branch September 30, 2026 13:18
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.

3 participants