feat: read applyEnvVarsToBuild from actor.json in push (#734) - #1346
feat: read applyEnvVarsToBuild from actor.json in push (#734)#1346MatousMarik wants to merge 7 commits into
Conversation
9c96569 to
923d4a8
Compare
556d4c0 to
c53d79f
Compare
c53d79f to
9cfb129
Compare
Allows env vars from actor.json to be applied to the Actor build process (Docker build args) without flipping the switch in Console. --no-apply-env-vars-to-build explicitly turns the setting off. When the flag is omitted, the value stored on the platform is kept. The flag parser matched provided flags by truthiness, which dropped scalar false values injected by the test harness (the real CLI path always yields arrays via multiple: true and was unaffected); it now checks for presence so harness-injected negated booleans behave the same as parsed ones.
The field persists the build env vars setting per repo, so it applies on every push without remembering the flag. The --apply-env-vars-to-build flag takes precedence over the field, and an explicit false in actor.json turns the setting off. When both are omitted, the value stored on the platform is kept.
923d4a8 to
420860a
Compare
9cfb129 to
a8a1158
Compare
szaganek
left a comment
There was a problem hiding this comment.
Three suggestions from me to improve readability.
| 'apply-env-vars-to-build': Flags.boolean({ | ||
| description: | ||
| 'Make the environment variables also available to the Actor build process. Use --no-apply-env-vars-to-build to turn the setting off. When omitted, the setting currently stored on the platform is kept.', | ||
| description: `Make the environment variables also available to the Actor build process. Use --no-apply-env-vars-to-build to turn the setting off. Overrides the 'applyEnvVarsToBuild' field in the '${LOCAL_CONFIG_PATH}' file. When both are omitted, the setting currently stored on the platform is kept.`, |
There was a problem hiding this comment.
| description: `Make the environment variables also available to the Actor build process. Use --no-apply-env-vars-to-build to turn the setting off. Overrides the 'applyEnvVarsToBuild' field in the '${LOCAL_CONFIG_PATH}' file. When both are omitted, the setting currently stored on the platform is kept.`, | |
| description: `Make the environment variables also available to the Actor build process. To turn the setting off, use --no-apply-env-vars-to-build. Overrides the value of the 'applyEnvVarsToBuild' field in the '${LOCAL_CONFIG_PATH}' file. Without a flag, the setting currently stored on the platform is kept.`, |
There was a problem hiding this comment.
[claude] -> original version seems to be better, platform is kept when both are omitted, not just flag.
There was a problem hiding this comment.
Ah. Let's make it explicit then:
When both the field and the flag are omitted, the setting currently stored on the platform is kept.
Co-authored-by: Edyta <142720610+szaganek@users.noreply.github.com>
Co-authored-by: Edyta <142720610+szaganek@users.noreply.github.com>
Co-authored-by: Edyta <142720610+szaganek@users.noreply.github.com>
l2ysho
left a comment
There was a problem hiding this comment.
thx @MatousMarik
pre-aprooving as nothing blocking here but I think pnpm run update-docs should be made, also I left one comment in docs thread where It looks like original version was more inline with code
|
@MatousMarik - please can you check the request changes? 🙏 Thanks! |
The flag description and vars.md both said the platform setting is kept "without a flag", which is wrong when applyEnvVarsToBuild is set in actor.json — the field wins there. Say "neither the field nor a flag". Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
@patrikbraborec |
Part of #734 (the `applyEnvVarsToBuild` toggle half). ## What - New `--apply-env-vars-to-build` boolean flag on `apify push` — sets `applyEnvVarsToBuild: true` on the Actor version, so env vars from `actor.json` are also available during the Docker build. `--no-apply-env-vars-to-build` explicitly turns the setting off. - When the flag is omitted, the field is left out of the API payload entirely, so a value previously set in Console is **preserved** (pushes to existing Actors don't reset it). - Flag-parser tweak: `_parseFlags` matched provided flags by truthiness. The real CLI path is unaffected (`multiple: true` means values always arrive as arrays, which are truthy), but `testRunCommand`/`internalRunCommand` inject scalar values, where an explicit `false` was silently dropped. The matcher now checks for presence, and the required-flag check is aligned to `undefined`, so harness-injected negated booleans behave the same as parsed ones (the new test relies on this). - Regenerated `docs/` via `pnpm run update-docs`. ## Why Env vars synced by `apify push` currently apply only at runtime; making them apply to the build requires flipping a switch in Console. That breaks CI and fresh pushes of Actors that need build-time secrets (e.g. a GitHub token as a Docker build arg). ## Tests - New `[api]` test in `test/api/commands/push.test.ts` covering: flag → `true`, omitted → preserved, negated flag → `false`. Full push API suite passes (13/13), plus `test:local`, lint, format, build. ## Follow-ups (separate PRs) - `applyEnvVarsToBuild` field in `.actor/actor.json` (#1346, stacked on this). - `--env KEY=VALUE` passing on push (the other half of #734). No new dependencies; no install-size impact. Co-authored-by: Richard Solar <solar.richard@gmail.com>
Part of #734, stacked on #1345 (retarget to
masteronce that merges — only the last commit is new here).What
apify pushnow readsapplyEnvVarsToBuildfrom.actor/actor.json, so the setting persists per repo and applies on every push (useful for CI and Actors needing build-time secrets).--[no-]apply-env-vars-to-buildflag >applyEnvVarsToBuildin actor.json > omitted (value stored on the platform is kept). An explicitfalsein actor.json turns the setting off.docs/vars.md; flag description updated (+ regenerateddocs/reference.md).Tests
[api]test covering fieldtrue, fieldfalse, flag-over-field precedence, and the negated flag beating atruein the file (the case that pins??over||). Full push API suite passes (14/14), plustest:local, lint, format, build.useActorConfigcaches by cwd, so the test resets the cache when rewriting actor.json mid-test.Follow-up (separate PR)
--env KEY=VALUEpassing on push (the other half of Pass environment variables toapify pushand toggleapplyEnvVarsToBuild#734).No new dependencies; no install-size impact.