@ferrflow/doc 7.17.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.
- package/docs-en/ci/github-actions.md +120 -0
- package/docs-en/ci/gitlab-ci.md +90 -0
- package/docs-en/ci/hosted-bot.md +82 -0
- package/docs-en/ci/pipeline-triggers.md +287 -0
- package/docs-en/configuration/config-file.md +1259 -0
- package/docs-en/configuration/formats.md +220 -0
- package/docs-en/configuration/monorepo.md +390 -0
- package/docs-en/installation.md +56 -0
- package/docs-en/introduction.md +56 -0
- package/docs-en/quickstart.md +66 -0
- package/docs-en/reference/api.md +106 -0
- package/docs-en/reference/cli.md +483 -0
- package/docs-en/reference/conventional-commits.md +103 -0
- package/docs-en/reference/errors.md +508 -0
- package/docs-en/verifying-releases.md +97 -0
- package/docs-fr/ci/github-actions.md +109 -0
- package/docs-fr/ci/gitlab-ci.md +77 -0
- package/docs-fr/ci/hosted-bot.md +82 -0
- package/docs-fr/ci/pipeline-triggers.md +238 -0
- package/docs-fr/configuration/config-file.md +839 -0
- package/docs-fr/configuration/formats.md +163 -0
- package/docs-fr/configuration/monorepo.md +357 -0
- package/docs-fr/installation.md +56 -0
- package/docs-fr/introduction.md +54 -0
- package/docs-fr/quickstart.md +63 -0
- package/docs-fr/reference/api.md +106 -0
- package/docs-fr/reference/cli.md +407 -0
- package/docs-fr/reference/conventional-commits.md +103 -0
- package/docs-fr/reference/errors.md +378 -0
- package/docs-fr/verifying-releases.md +97 -0
- package/docs-fr-v4/ci/github-actions.md +106 -0
- package/docs-fr-v4/ci/gitlab-ci.md +77 -0
- package/docs-fr-v4/ci/pipeline-triggers.md +214 -0
- package/docs-fr-v4/configuration/config-file.md +769 -0
- package/docs-fr-v4/configuration/formats.md +128 -0
- package/docs-fr-v4/configuration/monorepo.md +324 -0
- package/docs-fr-v4/installation.md +48 -0
- package/docs-fr-v4/introduction.md +54 -0
- package/docs-fr-v4/legal/telemetry.md +65 -0
- package/docs-fr-v4/quickstart.md +63 -0
- package/docs-fr-v4/reference/cli.md +130 -0
- package/docs-fr-v4/reference/conventional-commits.md +67 -0
- package/docs-fr-v4/reference/errors.md +372 -0
- package/docs-fr-v5/ci/github-actions.md +109 -0
- package/docs-fr-v5/ci/gitlab-ci.md +77 -0
- package/docs-fr-v5/ci/hosted-bot.md +82 -0
- package/docs-fr-v5/ci/pipeline-triggers.md +238 -0
- package/docs-fr-v5/configuration/config-file.md +812 -0
- package/docs-fr-v5/configuration/formats.md +150 -0
- package/docs-fr-v5/configuration/monorepo.md +357 -0
- package/docs-fr-v5/installation.md +56 -0
- package/docs-fr-v5/introduction.md +54 -0
- package/docs-fr-v5/legal/telemetry.md +26 -0
- package/docs-fr-v5/quickstart.md +63 -0
- package/docs-fr-v5/reference/api.md +106 -0
- package/docs-fr-v5/reference/cli.md +356 -0
- package/docs-fr-v5/reference/conventional-commits.md +88 -0
- package/docs-fr-v5/reference/errors.md +378 -0
- package/docs-fr-v5/verifying-releases.md +97 -0
- package/docs-fr-v6/ci/github-actions.md +109 -0
- package/docs-fr-v6/ci/gitlab-ci.md +77 -0
- package/docs-fr-v6/ci/hosted-bot.md +82 -0
- package/docs-fr-v6/ci/pipeline-triggers.md +238 -0
- package/docs-fr-v6/configuration/config-file.md +813 -0
- package/docs-fr-v6/configuration/formats.md +150 -0
- package/docs-fr-v6/configuration/monorepo.md +357 -0
- package/docs-fr-v6/installation.md +56 -0
- package/docs-fr-v6/introduction.md +54 -0
- package/docs-fr-v6/quickstart.md +63 -0
- package/docs-fr-v6/reference/api.md +106 -0
- package/docs-fr-v6/reference/cli.md +356 -0
- package/docs-fr-v6/reference/conventional-commits.md +88 -0
- package/docs-fr-v6/reference/errors.md +378 -0
- package/docs-fr-v6/verifying-releases.md +97 -0
- package/docs-v0/ci/github-actions.md +77 -0
- package/docs-v0/ci/gitlab-ci.md +59 -0
- package/docs-v0/configuration/config-file.md +97 -0
- package/docs-v0/configuration/formats.md +86 -0
- package/docs-v0/configuration/monorepo.md +59 -0
- package/docs-v0/installation.md +48 -0
- package/docs-v0/introduction.md +34 -0
- package/docs-v0/legal/telemetry.md +63 -0
- package/docs-v0/quickstart.md +58 -0
- package/docs-v0/reference/cli.md +95 -0
- package/docs-v0/reference/conventional-commits.md +68 -0
- package/docs-v1/ci/github-actions.md +76 -0
- package/docs-v1/ci/gitlab-ci.md +58 -0
- package/docs-v1/configuration/config-file.md +515 -0
- package/docs-v1/configuration/formats.md +115 -0
- package/docs-v1/configuration/monorepo.md +246 -0
- package/docs-v1/installation.md +48 -0
- package/docs-v1/introduction.md +39 -0
- package/docs-v1/legal/telemetry.md +63 -0
- package/docs-v1/quickstart.md +62 -0
- package/docs-v1/reference/cli.md +128 -0
- package/docs-v1/reference/conventional-commits.md +67 -0
- package/docs-v2/ci/github-actions.md +117 -0
- package/docs-v2/ci/gitlab-ci.md +90 -0
- package/docs-v2/ci/pipeline-triggers.md +263 -0
- package/docs-v2/configuration/config-file.md +806 -0
- package/docs-v2/configuration/formats.md +98 -0
- package/docs-v2/configuration/monorepo.md +324 -0
- package/docs-v2/installation.md +48 -0
- package/docs-v2/introduction.md +40 -0
- package/docs-v2/legal/telemetry.md +66 -0
- package/docs-v2/quickstart.md +63 -0
- package/docs-v2/reference/cli.md +130 -0
- package/docs-v2/reference/conventional-commits.md +67 -0
- package/docs-v2/reference/errors.md +500 -0
- package/docs-v2/self-hosting.md +101 -0
- package/docs-v3/ci/github-actions.md +117 -0
- package/docs-v3/ci/gitlab-ci.md +90 -0
- package/docs-v3/ci/pipeline-triggers.md +263 -0
- package/docs-v3/configuration/config-file.md +806 -0
- package/docs-v3/configuration/formats.md +99 -0
- package/docs-v3/configuration/monorepo.md +324 -0
- package/docs-v3/installation.md +48 -0
- package/docs-v3/introduction.md +40 -0
- package/docs-v3/legal/telemetry.md +66 -0
- package/docs-v3/quickstart.md +66 -0
- package/docs-v3/reference/cli.md +161 -0
- package/docs-v3/reference/conventional-commits.md +67 -0
- package/docs-v3/reference/errors.md +502 -0
- package/docs-v3/self-hosting.md +137 -0
- package/docs-v4/ci/github-actions.md +117 -0
- package/docs-v4/ci/gitlab-ci.md +90 -0
- package/docs-v4/ci/pipeline-triggers.md +263 -0
- package/docs-v4/configuration/config-file.md +850 -0
- package/docs-v4/configuration/formats.md +182 -0
- package/docs-v4/configuration/monorepo.md +324 -0
- package/docs-v4/installation.md +48 -0
- package/docs-v4/introduction.md +56 -0
- package/docs-v4/legal/telemetry.md +65 -0
- package/docs-v4/quickstart.md +66 -0
- package/docs-v4/reference/cli.md +161 -0
- package/docs-v4/reference/conventional-commits.md +67 -0
- package/docs-v4/reference/errors.md +502 -0
- package/docs-v4/self-hosting.md +137 -0
- package/docs-v5/ci/github-actions.md +120 -0
- package/docs-v5/ci/gitlab-ci.md +90 -0
- package/docs-v5/ci/hosted-bot.md +82 -0
- package/docs-v5/ci/pipeline-triggers.md +287 -0
- package/docs-v5/configuration/config-file.md +1133 -0
- package/docs-v5/configuration/formats.md +206 -0
- package/docs-v5/configuration/monorepo.md +390 -0
- package/docs-v5/installation.md +56 -0
- package/docs-v5/introduction.md +56 -0
- package/docs-v5/legal/telemetry.md +26 -0
- package/docs-v5/quickstart.md +66 -0
- package/docs-v5/reference/api.md +106 -0
- package/docs-v5/reference/cli.md +431 -0
- package/docs-v5/reference/conventional-commits.md +88 -0
- package/docs-v5/reference/errors.md +508 -0
- package/docs-v5/verifying-releases.md +97 -0
- package/docs-v6/ci/github-actions.md +120 -0
- package/docs-v6/ci/gitlab-ci.md +90 -0
- package/docs-v6/ci/hosted-bot.md +82 -0
- package/docs-v6/ci/pipeline-triggers.md +287 -0
- package/docs-v6/configuration/config-file.md +1134 -0
- package/docs-v6/configuration/formats.md +206 -0
- package/docs-v6/configuration/monorepo.md +390 -0
- package/docs-v6/installation.md +56 -0
- package/docs-v6/introduction.md +56 -0
- package/docs-v6/quickstart.md +66 -0
- package/docs-v6/reference/api.md +106 -0
- package/docs-v6/reference/cli.md +431 -0
- package/docs-v6/reference/conventional-commits.md +88 -0
- package/docs-v6/reference/errors.md +508 -0
- package/docs-v6/verifying-releases.md +97 -0
- package/package.json +17 -0
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Codes d'erreur
|
|
3
|
+
description: "R\u00e9f\u00e9rence des codes d'erreur FerrFlow avec causes et solutions."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Quand FerrFlow rencontre une erreur, il affiche un code comme `error[E2001]` avec un lien vers cette page. Utilisez le code pour trouver la cause et la solution.
|
|
7
|
+
|
|
8
|
+
## Erreurs de configuration
|
|
9
|
+
|
|
10
|
+
### E1001 : Fichier de config introuvable
|
|
11
|
+
|
|
12
|
+
<span id="e1001"></span>
|
|
13
|
+
|
|
14
|
+
Le fichier de config indiqu\u00e9 via `--config` n'existe pas.
|
|
15
|
+
|
|
16
|
+
<aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>Lancez <code>ferrflow init</code> pour cr\u00e9er un fichier de config, ou v\u00e9rifiez le chemin.</p>
|
|
17
|
+
</div></aside>
|
|
18
|
+
|
|
19
|
+
### E1002 : \u00c9chec du parsing ferrflow.json
|
|
20
|
+
|
|
21
|
+
<span id="e1002"></span>
|
|
22
|
+
|
|
23
|
+
Le fichier `ferrflow.json` contient du JSON invalide.
|
|
24
|
+
|
|
25
|
+
### E1003 : \u00c9chec du parsing ferrflow.json5
|
|
26
|
+
|
|
27
|
+
<span id="e1003"></span>
|
|
28
|
+
|
|
29
|
+
Le fichier `ferrflow.json5` contient du JSON5 invalide.
|
|
30
|
+
|
|
31
|
+
### E1004 : \u00c9chec du parsing ferrflow.toml
|
|
32
|
+
|
|
33
|
+
<span id="e1004"></span>
|
|
34
|
+
|
|
35
|
+
Le fichier `ferrflow.toml` contient du TOML invalide.
|
|
36
|
+
|
|
37
|
+
### E1005 : Erreur de s\u00e9rialisation TOML
|
|
38
|
+
|
|
39
|
+
<span id="e1005"></span>
|
|
40
|
+
|
|
41
|
+
Erreur interne lors de l'\u00e9criture TOML.
|
|
42
|
+
|
|
43
|
+
### E1006 : \u00c9chec du parsing .ferrflow
|
|
44
|
+
|
|
45
|
+
<span id="e1006"></span>
|
|
46
|
+
|
|
47
|
+
Le fichier `.ferrflow` contient du JSON invalide.
|
|
48
|
+
|
|
49
|
+
### E1007 : Erreur de s\u00e9rialisation .ferrflow
|
|
50
|
+
|
|
51
|
+
<span id="e1007"></span>
|
|
52
|
+
|
|
53
|
+
Erreur interne lors de l'\u00e9criture du dotfile.
|
|
54
|
+
|
|
55
|
+
### E1008 : R\u00e9solution de chemin impossible
|
|
56
|
+
|
|
57
|
+
<span id="e1008"></span>
|
|
58
|
+
|
|
59
|
+
Un chemin dans la config n'a pas pu \u00eatre r\u00e9solu en chemin absolu.
|
|
60
|
+
|
|
61
|
+
### E1009 : \u00c9criture du loader temporaire impossible
|
|
62
|
+
|
|
63
|
+
<span id="e1009"></span>
|
|
64
|
+
|
|
65
|
+
Impossible d'\u00e9crire le loader JS/TS temporaire.
|
|
66
|
+
|
|
67
|
+
### E1010 : Impossible d'ex\u00e9cuter tsx
|
|
68
|
+
|
|
69
|
+
<span id="e1010"></span>
|
|
70
|
+
|
|
71
|
+
Le runtime `tsx` est introuvable pour les configs `.ts`.
|
|
72
|
+
|
|
73
|
+
<aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>Installez tsx : <code>npm install -g tsx</code>, ou utilisez un format JSON/TOML.</p>
|
|
74
|
+
</div></aside>
|
|
75
|
+
|
|
76
|
+
### E1011 : Impossible d'ex\u00e9cuter node
|
|
77
|
+
|
|
78
|
+
<span id="e1011"></span>
|
|
79
|
+
|
|
80
|
+
Le runtime `node` est introuvable pour les configs `.js`.
|
|
81
|
+
|
|
82
|
+
<aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>Installez Node.js ou utilisez un format JSON/TOML.</p>
|
|
83
|
+
</div></aside>
|
|
84
|
+
|
|
85
|
+
### E1012 : \u00c9valuation de la config \u00e9chou\u00e9e
|
|
86
|
+
|
|
87
|
+
<span id="e1012"></span>
|
|
88
|
+
|
|
89
|
+
Le fichier JS/TS a lev\u00e9 une erreur lors de l'\u00e9valuation.
|
|
90
|
+
|
|
91
|
+
### E1013 : Sortie de config invalide
|
|
92
|
+
|
|
93
|
+
<span id="e1013"></span>
|
|
94
|
+
|
|
95
|
+
Le fichier JS/TS a produit une sortie non UTF-8.
|
|
96
|
+
|
|
97
|
+
### E1014 : JSON invalide depuis la config
|
|
98
|
+
|
|
99
|
+
<span id="e1014"></span>
|
|
100
|
+
|
|
101
|
+
Le fichier JS/TS n'a pas produit de JSON valide.
|
|
102
|
+
|
|
103
|
+
### E1015 : Lecture du fichier impossible
|
|
104
|
+
|
|
105
|
+
<span id="e1015"></span>
|
|
106
|
+
|
|
107
|
+
Le fichier de config existe mais ne peut pas \u00eatre lu.
|
|
108
|
+
|
|
109
|
+
### E1016 : Plusieurs fichiers de config
|
|
110
|
+
|
|
111
|
+
<span id="e1016"></span>
|
|
112
|
+
|
|
113
|
+
Plusieurs fichiers de config trouv\u00e9s dans le r\u00e9pertoire.
|
|
114
|
+
|
|
115
|
+
<aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>Gardez un seul fichier de config.</p>
|
|
116
|
+
</div></aside>
|
|
117
|
+
|
|
118
|
+
### E1017 : Fichier d\u00e9j\u00e0 existant
|
|
119
|
+
|
|
120
|
+
<span id="e1017"></span>
|
|
121
|
+
|
|
122
|
+
`ferrflow init` lanc\u00e9 alors qu'un fichier de config existe d\u00e9j\u00e0.
|
|
123
|
+
|
|
124
|
+
## Erreurs de validation
|
|
125
|
+
|
|
126
|
+
### E1100 : Spec de repo invalide
|
|
127
|
+
|
|
128
|
+
<span id="e1100"></span>
|
|
129
|
+
|
|
130
|
+
L'argument `--repo` ne correspond pas au format attendu `owner/repo`.
|
|
131
|
+
|
|
132
|
+
### E1101 : Erreur API GitHub
|
|
133
|
+
|
|
134
|
+
<span id="e1101"></span>
|
|
135
|
+
|
|
136
|
+
L'API GitHub a retourn\u00e9 une erreur lors de la validation distante.
|
|
137
|
+
|
|
138
|
+
### E1102 : Erreur API GitLab
|
|
139
|
+
|
|
140
|
+
<span id="e1102"></span>
|
|
141
|
+
|
|
142
|
+
L'API GitLab a retourn\u00e9 une erreur lors de la validation distante.
|
|
143
|
+
|
|
144
|
+
### E1103 : UTF-8 invalide
|
|
145
|
+
|
|
146
|
+
<span id="e1103"></span>
|
|
147
|
+
|
|
148
|
+
Le fichier de config distant contient un encodage UTF-8 invalide.
|
|
149
|
+
|
|
150
|
+
### E1104 : Parsing de la config distante \u00e9chou\u00e9
|
|
151
|
+
|
|
152
|
+
<span id="e1104"></span>
|
|
153
|
+
|
|
154
|
+
Le fichier de config distant n'a pas pu \u00eatre pars\u00e9.
|
|
155
|
+
|
|
156
|
+
### E1105 : Fichier de config distant introuvable
|
|
157
|
+
|
|
158
|
+
<span id="e1105"></span>
|
|
159
|
+
|
|
160
|
+
Le chemin sp\u00e9cifi\u00e9 n'existe pas dans le d\u00e9p\u00f4t distant.
|
|
161
|
+
|
|
162
|
+
### E1106 : Aucun fichier de config trouv\u00e9
|
|
163
|
+
|
|
164
|
+
<span id="e1106"></span>
|
|
165
|
+
|
|
166
|
+
Aucun fichier de config FerrFlow dans le d\u00e9p\u00f4t distant.
|
|
167
|
+
|
|
168
|
+
### E1107 : --ref n\u00e9cessite --repo
|
|
169
|
+
|
|
170
|
+
<span id="e1107"></span>
|
|
171
|
+
|
|
172
|
+
Le flag `--ref` a \u00e9t\u00e9 utilis\u00e9 sans `--repo`.
|
|
173
|
+
|
|
174
|
+
## Op\u00e9rations Git
|
|
175
|
+
|
|
176
|
+
### E2001 : Pas un d\u00e9p\u00f4t git
|
|
177
|
+
|
|
178
|
+
<span id="e2001"></span>
|
|
179
|
+
|
|
180
|
+
Le r\u00e9pertoire courant n'est pas dans un d\u00e9p\u00f4t git.
|
|
181
|
+
|
|
182
|
+
### E2002 : D\u00e9p\u00f4t bare non support\u00e9
|
|
183
|
+
|
|
184
|
+
<span id="e2002"></span>
|
|
185
|
+
|
|
186
|
+
FerrFlow ne supporte pas les d\u00e9p\u00f4ts git bare.
|
|
187
|
+
|
|
188
|
+
### E2003 : Tag existant
|
|
189
|
+
|
|
190
|
+
<span id="e2003"></span>
|
|
191
|
+
|
|
192
|
+
Le tag que FerrFlow veut cr\u00e9er existe d\u00e9j\u00e0.
|
|
193
|
+
|
|
194
|
+
<aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>Supprimez le tag existant ou utilisez <code>--force</code>.</p>
|
|
195
|
+
</div></aside>
|
|
196
|
+
|
|
197
|
+
### E2004 : Push de branche \u00e9chou\u00e9
|
|
198
|
+
|
|
199
|
+
<span id="e2004"></span>
|
|
200
|
+
|
|
201
|
+
Impossible de push la branche de release.
|
|
202
|
+
|
|
203
|
+
<aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>V\u00e9rifiez vos droits de push et les r\u00e8gles de protection.</p>
|
|
204
|
+
</div></aside>
|
|
205
|
+
|
|
206
|
+
### E2005 : Push rejet\u00e9
|
|
207
|
+
|
|
208
|
+
<span id="e2005"></span>
|
|
209
|
+
|
|
210
|
+
Le remote a rejet\u00e9 le push.
|
|
211
|
+
|
|
212
|
+
<aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>Pullez les derniers changements et r\u00e9essayez.</p>
|
|
213
|
+
</div></aside>
|
|
214
|
+
|
|
215
|
+
### E2006 : Push des tags \u00e9chou\u00e9
|
|
216
|
+
|
|
217
|
+
<span id="e2006"></span>
|
|
218
|
+
|
|
219
|
+
Impossible de push les tags vers le remote.
|
|
220
|
+
|
|
221
|
+
### E2007 : Push des tags flottants \u00e9chou\u00e9
|
|
222
|
+
|
|
223
|
+
<span id="e2007"></span>
|
|
224
|
+
|
|
225
|
+
Impossible de force-push les tags flottants.
|
|
226
|
+
|
|
227
|
+
### E2008 : Remote introuvable
|
|
228
|
+
|
|
229
|
+
<span id="e2008"></span>
|
|
230
|
+
|
|
231
|
+
Le remote git configur\u00e9 n'existe pas.
|
|
232
|
+
|
|
233
|
+
<aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>V\u00e9rifiez <code>git remote -v</code> et le champ <code>remote</code> de votre config.</p>
|
|
234
|
+
</div></aside>
|
|
235
|
+
|
|
236
|
+
### E2009 : V\u00e9rification post-push \u00e9chou\u00e9e
|
|
237
|
+
|
|
238
|
+
<span id="e2009"></span>
|
|
239
|
+
|
|
240
|
+
Le commit de release n'a pas pu \u00eatre v\u00e9rifi\u00e9 sur la branche distante.
|
|
241
|
+
|
|
242
|
+
### E2010 : Branche distante introuvable
|
|
243
|
+
|
|
244
|
+
<span id="e2010"></span>
|
|
245
|
+
|
|
246
|
+
La branche distante n'a pas \u00e9t\u00e9 trouv\u00e9e apr\u00e8s le push.
|
|
247
|
+
|
|
248
|
+
## API GitHub
|
|
249
|
+
|
|
250
|
+
### E3001 : Cr\u00e9ation de release \u00e9chou\u00e9e
|
|
251
|
+
|
|
252
|
+
<span id="e3001"></span>
|
|
253
|
+
|
|
254
|
+
L'API GitHub Releases a retourn\u00e9 une erreur.
|
|
255
|
+
|
|
256
|
+
<aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>V\u00e9rifiez que <code>GITHUB_TOKEN</code> a la permission <code>contents: write</code>.</p>
|
|
257
|
+
</div></aside>
|
|
258
|
+
|
|
259
|
+
### E3002 to E3010 : Erreurs API GitHub
|
|
260
|
+
|
|
261
|
+
<span id="e3002"></span>
|
|
262
|
+
|
|
263
|
+
Erreurs lors d'op\u00e9rations sur l'API GitHub (releases, PR, auto-merge, GraphQL).
|
|
264
|
+
|
|
265
|
+
## API GitLab
|
|
266
|
+
|
|
267
|
+
### E3101 : Cr\u00e9ation de release \u00e9chou\u00e9e
|
|
268
|
+
|
|
269
|
+
<span id="e3101"></span>
|
|
270
|
+
|
|
271
|
+
L'API GitLab Releases a retourn\u00e9 une erreur.
|
|
272
|
+
|
|
273
|
+
<aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>V\u00e9rifiez que le token CI a les acc\u00e8s API n\u00e9cessaires.</p>
|
|
274
|
+
</div></aside>
|
|
275
|
+
|
|
276
|
+
### E3102 to E3105 : Erreurs API GitLab
|
|
277
|
+
|
|
278
|
+
<span id="e3102"></span>
|
|
279
|
+
|
|
280
|
+
Erreurs lors d'op\u00e9rations sur l'API GitLab (releases, MR, merge).
|
|
281
|
+
|
|
282
|
+
## Fichiers de version
|
|
283
|
+
|
|
284
|
+
Les erreurs E4xxx concernent la lecture, l'\u00e9criture et le parsing des fichiers de version :
|
|
285
|
+
|
|
286
|
+
| Plage | Format |
|
|
287
|
+
| -------------- | --------------------------------- |
|
|
288
|
+
| E4101 to E4105 | TOML (Cargo.toml, pyproject.toml) |
|
|
289
|
+
| E4201 to E4205 | JSON (package.json) |
|
|
290
|
+
| E4301 to E4304 | Helm / YAML (Chart.yaml) |
|
|
291
|
+
| E4401 to E4413 | XML / CSProj |
|
|
292
|
+
| E4501 to E4504 | Gradle |
|
|
293
|
+
| E4601 to E4603 | Go mod |
|
|
294
|
+
| E4701 to E4704 | Texte (VERSION, VERSION.txt) |
|
|
295
|
+
|
|
296
|
+
Erreurs courantes : lecture impossible, syntaxe invalide, champ `version` manquant, \u00e9criture impossible, UTF-8 invalide.
|
|
297
|
+
|
|
298
|
+
## Pr\u00e9-release
|
|
299
|
+
|
|
300
|
+
### E5001 : Nom de channel vide
|
|
301
|
+
|
|
302
|
+
<span id="e5001"></span>
|
|
303
|
+
|
|
304
|
+
Le nom du channel de pr\u00e9-release est vide.
|
|
305
|
+
|
|
306
|
+
<aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>Sp\u00e9cifiez un nom : <code>--channel beta</code></p>
|
|
307
|
+
</div></aside>
|
|
308
|
+
|
|
309
|
+
### E5002 : Nom de channel invalide
|
|
310
|
+
|
|
311
|
+
<span id="e5002"></span>
|
|
312
|
+
|
|
313
|
+
Seuls les alphanum\u00e9riques et tirets sont accept\u00e9s.
|
|
314
|
+
|
|
315
|
+
## Versioning
|
|
316
|
+
|
|
317
|
+
### E5010 : Semver invalide
|
|
318
|
+
|
|
319
|
+
<span id="e5010"></span>
|
|
320
|
+
|
|
321
|
+
La version actuelle n'est pas un semver valide.
|
|
322
|
+
|
|
323
|
+
<aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>Format attendu : <code>MAJEUR.MINEUR.PATCH</code>.</p>
|
|
324
|
+
</div></aside>
|
|
325
|
+
|
|
326
|
+
## Hooks
|
|
327
|
+
|
|
328
|
+
### E6001 : Hook \u00e9chou\u00e9
|
|
329
|
+
|
|
330
|
+
<span id="e6001"></span>
|
|
331
|
+
|
|
332
|
+
Un hook a \u00e9chou\u00e9 avec `on_failure: "abort"`.
|
|
333
|
+
|
|
334
|
+
<aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>V\u00e9rifiez la commande du hook, ou mettez <code>on_failure: "continue"</code>.</p>
|
|
335
|
+
</div></aside>
|
|
336
|
+
|
|
337
|
+
## Query
|
|
338
|
+
|
|
339
|
+
### E7001 : Aucun package configur\u00e9
|
|
340
|
+
|
|
341
|
+
<span id="e7001"></span>
|
|
342
|
+
|
|
343
|
+
Aucun package dans le fichier de config.
|
|
344
|
+
|
|
345
|
+
<aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>Lancez <code>ferrflow init</code> ou ajoutez des packages manuellement.</p>
|
|
346
|
+
</div></aside>
|
|
347
|
+
|
|
348
|
+
### E7002 : Package introuvable
|
|
349
|
+
|
|
350
|
+
<span id="e7002"></span>
|
|
351
|
+
|
|
352
|
+
Le nom de package sp\u00e9cifi\u00e9 n'existe pas dans la config.
|
|
353
|
+
|
|
354
|
+
<aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>Lancez <code>ferrflow version</code> pour lister les packages.</p>
|
|
355
|
+
</div></aside>
|
|
356
|
+
|
|
357
|
+
## Monorepo
|
|
358
|
+
|
|
359
|
+
### E8001 : Package introuvable dans la config
|
|
360
|
+
|
|
361
|
+
<span id="e8001"></span>
|
|
362
|
+
|
|
363
|
+
Un package r\u00e9f\u00e9renc\u00e9 pendant la release n'a pas \u00e9t\u00e9 trouv\u00e9.
|
|
364
|
+
|
|
365
|
+
### E8002 : Tag flottant r\u00e9gressif
|
|
366
|
+
|
|
367
|
+
<span id="e8002"></span>
|
|
368
|
+
|
|
369
|
+
Un tag flottant serait d\u00e9plac\u00e9 vers une version plus ancienne.
|
|
370
|
+
|
|
371
|
+
<aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>Utilisez <code>--force</code> pour ignorer la v\u00e9rification.</p>
|
|
372
|
+
</div></aside>
|
|
373
|
+
|
|
374
|
+
### E8003 : Cycle de dépendances
|
|
375
|
+
|
|
376
|
+
<span id="e8003"></span>
|
|
377
|
+
|
|
378
|
+
Deux packages ou plus dépendent l'un de l'autre via `dependsOn`, directement ou transitivement : il n'existe aucun ordre de release possible. Le message nomme la boucle, par exemple `cycle detected: api → web → api`. Supprimez l'une des arêtes `dependsOn` pour la casser. La vérification s'exécute avant toute écriture de version, donc une configuration cyclique ne laisse jamais de release partielle.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Vérifier les releases
|
|
3
|
+
description: Chaque release FerrFlow embarque des signatures Sigstore, un SBOM CycloneDX et une attestation de provenance SLSA. Voici comment les vérifier.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Chaque tarball de release, l'image Docker, l'archive de complétions binaires et le SBOM qui les accompagne sont signés via [Sigstore](https://www.sigstore.dev/) en signature sans clé. Il n'y a aucune clé publique à suivre — l'identité de signature est celle du workload GitHub Actions qui tourne dans `FerrLabs/FerrFlow`, ancrée dans le journal public de transparence [Rekor](https://docs.sigstore.dev/logging/overview/).
|
|
7
|
+
|
|
8
|
+
Disponible depuis la v5.2.
|
|
9
|
+
|
|
10
|
+
## Ce qui est livré par release
|
|
11
|
+
|
|
12
|
+
| Artefact | Sidecars |
|
|
13
|
+
| ---------------------------------- | ---------------------------------- |
|
|
14
|
+
| `ferrflow-linux-x64.tar.gz` | `.sig`, `.crt` |
|
|
15
|
+
| `ferrflow-linux-arm64.tar.gz` | `.sig`, `.crt` |
|
|
16
|
+
| `ferrflow-linux-armv7.tar.gz` | `.sig`, `.crt` |
|
|
17
|
+
| `ferrflow-darwin-x64.tar.gz` | `.sig`, `.crt` |
|
|
18
|
+
| `ferrflow-darwin-arm64.tar.gz` | `.sig`, `.crt` |
|
|
19
|
+
| `ferrflow-windows-x64.zip` | `.sig`, `.crt` |
|
|
20
|
+
| `ferrflow-windows-arm64.zip` | `.sig`, `.crt` |
|
|
21
|
+
| `ferrflow-completions.tar.gz` | `.sig`, `.crt` |
|
|
22
|
+
| `sbom.cdx.json` | `.sig`, `.crt` |
|
|
23
|
+
| `ghcr.io/ferrlabs/ferrflow:vX.Y.Z` | Signature cosign dans GHCR + Rekor |
|
|
24
|
+
|
|
25
|
+
Tous les sidecars sont téléchargeables depuis la page GitHub Release à côté du binaire.
|
|
26
|
+
|
|
27
|
+
> Les releases jusqu'à **v5.47.4** embarquent une paire `.sig` + `.crt` au lieu d'un unique `.bundle`. Vérifiez-les avec `--certificate <fichier>.crt --signature <fichier>.sig` à la place de `--bundle`. Le changement vient de cosign v3, qui a remplacé les sorties signature et certificat séparées par un bundle unique.
|
|
28
|
+
|
|
29
|
+
## Vérifier un tarball
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# installer cosign (une seule fois)
|
|
33
|
+
curl -L https://github.com/sigstore/cosign/releases/latest/download/cosign-linux-amd64 \
|
|
34
|
+
-o /usr/local/bin/cosign && chmod +x /usr/local/bin/cosign
|
|
35
|
+
|
|
36
|
+
# télécharger l'artefact + les sidecars depuis la page de release
|
|
37
|
+
TAG=v5.2.3
|
|
38
|
+
gh release download "$TAG" --repo FerrLabs/FerrFlow \
|
|
39
|
+
-p 'ferrflow-linux-x64.tar.gz*'
|
|
40
|
+
|
|
41
|
+
# vérifier
|
|
42
|
+
cosign verify-blob \
|
|
43
|
+
--bundle ferrflow-linux-x64.tar.gz.bundle \
|
|
44
|
+
--certificate-identity-regexp "https://github.com/FerrLabs/FerrFlow/.*" \
|
|
45
|
+
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
|
|
46
|
+
ferrflow-linux-x64.tar.gz
|
|
47
|
+
# → Verified OK
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Une vérification qui passe signifie :
|
|
51
|
+
|
|
52
|
+
- Les octets du tarball n'ont pas été modifiés depuis que le workflow de release les a signés.
|
|
53
|
+
- L'identité de signature était un workflow exécuté dans `FerrLabs/FerrFlow` déclenché par l'issuer OIDC de GitHub Actions.
|
|
54
|
+
- La signature est inscrite dans le journal public Rekor — cherchez la valeur du `.sig` sur [search.sigstore.dev](https://search.sigstore.dev/).
|
|
55
|
+
|
|
56
|
+
## Vérifier l'image Docker
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
cosign verify ghcr.io/ferrlabs/ferrflow:v5.2.3 \
|
|
60
|
+
--certificate-identity-regexp "https://github.com/FerrLabs/FerrFlow/.*" \
|
|
61
|
+
--certificate-oidc-issuer https://token.actions.githubusercontent.com
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Vérifier le SBOM
|
|
65
|
+
|
|
66
|
+
Le SBOM (`sbom.cdx.json`) est un document [CycloneDX](https://cyclonedx.org/) listant toutes les dépendances transitives du binaire publié. Il est signé de la même façon que les tarballs :
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
cosign verify-blob \
|
|
70
|
+
--bundle sbom.cdx.json.bundle \
|
|
71
|
+
--certificate-identity-regexp "https://github.com/FerrLabs/FerrFlow/.*" \
|
|
72
|
+
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
|
|
73
|
+
sbom.cdx.json
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Injectez le SBOM vérifié dans votre scanner — Grype, Trivy, Snyk, JFrog Xray, Anchore, n'importe quoi qui parle CycloneDX.
|
|
77
|
+
|
|
78
|
+
## Attestation de provenance SLSA
|
|
79
|
+
|
|
80
|
+
En plus des signatures Sigstore, chaque release embarque aussi une [attestation de provenance SLSA](https://slsa.dev/) générée via [`actions/attest-build-provenance`](https://github.com/actions/attest-build-provenance). Elle enregistre le run du workflow, le SHA du commit source et les inputs de build.
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
gh attestation verify ferrflow-linux-x64.tar.gz --repo FerrLabs/FerrFlow
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Ce qui n'est pas signé
|
|
87
|
+
|
|
88
|
+
Les tarballs sources de `git archive` (les actifs « Source code (zip) » / « Source code (tar.gz) » générés automatiquement sur la page GitHub Release) viennent de GitHub, pas du workflow de release, et n'ont pas de sidecar de signature. Si vous avez besoin d'une attestation sur la source, utilisez plutôt `gh attestation verify` contre le bundle de provenance.
|
|
89
|
+
|
|
90
|
+
## Pourquoi c'est important
|
|
91
|
+
|
|
92
|
+
- **Attaques de chaîne d'approvisionnement.** Un attaquant qui compromet un CDN, un miroir ou pousse un package typosquat ne peut pas forger la signature — l'identité de signature est ancrée au flow OIDC de GitHub Actions.
|
|
93
|
+
- **Conformité.** Les clients SOC 2 / ISO 27001 peuvent attester que le binaire qu'ils ont récupéré est celui que leur auditeur a approuvé.
|
|
94
|
+
- **Aucune gestion de clé.** Personne chez FerrLabs n'a de clé privée de signature à perdre ou faire tourner. Le workflow prouve son identité au moment de la signature.
|
|
95
|
+
|
|
96
|
+
<aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>Si vous déployez FerrFlow dans un environnement régulé, pinnez à la fois la version <strong>et</strong> la paire <code>.sig</code>/<code>.crt</code> dans votre étape de provisioning. Une compromission future du workflow ne peut pas antidater une signature déjà présente dans Rekor.</p>
|
|
97
|
+
</div></aside>
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: GitHub Actions
|
|
3
|
+
description: Lancer les releases FerrFlow automatiquement avec GitHub Actions.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Utiliser l'action officielle
|
|
7
|
+
|
|
8
|
+
La manière la plus simple d'utiliser FerrFlow dans GitHub Actions est l'action `FerrLabs/ferrflow@v5`. Elle installe le binaire et exécute `ferrflow release` automatiquement.
|
|
9
|
+
|
|
10
|
+
```yaml
|
|
11
|
+
name: Release
|
|
12
|
+
|
|
13
|
+
on:
|
|
14
|
+
push:
|
|
15
|
+
branches: [main]
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
release:
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
permissions:
|
|
21
|
+
contents: write # requis pour pousser les tags et créer les releases
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v6
|
|
24
|
+
with:
|
|
25
|
+
fetch-depth: 0 # historique complet nécessaire pour le scan des commits
|
|
26
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
27
|
+
|
|
28
|
+
- uses: FerrLabs/ferrflow@v5
|
|
29
|
+
env:
|
|
30
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
<aside class="ferr-aside ferr-aside--warning"><div class="ferr-aside__body"><p><code>fetch-depth: 0</code> est requis. Sans cela, FerrFlow ne peut pas trouver les tags précédents et traitera chaque commit comme nouveau.</p>
|
|
34
|
+
</div></aside>
|
|
35
|
+
|
|
36
|
+
## Permissions
|
|
37
|
+
|
|
38
|
+
FerrFlow a besoin de `contents: write` pour :
|
|
39
|
+
|
|
40
|
+
- Pousser les commits de bump de version
|
|
41
|
+
- Créer et pousser les tags git
|
|
42
|
+
- Créer les GitHub Releases
|
|
43
|
+
|
|
44
|
+
Si votre repository a des règles de protection de branche, créez un token dédié avec les permissions nécessaires et passez-le via `FERRFLOW_TOKEN` ou configurez l'input `token` de l'action.
|
|
45
|
+
|
|
46
|
+
<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>
|
|
47
|
+
</div></aside>
|
|
48
|
+
|
|
49
|
+
## Accéder à la sortie de la release
|
|
50
|
+
|
|
51
|
+
L'action expose la nouvelle version en output que vous pouvez utiliser dans les étapes suivantes :
|
|
52
|
+
|
|
53
|
+
```yaml
|
|
54
|
+
- uses: FerrLabs/ferrflow@v5
|
|
55
|
+
id: ferrflow
|
|
56
|
+
env:
|
|
57
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
58
|
+
|
|
59
|
+
- name: Build Docker image
|
|
60
|
+
if: steps.ferrflow.outputs.version != ''
|
|
61
|
+
run: |
|
|
62
|
+
docker build -t myimage:${{ steps.ferrflow.outputs.version }} .
|
|
63
|
+
docker push myimage:${{ steps.ferrflow.outputs.version }}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Skip CI sur les commits de release
|
|
67
|
+
|
|
68
|
+
FerrFlow ajoute `[skip ci]` dans le message des commits de version par défaut pour éviter les boucles infinies. Aucune configuration supplémentaire nécessaire.
|
|
69
|
+
|
|
70
|
+
## Commentaires de preview sur les PR
|
|
71
|
+
|
|
72
|
+
FerrFlow peut poster un commentaire sur chaque pull request montrant quelles versions seront bump\u00e9es au merge. Le commentaire est mis \u00e0 jour automatiquement \u00e0 chaque push.
|
|
73
|
+
|
|
74
|
+
```yaml title=".github/workflows/preview.yml"
|
|
75
|
+
name: FerrFlow Preview
|
|
76
|
+
|
|
77
|
+
on:
|
|
78
|
+
pull_request:
|
|
79
|
+
|
|
80
|
+
permissions:
|
|
81
|
+
contents: read
|
|
82
|
+
pull-requests: write
|
|
83
|
+
|
|
84
|
+
jobs:
|
|
85
|
+
preview:
|
|
86
|
+
runs-on: ubuntu-latest
|
|
87
|
+
steps:
|
|
88
|
+
- uses: actions/checkout@v6
|
|
89
|
+
with:
|
|
90
|
+
fetch-depth: 0
|
|
91
|
+
- uses: FerrLabs/ferrflow@v5
|
|
92
|
+
with:
|
|
93
|
+
mode: preview
|
|
94
|
+
env:
|
|
95
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Si aucun changement publiable n'est d\u00e9tect\u00e9, le commentaire l'indique.
|
|
99
|
+
|
|
100
|
+
## Exemple monorepo
|
|
101
|
+
|
|
102
|
+
Dans un monorepo, FerrFlow publie chaque package modifi\u00e9 en une seule ex\u00e9cution :
|
|
103
|
+
|
|
104
|
+
```yaml
|
|
105
|
+
- uses: FerrLabs/ferrflow@v5
|
|
106
|
+
env:
|
|
107
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
108
|
+
# Cr\u00e9e api@v1.3.0 et site@v0.5.1 en une seule \u00e9tape si les deux ont chang\u00e9
|
|
109
|
+
```
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: GitLab CI
|
|
3
|
+
description: Lancer les releases FerrFlow automatiquement avec GitLab CI.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Utiliser l'image Docker
|
|
7
|
+
|
|
8
|
+
L'image Docker officielle FerrFlow embarque le binaire et peut être utilisée directement comme image de job GitLab CI.
|
|
9
|
+
|
|
10
|
+
```yaml
|
|
11
|
+
release:
|
|
12
|
+
image: ghcr.io/ferrlabs/ferrflow:latest
|
|
13
|
+
stage: release
|
|
14
|
+
script:
|
|
15
|
+
- ferrflow release
|
|
16
|
+
variables:
|
|
17
|
+
GITLAB_TOKEN: $CI_JOB_TOKEN
|
|
18
|
+
rules:
|
|
19
|
+
- if: $CI_COMMIT_BRANCH == "main"
|
|
20
|
+
when: on_success
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
<aside class="ferr-aside ferr-aside--warning"><div class="ferr-aside__body"><p>Assurez-vous que votre runner CI clone avec l'historique complet. Ajoutez <code>GIT_DEPTH: 0</code> aux variables du job pour désactiver le clonage superficiel.</p>
|
|
24
|
+
</div></aside>
|
|
25
|
+
|
|
26
|
+
## Historique complet
|
|
27
|
+
|
|
28
|
+
```yaml
|
|
29
|
+
release:
|
|
30
|
+
image: ghcr.io/ferrlabs/ferrflow:latest
|
|
31
|
+
variables:
|
|
32
|
+
GIT_DEPTH: 0 # historique complet — requis pour le scan des tags
|
|
33
|
+
GITLAB_TOKEN: $CI_JOB_TOKEN
|
|
34
|
+
script:
|
|
35
|
+
- ferrflow release
|
|
36
|
+
rules:
|
|
37
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Utiliser un deploy token
|
|
41
|
+
|
|
42
|
+
Si `CI_JOB_TOKEN` n'a pas les permissions pour pousser des tags, créez un deploy token de projet avec l'accès `write_repository` et stockez-le comme variable CI :
|
|
43
|
+
|
|
44
|
+
```yaml
|
|
45
|
+
release:
|
|
46
|
+
image: ghcr.io/ferrlabs/ferrflow:latest
|
|
47
|
+
variables:
|
|
48
|
+
GIT_DEPTH: 0
|
|
49
|
+
GITLAB_TOKEN: $FERRFLOW_DEPLOY_TOKEN # variable CI avec accès write_repository
|
|
50
|
+
script:
|
|
51
|
+
- ferrflow release
|
|
52
|
+
rules:
|
|
53
|
+
- if: $CI_COMMIT_BRANCH == "main"
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Commentaires de preview sur les MR
|
|
57
|
+
|
|
58
|
+
FerrFlow peut poster un commentaire sur chaque merge request montrant quelles versions seront bump\u00e9es au merge. Le commentaire est mis \u00e0 jour automatiquement \u00e0 chaque push.
|
|
59
|
+
|
|
60
|
+
```yaml title=".gitlab-ci.yml"
|
|
61
|
+
ferrflow-preview:
|
|
62
|
+
image: ghcr.io/ferrlabs/ferrflow:latest
|
|
63
|
+
stage: test
|
|
64
|
+
variables:
|
|
65
|
+
GIT_DEPTH: 0
|
|
66
|
+
GITLAB_TOKEN: $CI_JOB_TOKEN
|
|
67
|
+
script:
|
|
68
|
+
- ferrflow check --comment
|
|
69
|
+
rules:
|
|
70
|
+
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Si aucun changement publiable n'est d\u00e9tect\u00e9, le commentaire l'indique.
|
|
74
|
+
|
|
75
|
+
## GitLab Releases
|
|
76
|
+
|
|
77
|
+
Lorsque `GITLAB_TOKEN` est d\u00e9fini, FerrFlow cr\u00e9e une GitLab Release avec le changelog g\u00e9n\u00e9r\u00e9 comme notes de release, de la m\u00eame mani\u00e8re que l'int\u00e9gration GitHub.
|