Skip to content

Commit 8209f03

Browse files
feat: execute signed provider migration campaigns
1 parent 293e32e commit 8209f03

3 files changed

Lines changed: 29 additions & 3 deletions

File tree

README.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,12 @@ This repository is the minimal public customer-side GitHub Action. It contains n
66

77
## GitHub App customers
88

9-
The PatchPilot GitHub App generates a protected default-branch workflow that pins this Action to a reviewed commit. The workflow receives only signed pull-request coordinates, checks out the exact head commit without persisting credentials, analyzes it inside the customer's own GitHub runner, comments on the pull request, and uploads the migration evidence.
9+
The PatchPilot GitHub App generates a protected default-branch workflow that pins this Action to a reviewed commit. It supports two paths:
10+
11+
- pull-request analysis receives only signed commit coordinates, checks out the exact head without persisting credentials, and reports API impact;
12+
- provider campaigns download old/new contracts plus a signed manifest from hash-pinned GitHub release assets, verify the customer-pinned Ed25519 key, and apply only deterministic, syntax-valid changes inside the customer's runner.
13+
14+
Provider campaigns fail closed if any asset hash, provider name, signature, expiry, or contract semantics do not match. The provider never supplies the trusted public key; the customer stores it in a protected repository variable.
1015

1116
## Direct Action usage
1217

@@ -20,7 +25,7 @@ steps:
2025
with:
2126
fetch-depth: 0
2227
persist-credentials: false
23-
- uses: prathamesh-git9/patchpilot-action@v0.17.0
28+
- uses: prathamesh-git9/patchpilot-action@v0.18.0
2429
id: patchpilot
2530
with:
2631
spec: api/openapi.yaml

action.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,27 @@ inputs:
6161
description: Fail unless the contract migration has a valid, unexpired provider signature pinned by provider_public_key_base64.
6262
required: false
6363
default: 'false'
64+
old_spec_url:
65+
description: Hash-pinned previous contract URL for provider campaign mode; GitHub asset hosts only.
66+
required: false
67+
old_spec_sha256:
68+
description: SHA-256 digest for old_spec_url.
69+
required: false
70+
new_spec_url:
71+
description: Hash-pinned new contract URL for provider campaign mode; GitHub asset hosts only.
72+
required: false
73+
new_spec_sha256:
74+
description: SHA-256 digest for new_spec_url.
75+
required: false
76+
manifest_url:
77+
description: Hash-pinned provider manifest URL for provider campaign mode; GitHub asset hosts only.
78+
required: false
79+
manifest_sha256:
80+
description: SHA-256 digest for manifest_url.
81+
required: false
82+
provider:
83+
description: Provider name expected in the signed campaign manifest.
84+
required: false
6485

6586
outputs:
6687
breaking_changes:

dist/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)