Skip to content

fix(#3036): resolve per-repo runner script paths in agent workflows - #3039

Merged
ifireball merged 3 commits into
fullsend-ai:mainfrom
ifireball:fix/per-repo-scripts-path
Jul 6, 2026
Merged

fix(#3036): resolve per-repo runner script paths in agent workflows#3039
ifireball merged 3 commits into
fullsend-ai:mainfrom
ifireball:fix/per-repo-scripts-path

Conversation

@ifireball

@ifireball ifireball commented Jul 6, 2026

Copy link
Copy Markdown
Member

Summary

  • Add a fullsend-dir input to the setup-gcp composite action and resolve prepare-sandbox-credentials.sh under ${FULLSEND_DIR}scripts/ (same prefix pattern as the agent action)
  • Pass fullsend-dir: ${{ inputs.install_mode == 'per-repo' && '.fullsend' || '' }} from all six reusable agent workflows
  • Fix inline runner-side pre-scripts in reusable-code.yml, reusable-review.yml, and reusable-fix.yml using the same ${FULLSEND_DIR:+$FULLSEND_DIR/}scripts/... pattern

Fixes #3036
Fixes #3038

Supersedes #3037 (consolidated here).

Background

After #3000, per-repo Prepare workspace copies scaffold content under .fullsend/ (including scripts/). Several workflow steps still invoked scripts/... at the workspace root, causing exit 127 in per-repo agent runs. Per-org mode is unchanged.

Test plan

  • actionlint passes on changed workflow files
  • Behaviour CI on a per-repo pool repo confirms all six agent stages pass Setup GCP and inline pre-script steps
  • Per-org agent runs still resolve scripts/ at workspace root

…workflows

After fullsend-ai#3000, per-repo Prepare workspace copies scripts under .fullsend/,
but setup-gcp and inline pre-script steps still invoked scripts/ at the
workspace root. Add a scripts_dir input to setup-gcp and thread install_mode
through all six reusable workflows so runner-side scripts resolve correctly.

Fixes fullsend-ai#3036
Fixes fullsend-ai#3038

Signed-off-by: Barak Korren <bkorren@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@ifireball
ifireball requested a review from a team as a code owner July 6, 2026 04:22
@fullsend-ai-review

fullsend-ai-review Bot commented Jul 6, 2026

Copy link
Copy Markdown

🤖 Review · ⚠️ Cancelled · Started 4:23 AM UTC · Ended 4:26 AM UTC
Commit: 0a95cac · View workflow run →

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Fix per-repo agent workflow script paths by threading scripts_dir into setup-gcp

🐞 Bug fix ⚙️ Configuration changes 🕐 20-40 Minutes

Grey Divider

AI Description

• Add scripts_dir input to setup-gcp and run credential prep from that directory.
• Thread scripts_dir through all reusable agent workflows based on install_mode.
• Fix runner-side pre-script invocations to resolve .fullsend/scripts/* in per-repo mode.
Diagram

graph TD
  WF["Reusable agent workflows"] --> MODE{"install_mode"} --> PRE["Runner pre-script"]
  WF --> MODE --> GCP["setup-gcp action"] --> CRED["prepare creds script"]
  MODE -->|"per-org"| ROOT[["scripts/"]]
  MODE -->|"per-repo"| FULL[[".fullsend/scripts"]]
  PRE -->|"bash PRE_SCRIPT"| ROOT
  PRE -->|"bash PRE_SCRIPT"| FULL
  CRED -->|"bash SCRIPTS_DIR/..."| ROOT
  CRED -->|"bash SCRIPTS_DIR/..."| FULL
  subgraph Legend
    direction LR
    _wf["Workflow/Action"] ~~~ _dec{"Decision"} ~~~ _dir[["Directory"]]
  end
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Set a job-level SCRIPTS_DIR env once per workflow
  • ➕ Avoids repeating the ternary expression across multiple steps
  • ➕ Keeps step run: lines simpler and more consistent
  • ➖ Still requires updating all workflows to define the env
  • ➖ Less explicit at the callsite than passing a typed input to an action
2. Have workspace prep create a `scripts/` symlink in per-repo mode
  • ➕ No changes needed in downstream workflows/actions; legacy scripts/... paths keep working
  • ➕ Reduces conditional logic in workflows
  • ➖ Relies on filesystem semantics (symlinks) that can be brittle across runners
  • ➖ Hides where scripts actually live; may confuse debugging and security reviews

Recommendation: Current approach (threading scripts_dir into setup-gcp and resolving inline pre-scripts with the same install_mode logic) is the most explicit and least magical fix. If repetition becomes a maintenance issue, consider additionally defining a single SCRIPTS_DIR env at the job level and using it consistently for both inline scripts and action inputs.

Files changed (7) +19 / -4

Bug fix (7) +19 / -4
action.ymlAdd scripts_dir input and run credential prep from resolved directory +7/-1

Add scripts_dir input and run credential prep from resolved directory

• Introduces a 'scripts_dir' input (default 'scripts') and uses it to locate 'prepare-sandbox-credentials.sh'. This fixes per-repo runs where scripts live under '.fullsend/scripts'.

.github/actions/setup-gcp/action.yml

reusable-code.ymlResolve pre-code script path and pass scripts_dir to setup-gcp +3/-1

Resolve pre-code script path and pass scripts_dir to setup-gcp

• Updates the runner-side pre-code step to compute 'PRE_SCRIPT' based on 'install_mode'. Passes 'scripts_dir' into the 'setup-gcp' composite action using the same per-repo/per-org path logic.

.github/workflows/reusable-code.yml

reusable-fix.ymlResolve pre-fix script path and pass scripts_dir to setup-gcp +3/-1

Resolve pre-fix script path and pass scripts_dir to setup-gcp

• Updates the pre-fix runner step to use a computed 'PRE_SCRIPT' for per-repo installs. Threads 'scripts_dir' into 'setup-gcp' so credential preparation runs from the correct scripts directory.

.github/workflows/reusable-fix.yml

reusable-prioritize.ymlPass scripts_dir to setup-gcp based on install_mode +1/-0

Pass scripts_dir to setup-gcp based on install_mode

• Adds the 'scripts_dir' input when invoking 'setup-gcp', selecting '.fullsend/scripts' for per-repo mode and 'scripts' otherwise.

.github/workflows/reusable-prioritize.yml

reusable-retro.ymlPass scripts_dir to setup-gcp based on install_mode +1/-0

Pass scripts_dir to setup-gcp based on install_mode

• Adds 'scripts_dir' to the 'setup-gcp' step so retro runs resolve scripts correctly under per-repo installs.

.github/workflows/reusable-retro.yml

reusable-review.ymlResolve pre-fetch-prior-review path and pass scripts_dir to setup-gcp +3/-1

Resolve pre-fetch-prior-review path and pass scripts_dir to setup-gcp

• Fixes the inline pre-fetch-prior-review invocation by computing 'PRE_SCRIPT' from 'install_mode'. Passes the matching 'scripts_dir' into 'setup-gcp' for consistent script resolution.

.github/workflows/reusable-review.yml

reusable-triage.ymlPass scripts_dir to setup-gcp based on install_mode +1/-0

Pass scripts_dir to setup-gcp based on install_mode

• Adds 'scripts_dir' to the 'setup-gcp' invocation so triage runs locate scripts under '.fullsend/scripts' in per-repo mode.

.github/workflows/reusable-triage.yml

@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown

Site preview

Preview: https://20ef64fc-site.fullsend-ai.workers.dev

Commit: 62378222bb23266f982603a1cefc89ea6412b62c

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

Qodo Logo

…cripts

Scope this PR to code/review/fix inline pre-script steps only. The
setup-gcp prepare-sandbox-credentials path is handled separately in fullsend-ai#3037.

Signed-off-by: Barak Korren <bkorren@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@ifireball ifireball changed the title fix(#3036): resolve per-repo runner script paths in agent workflows fix(#3038): resolve per-repo paths for inline runner pre-scripts Jul 6, 2026
@fullsend-ai-review

fullsend-ai-review Bot commented Jul 6, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 4:27 AM UTC · Completed 4:34 AM UTC
Commit: 8eacc30 · View workflow run →

@codecov

codecov Bot commented Jul 6, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@fullsend-ai-review

fullsend-ai-review Bot commented Jul 6, 2026

Copy link
Copy Markdown

Review

Findings

Medium

Low

  • [naming-conventions] .github/actions/setup-gcp/action.yml — The new input fullsend-dir uses kebab-case while some existing inputs in the repository use snake_case (e.g., gcp_wif_provider). However, the root action.yml already defines fullsend-dir, target-repo, and run-url in kebab-case, so this naming is consistent with the established convention for fullsend-specific action inputs. No change needed.
Previous run

Review

Findings

Medium


Labels: PR fixes CI workflow bug in per-repo script path resolution

@fullsend-ai-review fullsend-ai-review Bot added requires-manual-review Review requires human judgment bug component/ci CI pipelines and checks labels Jul 6, 2026
…workflows

Use the same fullsend-dir prefix pattern everywhere runner-side scripts
are invoked: setup-gcp prepare-sandbox-credentials and inline pre-scripts
in code/review/fix workflows.

Fixes fullsend-ai#3036
Fixes fullsend-ai#3038

Signed-off-by: Barak Korren <bkorren@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@ifireball ifireball changed the title fix(#3038): resolve per-repo paths for inline runner pre-scripts fix(#3036): resolve per-repo runner script paths in agent workflows Jul 6, 2026
@fullsend-ai-review

fullsend-ai-review Bot commented Jul 6, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 4:41 AM UTC · Completed 4:50 AM UTC
Commit: 6237822 · View workflow run →

@fullsend-ai-review fullsend-ai-review Bot 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.

See the review comment for full details.

Comment thread .github/actions/setup-gcp/action.yml
@fullsend-ai-review fullsend-ai-review Bot added requires-manual-review Review requires human judgment and removed requires-manual-review Review requires human judgment labels Jul 6, 2026
@ifireball
ifireball added this pull request to the merge queue Jul 6, 2026
Merged via the queue into fullsend-ai:main with commit d6f5ece Jul 6, 2026
23 checks passed
@ifireball
ifireball deleted the fix/per-repo-scripts-path branch July 6, 2026 05:30
@fullsend-ai-retro

fullsend-ai-retro Bot commented Jul 6, 2026

Copy link
Copy Markdown

🤖 Finished Retro · ✅ Success · Started 5:32 AM UTC · Completed 5:38 AM UTC
Commit: 6237822 · View workflow run →

@fullsend-ai-retro

Copy link
Copy Markdown

Retro for PR #3039: clean, human-authored bug fix threading fullsend-dir input through 7 workflow files to fix per-repo script path resolution. The review agent produced only procedural findings (protected-path, naming-conventions). The human reviewer gave a clean approval with no comments. Zero delta between agent and human review. One proposal filed to extend retro skip conditions for procedural-only findings.

Proposals filed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug component/ci CI pipelines and checks requires-manual-review Review requires human judgment

Projects

None yet

2 participants