Skip to content

ci(#7751): start the Podman API socket with systemd in functional-tests - #7845

Merged
waynesun09 merged 2 commits into
mainfrom
fullsend-ft-podman-socket
Sep 29, 2026
Merged

waynesun09 merged 2 commits into
mainfrom
fullsend-ft-podman-socket

Conversation

@waynesun09

@waynesun09 waynesun09 commented Sep 29, 2026 •

Copy link
Copy Markdown
Member

Summary

Follow-up to #7233. Since the move to OpenShell 0.1.2, functional-tests fails at Install OpenShell CLI: the gateway restarts in a loop with no responsive Podman API socket found; set OPENSHELL_PODMAN_SOCKET or configure socket_path (for example main run 36621388722). OpenShell 0.1 pins the podman compute driver and checks the socket when the gateway starts; 0.0.116 did not.

The workflow started the Podman API with a background podman system service from a step. action.yml, which e2e runs successfully on the same hosted runners, starts it with systemctl --user start podman.socket. This does the same and waits until the socket answers.

Testing

  • actionlint passes.
  • workflow_dispatch of this branch's functional-tests (run 36623063153): Install OpenShell CLI passes and the gateway starts.
  • This PR's own functional-tests runs main's workflow (pull_request_target), so it keeps failing until this merges. It is not a required check.

The same fix for agents: fullsend-ai/agents#1557.

Since the move to OpenShell 0.1.2, functional-tests fails at "Install
OpenShell CLI": the gateway restarts in a loop with "no responsive
Podman API socket found". OpenShell 0.1 pins the podman compute driver
and checks the socket when the gateway starts; 0.0.116 did not.

The workflow started the Podman API with a background
`podman system service` from a step. action.yml, which e2e runs
successfully on the same hosted runners, starts it with
`systemctl --user start podman.socket` instead. Do the same here and
wait until the socket answers.

Assisted-by: Claude
Signed-off-by: Wayne Sun <gsun@redhat.com>
@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Start the Podman user socket before functional tests

🐞 Bug fix 🕐 Less than 10 minutes

Grey Divider

AI Description

• Start Podman through the systemd user socket so the OpenShell gateway can reach its API.
• Verify the API responds before installing OpenShell, failing with the socket path if it does not.
Diagram

graph TD
  A["Functional workflow"] --> B["User systemd"] --> C["Podman socket"] --> D["API readiness check"] --> E["OpenShell gateway"]
Loading
High-Level Assessment

Use the existing systemd-managed socket pattern from action.yml. It addresses the gateway's startup dependency without retaining a step-owned background service; the readiness probe also confirms the API works, not merely that a socket file exists.

Files changed (1) +12 / -9

Bug fix (1) +12 / -9
functional-tests.ymlStart and verify the systemd-managed Podman socket +12/-9

Start and verify the systemd-managed Podman socket

• Replaces the conditional background Podman service with the systemd user socket. The workflow now probes the API on every run before configuring and installing OpenShell, and reports the socket path if it remains unresponsive.

.github/workflows/functional-tests.yml

@qodo-code-review

qodo-code-review Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (1) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)

Grey Divider


Remediation recommended

1. Socket step lacks the CI review note 📘 Rule violation § Compliance
Description
The updated Start Podman API service step does not say that docs/contributing/ci-workflows.md
was consulted, and the PR description does not mention the guide either. This edit is in a
pull_request_target workflow whose test job uses secrets, so the required review acknowledgment is
missing for this change.
Code

.github/workflows/functional-tests.yml[188]

+          systemctl --user start podman.socket
Relevance

●●● Strong

Recent workflow compliance findings are accepted; explicit acknowledgments are deterministic
requirements for protected CI changes.

PR-#2534
PR-#2106

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
Rule 3201588 requires an explicit guide-review acknowledgment for this kind of workflow change. The
added socket-start step is in a workflow triggered by pull_request_target that uses secrets;
neither the added comment nor the supplied PR description references the guide.

Rule 3201588: Consult CI workflow guide when modifying GitHub Actions workflows or secrets
.github/workflows/functional-tests.yml[21-24]
.github/workflows/functional-tests.yml[183-188]
.github/workflows/functional-tests.yml[236-243]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The PR changes a `pull_request_target` workflow that uses secrets but does not state that the CI workflow guide was consulted.

## Fix Focus Areas
- .github/workflows/functional-tests.yml[183-188]

## Recommended Fix
Review `docs/contributing/ci-workflows.md`, then explicitly record that review in the PR description or an inline comment.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Dismiss ↗ | View ↗


Grey Divider

Context sources
✅ Compliance rules (platform): 72 rules
✅ Cross-repo context — repo relationships
  Explored: repo: fullsend-ai/agents (branch: agents-ft-podman-socket, sha: 82eacb85) — View relationship
Review mode: ⚖️ Balanced: This is a localized CI workflow behavior change involving systemd socket activation and service readiness, so it warrants a careful standard review despite having only one edit site.

Grey Divider

Tip of the day
💡 Did you know, you can add REVIEW.md to your repo root and Qodo follows it on every PR

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment thread .github/workflows/functional-tests.yml
@fullsend-ai-review

fullsend-ai-review Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

🤖 Review · ⚠️ Cancelled · Started 8:05 PM UTC · Ended 8:09 PM UTC

Commit: f5dd5a4 · View workflow run →

@codecov

codecov Bot commented Sep 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

…r answers

If the readiness wait times out, print the systemd status and recent
journal of podman.socket and podman.service before failing, as
install-openshell.sh does for the gateway, so the failure can be
diagnosed from the log.

Assisted-by: Claude
Signed-off-by: Wayne Sun <gsun@redhat.com>
@fullsend-ai-review

fullsend-ai-review Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 8:12 PM UTC · Completed 8:23 PM UTC

Commit: 03dd949 · View workflow run →

Runtime: pi · Model: sonnet → claude-sonnet-5 · Effort: high · Cost: $1.83

@fullsend-ai-review fullsend-ai-review Bot added the risk/moderate PR risk: moderate label Sep 29, 2026
@fullsend-ai-review

Copy link
Copy Markdown

Risk Assessment: moderate (2/5)

Details

Small CI workflow change (1 file, 23 lines) touching a protected path with moderate recent churn and multi-author history on the file, no linked issue for Tier 3; overall a routine, well-tested CI fix warranting standard review.

@fullsend-ai-review

Copy link
Copy Markdown

Review

Findings

Medium

  • [protected-path] .github/workflows/functional-tests.yml — This file falls under the active protected-paths list (.github/), which always requires human approval regardless of context. The PR provides sufficient context: it explains the specific CI failure (functional-tests looping at "Install OpenShell CLI" after the OpenShell 0.1.2 migration in feat(#7229)!: move to OpenShell 0.1.2 #7233/Move to OpenShell 0.1.1 #7751), the root cause (0.1's podman compute driver checks the API socket when the gateway starts), the fix (systemd socket activation matching action.yml, plus a readiness retry loop and failure diagnostics), and a documented workflow_dispatch run confirming the fix.
    Remediation: A human maintainer should review and explicitly approve this workflow change before merge, per the repository's protected-path policy.

@fullsend-ai-review fullsend-ai-review Bot added the requires-manual-review Review requires human judgment label Sep 29, 2026
@waynesun09
waynesun09 added this pull request to the merge queue Sep 29, 2026
Merged via the queue into main with commit 3bd9c6f Sep 29, 2026
66 of 67 checks passed
@waynesun09
waynesun09 deleted the fullsend-ft-podman-socket branch September 29, 2026 22:18
@waynesun09

Copy link
Copy Markdown
Member Author

Correction to "re-running failed jobs is enough" above: a re-run replays the workflow as it was resolved for the PR's original pull_request_target event, so it still runs the pre-fix workflow and fails again at Install OpenShell CLI. An open PR picks up this fix only from a new event: push to the branch (updating it from main works), close and reopen it, or add the ok-to-test label.

waynesun09 added a commit to fullsend-ai/agents that referenced this pull request Sep 30, 2026
…iour fix

The behaviour tests build fullsend at the version this go.mod pins. The
pin was v0.43.1-0.20260916094335-b108ba60479e, from 2026-09-16. That
fullsend predates the OpenShell 0.1 behaviour fix, so behaviour has
failed on main since the OpenShell 0.1.2 port (#1513): the scenario's
fullsend.yaml run concludes with a failure.

Pin fullsend main d8cbb9744, which carries:

- fullsend-ai/fullsend#7847: unblock behaviour on OpenShell 0.1, retry
  profile-not-found.
- fullsend-ai/fullsend#7845: start the Podman API socket with systemd.
- fullsend-ai/fullsend#7840: always recreate a pool repo after reset
  instead of trusting a stale GetRepo success, so allocation cannot
  skip recreation and then 404 during `fullsend github setup`.
- fullsend-ai/fullsend#7865: retry the GitHub pre-flight on EOF and
  connection reset.

The behaviour suite builds both the install driver and cmd/fullsend
from this pin, so both flake fixes reach agents CI.

go.sum gains only the two fullsend lines, as the previous bump did.
`go mod tidy` against the published module cannot resolve fullsend's
nested internal/mintcore module, because its replace directive applies
only inside fullsend. The behaviour workflow already replaces both
modules with the pinned checkout and tidies a temporary modfile. That
path was run locally at d8cbb9744: tidy succeeds, the behaviour
package compiles and vets with the behaviour tag, and cmd/fullsend
builds.

Assisted-by: Claude
Signed-off-by: Wayne Sun <gsun@redhat.com>

This branch was previously deployed

1 inactive deployment
dev — 03dd9494 Deployed Sep 29, 2026 by waynesun09 via behaviour #14492
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

requires-manual-review Review requires human judgment risk/moderate PR risk: moderate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants