Skip to content

Commit 2588b8a

Browse files
committed
feat: zero-config drop-in — step summary setup guide, README one-liner, badge, Marketplace metadata
1 parent 2ef2809 commit 2588b8a

7 files changed

Lines changed: 360 additions & 63 deletions

File tree

.auths/allowed_signers

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# auths:managed — do not edit manually
22
# auths:attestation
33
z6MkhPJCPXd5A9VN4wScJkxTtz6de7egZQx78vsiAT1vg3PZ@auths.local namespaces="git" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICuPK6OfYp7ngZp40Q+Dsrahhks472v6gPIMD0upCRnM
4+
z6MkhfnUUc2UJJ5C9sQQ7GvXmSbQJsdtNKV6HNYcQtTjc7xE@auths.local namespaces="git" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC/Ib83sxXogDnEVzLjFBkyC+DhP+cssbPzZAmQhB+Lz
45
# auths:manual

.github/workflows/release.yml

Lines changed: 6 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -31,58 +31,14 @@ jobs:
3131
- name: Check dist is up to date
3232
run: git diff --exit-code -- dist/ ':!dist/**/*.d.ts.map'
3333

34-
# --- Artifact signing (mirrors auths/auths release workflow) ---
35-
- name: Install auths CLI
36-
run: |
37-
mkdir -p /tmp/auths-install
38-
curl -sL https://github.com/auths-dev/auths/releases/latest/download/auths-linux-x86_64.tar.gz | tar xz -C /tmp/auths-install
39-
sudo cp /tmp/auths-install/auths /usr/local/bin/auths
40-
rm -rf /tmp/auths-install
41-
42-
- name: Sign dist/index.js
43-
env:
44-
AUTHS_CI_TOKEN: ${{ secrets.AUTHS_CI_TOKEN }}
45-
AUTHS_KEYCHAIN_BACKEND: file
46-
AUTHS_KEYCHAIN_FILE: /tmp/auths-ci-keychain
47-
run: |
48-
if [ -z "$AUTHS_CI_TOKEN" ]; then
49-
echo "::warning::Skipping artifact signing: AUTHS_CI_TOKEN not set (run 'auths ci setup' to configure)"
50-
exit 0
51-
fi
52-
53-
# Extract fields from the single CI token
54-
AUTHS_PASSPHRASE=$(echo "$AUTHS_CI_TOKEN" | jq -r '.passphrase')
55-
echo "::add-mask::$AUTHS_PASSPHRASE"
56-
export AUTHS_PASSPHRASE
57-
58-
echo "$AUTHS_CI_TOKEN" | jq -r '.keychain' | base64 -d > /tmp/auths-ci-keychain
59-
mkdir -p /tmp/auths-identity
60-
echo "$AUTHS_CI_TOKEN" | jq -r '.identity_repo' | base64 -d | tar -xz -C /tmp/auths-identity
61-
62-
if ! git -C /tmp/auths-identity rev-parse --git-dir > /dev/null 2>&1; then
63-
echo "::warning::Skipping artifact signing: identity repo in AUTHS_CI_TOKEN is not a valid git repository"
64-
exit 0
65-
fi
66-
67-
auths artifact sign dist/index.js \
68-
--device-key ci-release-device \
69-
--note "GitHub Actions release — ${GITHUB_REF_NAME}" \
70-
--repo /tmp/auths-identity
71-
72-
echo "Signed dist/index.js → dist/index.js.auths.json"
73-
74-
# Write verify bundle for next step
75-
echo "$AUTHS_CI_TOKEN" | jq -r '.verify_bundle' > /tmp/auths-verify-bundle.json
76-
77-
# --- Verify the artifact we just signed (dogfood) ---
78-
- name: Verify dist/index.js attestation
79-
if: hashFiles('dist/index.js.auths.json') != ''
80-
uses: ./
34+
# --- Artifact signing (dogfood: sign dist/index.js using auths-dev/sign@v1) ---
35+
- name: Sign and verify dist/index.js
36+
uses: auths-dev/sign@v1
8137
with:
82-
token: /tmp/auths-verify-bundle.json
38+
token: ${{ secrets.AUTHS_CI_TOKEN }}
8339
files: 'dist/index.js'
84-
fail-on-unattested: true
85-
fail-on-unsigned: false
40+
verify: true
41+
note: 'GitHub Actions release — ${{ github.ref_name }}'
8642

8743
- name: Generate SHA256 checksums
8844
run: |

README.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Auths Verify Action
22

3+
[![Verified with Auths](https://img.shields.io/badge/Verified%20with-Auths-4B9CD3?logo=github&logoColor=white)](https://github.com/auths-dev/verify)
4+
35
Verify commit signatures using [Auths](https://github.com/auths-dev/auths) token keys. Ensures every commit in a PR or push is cryptographically signed by an authorized developer.
46

57
## Quickstart
@@ -13,6 +15,28 @@ Verify commit signatures using [Auths](https://github.com/auths-dev/auths) token
1315
1416
That's it. The action auto-detects the commit range from the GitHub event (PR or push), downloads the `auths` CLI, and verifies each commit. Identity is auto-detected from the `token` input (defaults to `.auths/allowed_signers`).
1517

18+
## One-Liner Install
19+
20+
Add this file to your repo to start enforcing signed commits on every PR:
21+
22+
```yaml
23+
# .github/workflows/verify.yml
24+
name: Verify Commits
25+
on: [pull_request]
26+
jobs:
27+
verify:
28+
runs-on: ubuntu-latest
29+
steps:
30+
- uses: actions/checkout@v4
31+
with:
32+
fetch-depth: 0
33+
- uses: auths-dev/verify@v1
34+
with:
35+
fail-on-unsigned: true
36+
```
37+
38+
That's it. No token or configuration needed — the action reads `.auths/allowed_signers` automatically.
39+
1640
## Features
1741

1842
- Verifies SSH commit signatures against allowed signers or identity bundles

action.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
name: 'Verify with Auths'
2-
description: 'Verify commit signatures and artifact attestations using Auths identity keys'
3-
author: 'auths'
2+
description: >
3+
Protect your supply chain by enforcing cryptographic commit signatures on every PR.
4+
Verifies that every commit is signed by an authorized developer using Auths identity keys.
5+
Zero configuration needed — reads .auths/allowed_signers automatically.
6+
Classifies failures (unsigned, unknown key, corrupted signature) with copy-pasteable fix commands
7+
and posts a GitHub Step Summary with a "How to fix" guide.
8+
author: 'auths-dev'
49

510
inputs:
611
token:

0 commit comments

Comments
 (0)