ci(functional-tests): add config.yaml for local agent resolution - #78
Conversation
fullsend v0.29.0 needs an explicit config.yaml to populate allowed_remote_resources for script URL resolution. Registering agents with local harness paths also ensures functional tests validate the PR branch content instead of the @v0 release tag. Signed-off-by: Ralph Bean <rbean@redhat.com> Assisted-by: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Ralph Bean <rbean@redhat.com>
PR Summary by QodoAdd fullsend config.yaml to allow remote scripts and use local harness agents
AI Description
Diagram
High-Level Assessment
Files changed (1)
|
|
🤖 Review · |
|
🤖 Review · |
Code Review by Qodo
Context used✅ Compliance rules (platform):
55 rules 1.
|
| allowed_remote_resources: | ||
| - "https://raw.githubusercontent.com/fullsend-ai/fullsend/" | ||
| - "https://raw.githubusercontent.com/fullsend-ai/agents/" |
There was a problem hiding this comment.
3. Overbroad remote allowlist 🐞 Bug ⛨ Security
config.yaml allowlists entire raw.githubusercontent.com prefixes for fullsend-ai/fullsend and fullsend-ai/agents, allowing fullsend to fetch any file at any ref under those repos. Because pre/post scripts run on the GitHub Actions runner (not just in the sandbox) and functional tests run in pull_request_target with secrets, this unnecessarily expands runner-side remote code-fetch surface.
Agent Prompt
## Issue description
`allowed_remote_resources` is currently a broad prefix allowlist that can permit fetching arbitrary content from entire repos/refs.
## Issue Context
Functional tests run in `pull_request_target` and pass secrets into the run; the agent pipeline executes pre/post scripts on the runner.
## Fix Focus Areas
- config.yaml[1-4]
- .github/workflows/functional-tests.yml[3-6]
- .github/workflows/functional-tests.yml[245-255]
## Proposed fix
1. Narrow the allowlist to the minimal required subpaths (e.g., only the specific directories/files that fullsend actually needs to fetch).
2. Prefer pinning to immutable refs (commit SHA or a specific release tag path) instead of allowing any ref.
3. If feasible, generate/overwrite the allowlist in the workflow from a trusted base-branch source (or validate the PR’s config) so PRs can’t broaden it in secret-bearing `pull_request_target` runs.
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
- Configure OpenShell gateway before sandbox creation so fullsend can create sandboxes - Add config.yaml to push paths filter and PR change-detection regex - Tweak triage agent to trigger a real functional test run Signed-off-by: Ralph Bean <rbean@redhat.com> Assisted-by: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Ralph Bean <rbean@redhat.com>
122031d to
a384f83
Compare
|
🤖 Review · |
The pull_request_target workflow runs YAML from main, not the PR branch, so new steps like Configure OpenShell gateway don't take effect until merged. Add a pull_request variant to iterate on fixes in-PR. Remove once changes are validated and merged back to the pull_request_target workflow. Assisted-by: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Ralph Bean <rbean@redhat.com>
|
🤖 Review · |
The previous approach installed only the CLI binary via tarball. The upstream install.sh also installs the openshell-gateway systemd service, starts it, and registers the local gateway -- without which sandbox creation fails with "No active gateway." Fetch install-openshell.sh and openshell-version.sh from the fullsend repo at the pinned tag, matching what fullsend's own functional tests do. Assisted-by: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Ralph Bean <rbean@redhat.com>
|
🤖 Review · |
The supervisor_image tag had a spurious 'v' prefix (v0.0.76 vs 0.0.76), causing 'manifest unknown' when the gateway tried to pull the image. Also restore step ordering to match fullsend: configure gateway, install OpenShell CLI (via upstream installer), then Podman. GHA runners have Docker pre-installed so the gateway can start before Podman. Assisted-by: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Ralph Bean <rbean@redhat.com>
|
🤖 Review · |
Copy prepare-sandbox-credentials.sh from the fullsend scaffold. It rewrites WIF credential configs to use file-based credential sources since sandboxes cannot reach GitHub's OIDC endpoint directly. Without this, fullsend fails copying host credentials into the sandbox. Assisted-by: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Ralph Bean <rbean@redhat.com>
|
🤖 Review · |
Backport the working OpenShell setup from the temporary pull_request workflow: configure gateway before install, use upstream installer, and export both VERSION and SHA to GITHUB_ENV. Remove the temporary functional-tests-pr.yml workflow. Assisted-by: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Ralph Bean <rbean@redhat.com>
|
🤖 Finished Review · ✅ Success · Started 8:53 PM UTC · Completed 9:07 PM UTC |
|
🤖 Finished Retro · ✅ Success · Started 8:56 PM UTC · Completed 9:02 PM UTC |
|
PR #78 was a human-authored CI configuration fix (7 commits in 48 minutes) that added Proposals filed
|
|
Review skipped — this PR is already merged. The Posted by fullsend post-review check |
Summary
config.yamlwithallowed_remote_resourcesto fix script URL resolution in fullsend v0.29.0@v0release tagContext
Without
config.yaml, fullsend v0.29.0 has an emptyallowed_remote_resourcesallowlist (a bug fixed in the next release). This caused all functional test cases to fail immediately with:Registering agents as local paths also fixes a semantic problem: without explicit registration,
fullsend runresolves agents fromfullsend-ai/agents@v0(the latest release tag), meaning functional tests were never actually testing the PR's changes.Test plan
functional-testsCI check passes with actual agent execution (not short-circuited)🤖 Generated with Claude Code