@ferrflow/doc 7.24.6 → 7.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -48,6 +48,31 @@ Release commits and tags use the repository's git identity. If the job sets none
48
48
  <aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>Prefer not to manage a token? Set <code>bot: true</code> to author releases as <code>ferrflow[bot]</code> with zero secrets: see the <a href="/docs/ci/hosted-bot">Hosted bot</a> guide.</p>
49
49
  </div></aside>
50
50
 
51
+ ## Signing the release tag
52
+
53
+ GitHub signs the commits it creates through its API, which is why a release commit made with `bot: true` shows as verified. It never signs a tag object, and a GitHub App holds no key of its own, so the tag FerrFlow pushes is unsigned unless you give the action a signing key.
54
+
55
+ ```yaml
56
+ - uses: FerrLabs/FerrFlow@v7
57
+ with:
58
+ bot: true
59
+ tag_signing_key: ${{ secrets.TAG_SIGNING_KEY }}
60
+ tag_signing_name: ${{ vars.TAG_SIGNING_NAME }}
61
+ tag_signing_email: ${{ vars.TAG_SIGNING_EMAIL }}
62
+ ```
63
+
64
+ The key is an unencrypted OpenSSH private key, and the tagger it signs as has to be an account GitHub can check the signature against:
65
+
66
+ ```bash
67
+ ssh-keygen -t ed25519 -C "releases" -N "" -f ferrflow-tag-signing
68
+ ```
69
+
70
+ In PowerShell, leave `-N` out and press Enter twice at the prompt. A bare `-N ""` is dropped by Windows PowerShell 5.1, and `-N '""'` reaches ssh-keygen as a literal `""` passphrase on PowerShell 7.3 and later. The key must have no passphrase, since the runner cannot type one.
71
+
72
+ Add `ferrflow-tag-signing.pub` to that account under **Settings > SSH and GPG keys > New SSH key** with the key type **Signing Key**, store the private half as the `TAG_SIGNING_KEY` secret, and set `tag_signing_email` to one of the account's verified emails. GitHub verifies a tag against the keys of the account whose verified email the tagger carries, so a mismatch there shows as unverified rather than failing the release.
73
+
74
+ The action writes the key under `RUNNER_TEMP` for the job only, and it never reaches the repository or the tag itself. The tagger identity is exported to the job, so any `git commit` a later step of your workflow makes is recorded with that committer too. Only the tag is signed: the release commit already carries GitHub's own signature in bot mode, and the release archives are signed separately with cosign.
75
+
51
76
  ## Accessing the release output
52
77
 
53
78
  The action exposes the new version as an output you can use in downstream steps:
@@ -48,6 +48,31 @@ Les commits et tags de release utilisent l'identité git du dépôt. Si le job n
48
48
  <aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>Vous préférez ne pas gérer de token ? Mettez <code>bot: true</code> pour attribuer les releases à <code>ferrflow[bot]</code> sans aucun secret : voir le guide <a href="/fr/docs/ci/hosted-bot">Bot hébergé</a>.</p>
49
49
  </div></aside>
50
50
 
51
+ ## Signer le tag de release
52
+
53
+ GitHub signe les commits qu'il crée via son API : c'est pourquoi un commit de release fait avec `bot: true` apparaît vérifié. Il ne signe jamais un objet tag, et une GitHub App ne possède aucune clé, donc le tag poussé par FerrFlow reste non signé tant que vous ne donnez pas de clé de signature à l'action.
54
+
55
+ ```yaml
56
+ - uses: FerrLabs/FerrFlow@v7
57
+ with:
58
+ bot: true
59
+ tag_signing_key: ${{ secrets.TAG_SIGNING_KEY }}
60
+ tag_signing_name: ${{ vars.TAG_SIGNING_NAME }}
61
+ tag_signing_email: ${{ vars.TAG_SIGNING_EMAIL }}
62
+ ```
63
+
64
+ La clé est une clé privée OpenSSH non chiffrée, et le tagger avec lequel elle signe doit être un compte auquel GitHub peut rattacher la signature :
65
+
66
+ ```bash
67
+ ssh-keygen -t ed25519 -C "releases" -N "" -f ferrflow-tag-signing
68
+ ```
69
+
70
+ Sous PowerShell, omettez `-N` et appuyez deux fois sur Entrée. Un `-N ""` nu est supprimé par Windows PowerShell 5.1, et `-N '""'` arrive à ssh-keygen comme une passphrase littérale `""` sur PowerShell 7.3 et suivants. La clé doit être sans passphrase, le runner ne pouvant pas en saisir une.
71
+
72
+ Ajoutez `ferrflow-tag-signing.pub` à ce compte via **Settings > SSH and GPG keys > New SSH key** en choisissant le type **Signing Key**, stockez la moitié privée dans le secret `TAG_SIGNING_KEY`, et mettez dans `tag_signing_email` une des adresses vérifiées du compte. GitHub vérifie un tag contre les clés du compte dont le tagger porte l'adresse vérifiée : en cas de décalage, le tag s'affiche comme non vérifié, la release n'échoue pas.
73
+
74
+ L'action écrit la clé sous `RUNNER_TEMP`, le temps du job, et elle n'atteint ni le dépôt ni le tag lui-même. L'identité du tagger est exportée au job : un `git commit` fait par une étape ultérieure de votre workflow portera donc aussi ce committer. Seul le tag est signé : le commit de release porte déjà la signature de GitHub en mode bot, et les archives de release sont signées à part avec cosign.
75
+
51
76
  ## Accéder à la sortie de la release
52
77
 
53
78
  L'action expose la nouvelle version en output que vous pouvez utiliser dans les étapes suivantes :
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ferrflow/doc",
3
- "version": "7.24.6",
3
+ "version": "7.25.0",
4
4
  "description": "Documentation for FerrFlow, the universal semantic versioning CLI. Rendered at ferrflow.com/docs.",
5
5
  "license": "MIT",
6
6
  "repository": {