Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions .github/workflows/e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,7 @@ jobs:
outputs:
cli_artifact_provenance: ${{ steps.record_cli_artifact.outputs.provenance }}
e2e_credentials_allowed: ${{ steps.e2e_credentials.outputs.allowed }}
managed_image_catalog: ${{ steps.resolve_pr_managed_image_catalog.outputs.catalog }}
matrix: ${{ steps.matrix.outputs.matrix }}
test_matrix: ${{ steps.matrix.outputs.test_matrix }}
hermes_selected: ${{ steps.matrix.outputs.hermes_selected }}
Expand Down Expand Up @@ -647,6 +648,33 @@ jobs:
fi
fi

- id: resolve_pr_managed_image_catalog
name: Resolve exact PR managed-image catalog
if: ${{ inputs.checkout_sha != '' && (inputs.jobs != 'native-runtime-qualification-producer' || inputs.targets != '') }}
env:
BASE_SHA: ${{ inputs.base_sha }}
CANDIDATE_REPOSITORY: ${{ inputs.checkout_repository }}
CANDIDATE_SHA: ${{ inputs.checkout_sha }}
GITHUB_TOKEN: ${{ github.token }}
PR_NUMBER: ${{ inputs.pr_number }}
shell: bash
run: |
set -euo pipefail
catalog_path="${RUNNER_TEMP}/pr-managed-image-catalog.json"
rm -f -- "$catalog_path"
node --experimental-strip-types --no-warnings \
tools/e2e/pr-managed-image-publication.mts "$catalog_path"
if [[ -e "$catalog_path" ]]; then
[[ -f "$catalog_path" && ! -L "$catalog_path" && -s "$catalog_path" ]] || {
echo "::error::trusted PR managed-image catalog is not a nonempty regular file" >&2
exit 1
}
catalog="$(jq -c . "$catalog_path")"
catalog_sha256="$(printf '%s\n' "$catalog" | sha256sum | awk '{print $1}')"
printf 'catalog=%s\n' "$catalog" >>"$GITHUB_OUTPUT"
printf 'catalog_sha256=%s\n' "$catalog_sha256" >>"$GITHUB_OUTPUT"
fi

- name: Check out E2E candidate
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
if: ${{ inputs.checkout_sha == '' || inputs.jobs != 'native-runtime-qualification-producer' || inputs.targets != '' }}
Expand Down Expand Up @@ -724,6 +752,8 @@ jobs:
env:
CANDIDATE_REPOSITORY: ${{ inputs.checkout_repository || github.repository }}
CANDIDATE_SHA: ${{ inputs.checkout_sha || github.sha }}
MANAGED_IMAGE_CATALOG: ${{ steps.resolve_pr_managed_image_catalog.outputs.catalog }}
MANAGED_IMAGE_CATALOG_SHA256: ${{ steps.resolve_pr_managed_image_catalog.outputs.catalog_sha256 }}
RUN_ATTEMPT: ${{ github.run_attempt }}
RUN_ID: ${{ github.run_id }}
WORKFLOW_SHA: ${{ github.workflow_sha }}
Expand Down Expand Up @@ -761,6 +791,43 @@ jobs:
' dist/build-identity.json >/dev/null ||
{ echo "::error::candidate CLI build identity does not match the candidate commit SHA"; exit 1; }

# BEGIN exact managed-image catalog staging
managed_catalog="${RUNNER_TEMP}/pr-managed-image-catalog.json"
artifact_catalog="dist/e2e-managed-image-catalog.json"
[[ ! -e "$artifact_catalog" && ! -L "$artifact_catalog" ]] || {
echo "::error::candidate build created the trusted managed-image catalog path" >&2
exit 1
}
if [[ -n "$MANAGED_IMAGE_CATALOG" ]]; then
[[ "$MANAGED_IMAGE_CATALOG_SHA256" =~ ^[a-f0-9]{64}$ ]] || {
echo "::error::trusted PR managed-image catalog digest is invalid" >&2
exit 1
}
[[ -f "$managed_catalog" && ! -L "$managed_catalog" && -s "$managed_catalog" ]] || {
echo "::error::trusted PR managed-image catalog is not a nonempty regular file" >&2
exit 1
}
[[ "$(sha256sum "$managed_catalog" | awk '{print $1}')" == "$MANAGED_IMAGE_CATALOG_SHA256" ]] || {
echo "::error::trusted PR managed-image catalog changed after authentication" >&2
exit 1
}
(umask 077 && set -o noclobber && printf '%s\n' "$MANAGED_IMAGE_CATALOG" >"$artifact_catalog")
[[ -f "$artifact_catalog" && ! -L "$artifact_catalog" && -s "$artifact_catalog" ]] || {
echo "::error::packaged PR managed-image catalog is invalid" >&2
exit 1
}
[[ "$(sha256sum "$artifact_catalog" | awk '{print $1}')" == "$MANAGED_IMAGE_CATALOG_SHA256" ]] || {
echo "::error::packaged PR managed-image catalog does not match trusted output" >&2
exit 1
}
else
[[ -z "$MANAGED_IMAGE_CATALOG_SHA256" && ! -e "$managed_catalog" && ! -L "$managed_catalog" ]] || {
echo "::error::managed-image catalog authority is inconsistent" >&2
exit 1
}
fi
# END exact managed-image catalog staging

artifact_dir="${RUNNER_TEMP}/nemoclaw-cli-artifact"
install -d -m 0700 "$artifact_dir"
payload="$artifact_dir/nemoclaw-cli.tar"
Expand Down
Loading
Loading