Skip to content

[publisher] F: Preserve artifact path after clone#112

Merged
ppenna merged 2 commits into
mainfrom
fix/publisher-artifact-path
Jul 13, 2026
Merged

[publisher] F: Preserve artifact path after clone#112
ppenna merged 2 commits into
mainfrom
fix/publisher-artifact-path

Conversation

@ppenna

@ppenna ppenna commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Summary

Canonicalize and validate the publication artifact directory before changing into the fresh consumer clone.

The first v0.15.0 rollout proved that workflow-provided artifact paths are relative. Pre-clone digest/policy checks succeeded, but the stale-base check could no longer read metadata.json after cd, so every independent publisher failed closed. The regression test now runs the successful publisher path with a relative artifact directory.

Validation

  • 13 foundation tests
  • ShellCheck
  • shfmt

Canonicalize the downloaded artifact directory before entering the fresh consumer clone. This keeps metadata and result validation anchored to trusted workflow storage and rejects symlinked artifact directories.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 3a354ddf-0f65-44b2-a2cb-81d4662a3587
Copilot AI review requested due to automatic review settings July 13, 2026 00:59
Run foundation CI when its registry, scripts, or tests change, not only when workflow YAML changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 3a354ddf-0f65-44b2-a2cb-81d4662a3587
@ppenna ppenna merged commit 9e00d7d into main Jul 13, 2026
2 checks passed
@ppenna ppenna deleted the fix/publisher-artifact-path branch July 13, 2026 01:00

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes a publisher regression where workflow-provided artifact paths may be relative and become invalid after the script cds into a freshly cloned consumer repository. It does this by validating and canonicalizing the artifact directory to a stable absolute path early, and by updating the regression test to exercise the relative-path scenario.

Changes:

  • Canonicalize the publication artifact directory (ARTIFACT_DIR) to an absolute physical path before cloning/chdir in scripts/publish-update.sh.
  • Add basic validation that the artifact directory exists and is not a symlink.
  • Update the publisher regression test to pass a relative artifact directory and ensure tests run from repo root.
Show a summary per file
File Description
tests/run-tests.sh Adjusts test harness CWD and passes a relative ARTIFACT_DIR to cover the reported regression.
scripts/publish-update.sh Validates and canonicalizes the artifact directory before cloning and changing directories.

Review details

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 3/3 changed files
  • Comments generated: 1
  • Review effort level: Low

Comment thread scripts/publish-update.sh
Comment on lines +14 to +22
ARTIFACT_INPUT="${ARTIFACT_DIR:?ARTIFACT_DIR is required}"
TOKEN="${GH_TOKEN:?GH_TOKEN is required}"
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"

if [ ! -d "$ARTIFACT_INPUT" ] || [ -L "$ARTIFACT_INPUT" ]; then
echo "error: publication artifact directory is missing or unsafe" >&2
exit 1
fi
ARTIFACT_DIR="$(cd "$ARTIFACT_INPUT" && pwd -P)"
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.

2 participants