@simplysf/simply-gitlab 0.4.0 → 0.6.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/README.md +110 -25
- package/docs/getting-started.md +86 -0
- package/docs/guides/baselines.md +186 -0
- package/docs/guides/credentials.md +100 -0
- package/docs/guides/scripting.md +122 -0
- package/docs/guides/write-safety.md +122 -0
- package/docs/schema/baseline-v1.json +124 -0
- package/lib/commands/gitlab/project/create.d.ts +25 -0
- package/lib/commands/gitlab/project/create.js +111 -0
- package/lib/commands/gitlab/project/create.js.map +1 -0
- package/oclif.manifest.json +187 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -13,6 +13,12 @@ human-readable by default and raw JSON with `--json`, and every command that cha
|
|
|
13
13
|
The same capabilities are available to AI agents through
|
|
14
14
|
[`@simplysf/simply-gitlab-mcp`](https://github.com/SimplySF/simply-gitlab/tree/main/packages/simply-gitlab-mcp).
|
|
15
15
|
|
|
16
|
+
## Documentation
|
|
17
|
+
|
|
18
|
+
Guides and the full command reference: **https://simplysf.github.io/simply-cli/gitlab/**
|
|
19
|
+
|
|
20
|
+
The guides also ship inside this package, under [`docs/`](docs).
|
|
21
|
+
|
|
16
22
|
## Install
|
|
17
23
|
|
|
18
24
|
`@simplysf/simply-gitlab` is a plugin of the `simply` CLI, not a command of its own. Install the host; this
|
|
@@ -144,6 +150,7 @@ exitCode, status?, body?}}` — and nothing to stdout. Exit codes are identical
|
|
|
144
150
|
- [`simply gitlab mr list`](#simply-gitlab-mr-list)
|
|
145
151
|
- [`simply gitlab mr update`](#simply-gitlab-mr-update)
|
|
146
152
|
- [`simply gitlab mr view`](#simply-gitlab-mr-view)
|
|
153
|
+
- [`simply gitlab project create`](#simply-gitlab-project-create)
|
|
147
154
|
- [`simply gitlab project list`](#simply-gitlab-project-list)
|
|
148
155
|
- [`simply gitlab project view`](#simply-gitlab-project-view)
|
|
149
156
|
- [`simply gitlab release list`](#simply-gitlab-release-list)
|
|
@@ -191,7 +198,7 @@ FLAG DESCRIPTIONS
|
|
|
191
198
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
192
199
|
```
|
|
193
200
|
|
|
194
|
-
_See code: [lib/commands/gitlab/branch/create.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
201
|
+
_See code: [lib/commands/gitlab/branch/create.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/branch/create.js)_
|
|
195
202
|
|
|
196
203
|
## `simply gitlab branch list`
|
|
197
204
|
|
|
@@ -234,7 +241,7 @@ FLAG DESCRIPTIONS
|
|
|
234
241
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
235
242
|
```
|
|
236
243
|
|
|
237
|
-
_See code: [lib/commands/gitlab/branch/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
244
|
+
_See code: [lib/commands/gitlab/branch/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/branch/list.js)_
|
|
238
245
|
|
|
239
246
|
## `simply gitlab ci environment list`
|
|
240
247
|
|
|
@@ -280,7 +287,7 @@ FLAG DESCRIPTIONS
|
|
|
280
287
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
281
288
|
```
|
|
282
289
|
|
|
283
|
-
_See code: [lib/commands/gitlab/ci/environment/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
290
|
+
_See code: [lib/commands/gitlab/ci/environment/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/ci/environment/list.js)_
|
|
284
291
|
|
|
285
292
|
## `simply gitlab ci job list`
|
|
286
293
|
|
|
@@ -324,7 +331,7 @@ FLAG DESCRIPTIONS
|
|
|
324
331
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
325
332
|
```
|
|
326
333
|
|
|
327
|
-
_See code: [lib/commands/gitlab/ci/job/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
334
|
+
_See code: [lib/commands/gitlab/ci/job/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/ci/job/list.js)_
|
|
328
335
|
|
|
329
336
|
## `simply gitlab ci job log`
|
|
330
337
|
|
|
@@ -369,7 +376,7 @@ FLAG DESCRIPTIONS
|
|
|
369
376
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
370
377
|
```
|
|
371
378
|
|
|
372
|
-
_See code: [lib/commands/gitlab/ci/job/log.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
379
|
+
_See code: [lib/commands/gitlab/ci/job/log.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/ci/job/log.js)_
|
|
373
380
|
|
|
374
381
|
## `simply gitlab ci variable list`
|
|
375
382
|
|
|
@@ -420,7 +427,7 @@ FLAG DESCRIPTIONS
|
|
|
420
427
|
where this output is going.
|
|
421
428
|
```
|
|
422
429
|
|
|
423
|
-
_See code: [lib/commands/gitlab/ci/variable/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
430
|
+
_See code: [lib/commands/gitlab/ci/variable/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/ci/variable/list.js)_
|
|
424
431
|
|
|
425
432
|
## `simply gitlab commit create`
|
|
426
433
|
|
|
@@ -480,7 +487,7 @@ FLAG DESCRIPTIONS
|
|
|
480
487
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
481
488
|
```
|
|
482
489
|
|
|
483
|
-
_See code: [lib/commands/gitlab/commit/create.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
490
|
+
_See code: [lib/commands/gitlab/commit/create.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/commit/create.js)_
|
|
484
491
|
|
|
485
492
|
## `simply gitlab commit diff`
|
|
486
493
|
|
|
@@ -522,7 +529,7 @@ FLAG DESCRIPTIONS
|
|
|
522
529
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
523
530
|
```
|
|
524
531
|
|
|
525
|
-
_See code: [lib/commands/gitlab/commit/diff.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
532
|
+
_See code: [lib/commands/gitlab/commit/diff.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/commit/diff.js)_
|
|
526
533
|
|
|
527
534
|
## `simply gitlab commit list`
|
|
528
535
|
|
|
@@ -573,7 +580,7 @@ FLAG DESCRIPTIONS
|
|
|
573
580
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
574
581
|
```
|
|
575
582
|
|
|
576
|
-
_See code: [lib/commands/gitlab/commit/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
583
|
+
_See code: [lib/commands/gitlab/commit/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/commit/list.js)_
|
|
577
584
|
|
|
578
585
|
## `simply gitlab commit view`
|
|
579
586
|
|
|
@@ -614,7 +621,7 @@ FLAG DESCRIPTIONS
|
|
|
614
621
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
615
622
|
```
|
|
616
623
|
|
|
617
|
-
_See code: [lib/commands/gitlab/commit/view.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
624
|
+
_See code: [lib/commands/gitlab/commit/view.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/commit/view.js)_
|
|
618
625
|
|
|
619
626
|
## `simply gitlab config apply`
|
|
620
627
|
|
|
@@ -681,7 +688,7 @@ FLAG DESCRIPTIONS
|
|
|
681
688
|
the config does not target is an error rather than a silent no-op.
|
|
682
689
|
```
|
|
683
690
|
|
|
684
|
-
_See code: [lib/commands/gitlab/config/apply.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
691
|
+
_See code: [lib/commands/gitlab/config/apply.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/config/apply.js)_
|
|
685
692
|
|
|
686
693
|
## `simply gitlab config export`
|
|
687
694
|
|
|
@@ -732,7 +739,7 @@ FLAG DESCRIPTIONS
|
|
|
732
739
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
733
740
|
```
|
|
734
741
|
|
|
735
|
-
_See code: [lib/commands/gitlab/config/export.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
742
|
+
_See code: [lib/commands/gitlab/config/export.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/config/export.js)_
|
|
736
743
|
|
|
737
744
|
## `simply gitlab config plan`
|
|
738
745
|
|
|
@@ -800,7 +807,7 @@ FLAG DESCRIPTIONS
|
|
|
800
807
|
the config does not target is an error rather than a silent no-op.
|
|
801
808
|
```
|
|
802
809
|
|
|
803
|
-
_See code: [lib/commands/gitlab/config/plan.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
810
|
+
_See code: [lib/commands/gitlab/config/plan.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/config/plan.js)_
|
|
804
811
|
|
|
805
812
|
## `simply gitlab file create`
|
|
806
813
|
|
|
@@ -852,7 +859,7 @@ FLAG DESCRIPTIONS
|
|
|
852
859
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
853
860
|
```
|
|
854
861
|
|
|
855
|
-
_See code: [lib/commands/gitlab/file/create.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
862
|
+
_See code: [lib/commands/gitlab/file/create.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/file/create.js)_
|
|
856
863
|
|
|
857
864
|
## `simply gitlab file update`
|
|
858
865
|
|
|
@@ -905,7 +912,7 @@ FLAG DESCRIPTIONS
|
|
|
905
912
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
906
913
|
```
|
|
907
914
|
|
|
908
|
-
_See code: [lib/commands/gitlab/file/update.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
915
|
+
_See code: [lib/commands/gitlab/file/update.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/file/update.js)_
|
|
909
916
|
|
|
910
917
|
## `simply gitlab file view`
|
|
911
918
|
|
|
@@ -951,7 +958,7 @@ FLAG DESCRIPTIONS
|
|
|
951
958
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
952
959
|
```
|
|
953
960
|
|
|
954
|
-
_See code: [lib/commands/gitlab/file/view.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
961
|
+
_See code: [lib/commands/gitlab/file/view.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/file/view.js)_
|
|
955
962
|
|
|
956
963
|
## `simply gitlab mr create`
|
|
957
964
|
|
|
@@ -1012,7 +1019,7 @@ FLAG DESCRIPTIONS
|
|
|
1012
1019
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
1013
1020
|
```
|
|
1014
1021
|
|
|
1015
|
-
_See code: [lib/commands/gitlab/mr/create.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
1022
|
+
_See code: [lib/commands/gitlab/mr/create.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/mr/create.js)_
|
|
1016
1023
|
|
|
1017
1024
|
## `simply gitlab mr list`
|
|
1018
1025
|
|
|
@@ -1066,7 +1073,7 @@ FLAG DESCRIPTIONS
|
|
|
1066
1073
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
1067
1074
|
```
|
|
1068
1075
|
|
|
1069
|
-
_See code: [lib/commands/gitlab/mr/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
1076
|
+
_See code: [lib/commands/gitlab/mr/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/mr/list.js)_
|
|
1070
1077
|
|
|
1071
1078
|
## `simply gitlab mr update`
|
|
1072
1079
|
|
|
@@ -1130,7 +1137,7 @@ FLAG DESCRIPTIONS
|
|
|
1130
1137
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
1131
1138
|
```
|
|
1132
1139
|
|
|
1133
|
-
_See code: [lib/commands/gitlab/mr/update.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
1140
|
+
_See code: [lib/commands/gitlab/mr/update.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/mr/update.js)_
|
|
1134
1141
|
|
|
1135
1142
|
## `simply gitlab mr view`
|
|
1136
1143
|
|
|
@@ -1171,7 +1178,85 @@ FLAG DESCRIPTIONS
|
|
|
1171
1178
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
1172
1179
|
```
|
|
1173
1180
|
|
|
1174
|
-
_See code: [lib/commands/gitlab/mr/view.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
1181
|
+
_See code: [lib/commands/gitlab/mr/view.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/mr/view.js)_
|
|
1182
|
+
|
|
1183
|
+
## `simply gitlab project create`
|
|
1184
|
+
|
|
1185
|
+
Create a project, blank or from a template.
|
|
1186
|
+
|
|
1187
|
+
```
|
|
1188
|
+
USAGE
|
|
1189
|
+
$ simply gitlab project create [--json] [-e <value>] [--gitlab-url <value>] [--gitlab-token <value>] [--dry-run] [--name
|
|
1190
|
+
<value>] [--path <value>] [--namespace <value>] [--description <value>] [--visibility private|internal|public]
|
|
1191
|
+
[--default-branch <value>] [--initialize-with-readme] [--topics <value>] [--template <value>] [--custom-template]
|
|
1192
|
+
[--template-group <value>] [--template-project <value>] [--body <value> | --body-file <value>]
|
|
1193
|
+
|
|
1194
|
+
FLAGS
|
|
1195
|
+
--body=<value> Raw JSON request body.
|
|
1196
|
+
--body-file=<value> Path to a file holding the raw JSON request body.
|
|
1197
|
+
--custom-template Look --template up among the instance's custom project templates rather than the built-in
|
|
1198
|
+
ones.
|
|
1199
|
+
--default-branch=<value> Name of the default branch.
|
|
1200
|
+
--description=<value> Project description.
|
|
1201
|
+
--dry-run Print the request that would be sent and exit without sending it.
|
|
1202
|
+
--initialize-with-readme Create a first commit holding a README, so the repository is not empty.
|
|
1203
|
+
--name=<value> Project name. The path is derived from it when --path is not given.
|
|
1204
|
+
--namespace=<value> Group or user namespace to create the project in, by id or full path.
|
|
1205
|
+
--path=<value> Repository path, the URL slug. The name is derived from it when --name is not given.
|
|
1206
|
+
--template=<value> Template to create from: a built-in name, or with --custom-template or --template-group a
|
|
1207
|
+
custom one.
|
|
1208
|
+
--template-group=<value> Group whose custom project templates --template names, by id or full path.
|
|
1209
|
+
--template-project=<value> Custom template project to create from, by id or full path. Cannot be combined with
|
|
1210
|
+
--template.
|
|
1211
|
+
--topics=<value> Comma-separated topics to label the project with.
|
|
1212
|
+
--visibility=<option> Who can see the project.
|
|
1213
|
+
<options: private|internal|public>
|
|
1214
|
+
|
|
1215
|
+
CONNECTION FLAGS
|
|
1216
|
+
-e, --env-file=<value> Path to a .env file holding connection settings.
|
|
1217
|
+
--gitlab-token=<value> [env: GITLAB_TOKEN] Personal, project, or group access token.
|
|
1218
|
+
--gitlab-url=<value> [env: GITLAB_URL] Base URL of the GitLab instance. Defaults to https://gitlab.com.
|
|
1219
|
+
|
|
1220
|
+
GLOBAL FLAGS
|
|
1221
|
+
--json Format output as json.
|
|
1222
|
+
|
|
1223
|
+
DESCRIPTION
|
|
1224
|
+
Create a project, blank or from a template.
|
|
1225
|
+
|
|
1226
|
+
Creates the project in --namespace, or in the namespace of the token owner when none is given. Give it --name or
|
|
1227
|
+
--path; GitLab derives whichever one is missing.
|
|
1228
|
+
|
|
1229
|
+
--template names one of the built-in templates GitLab ships, such as express or rails. To create from a custom
|
|
1230
|
+
template instead, add --custom-template for one the instance administrator registered, --template-group for one in a
|
|
1231
|
+
group, or use --template-project to name the template project itself by id or path — which GitLab prefers, because a
|
|
1232
|
+
name can be ambiguous. Custom templates need a Premium or Ultimate instance.
|
|
1233
|
+
|
|
1234
|
+
A template is applied asynchronously: this command returns as soon as the project record exists, with an import status
|
|
1235
|
+
of "scheduled", and the files arrive a few seconds later. Check "project view" until its import_status reads
|
|
1236
|
+
"finished" before writing to the repository. --dry-run prints the exact request body; a namespace or template given as
|
|
1237
|
+
a path is still looked up, so the printed ids are the ones that would be sent.
|
|
1238
|
+
|
|
1239
|
+
EXAMPLES
|
|
1240
|
+
$ simply gitlab project create --name new-service --namespace platform/apps
|
|
1241
|
+
|
|
1242
|
+
$ simply gitlab project create --name new-service --namespace platform/apps --template express --visibility internal
|
|
1243
|
+
|
|
1244
|
+
$ simply gitlab project create --name new-service --namespace platform/apps --template service-skeleton --template-group platform/templates
|
|
1245
|
+
|
|
1246
|
+
$ simply gitlab project create --path new-service --template-project platform/templates/service-skeleton --dry-run
|
|
1247
|
+
|
|
1248
|
+
FLAG DESCRIPTIONS
|
|
1249
|
+
-e, --env-file=<value> Path to a .env file holding connection settings.
|
|
1250
|
+
|
|
1251
|
+
Loaded before anything else. Variables already present in the environment win, so the file never overrides an
|
|
1252
|
+
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
1253
|
+
|
|
1254
|
+
--namespace=<value> Group or user namespace to create the project in, by id or full path.
|
|
1255
|
+
|
|
1256
|
+
Defaults to the namespace of the token owner.
|
|
1257
|
+
```
|
|
1258
|
+
|
|
1259
|
+
_See code: [lib/commands/gitlab/project/create.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/project/create.js)_
|
|
1175
1260
|
|
|
1176
1261
|
## `simply gitlab project list`
|
|
1177
1262
|
|
|
@@ -1218,7 +1303,7 @@ FLAG DESCRIPTIONS
|
|
|
1218
1303
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
1219
1304
|
```
|
|
1220
1305
|
|
|
1221
|
-
_See code: [lib/commands/gitlab/project/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
1306
|
+
_See code: [lib/commands/gitlab/project/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/project/list.js)_
|
|
1222
1307
|
|
|
1223
1308
|
## `simply gitlab project view`
|
|
1224
1309
|
|
|
@@ -1257,7 +1342,7 @@ FLAG DESCRIPTIONS
|
|
|
1257
1342
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
1258
1343
|
```
|
|
1259
1344
|
|
|
1260
|
-
_See code: [lib/commands/gitlab/project/view.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
1345
|
+
_See code: [lib/commands/gitlab/project/view.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/project/view.js)_
|
|
1261
1346
|
|
|
1262
1347
|
## `simply gitlab release list`
|
|
1263
1348
|
|
|
@@ -1298,7 +1383,7 @@ FLAG DESCRIPTIONS
|
|
|
1298
1383
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
1299
1384
|
```
|
|
1300
1385
|
|
|
1301
|
-
_See code: [lib/commands/gitlab/release/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
1386
|
+
_See code: [lib/commands/gitlab/release/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/release/list.js)_
|
|
1302
1387
|
|
|
1303
1388
|
## `simply gitlab search`
|
|
1304
1389
|
|
|
@@ -1353,7 +1438,7 @@ FLAG DESCRIPTIONS
|
|
|
1353
1438
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
1354
1439
|
```
|
|
1355
1440
|
|
|
1356
|
-
_See code: [lib/commands/gitlab/search.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
1441
|
+
_See code: [lib/commands/gitlab/search.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/search.js)_
|
|
1357
1442
|
|
|
1358
1443
|
## `simply gitlab tag list`
|
|
1359
1444
|
|
|
@@ -1400,7 +1485,7 @@ FLAG DESCRIPTIONS
|
|
|
1400
1485
|
explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
|
|
1401
1486
|
```
|
|
1402
1487
|
|
|
1403
|
-
_See code: [lib/commands/gitlab/tag/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.
|
|
1488
|
+
_See code: [lib/commands/gitlab/tag/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/tag/list.js)_
|
|
1404
1489
|
<!-- commandsstop -->
|
|
1405
1490
|
|
|
1406
1491
|
## License
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Get Started
|
|
3
|
+
description: Requirements, installation, and a first command for the Simply GitLab CLI.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Requirements
|
|
7
|
+
|
|
8
|
+
- Node.js 22 or later
|
|
9
|
+
- A GitLab account on gitlab.com or a self-managed instance, and an access token
|
|
10
|
+
|
|
11
|
+
## Install
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
npm install -g @simplysf/simply-cli
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Verify it worked
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
simply gitlab --help
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Get a token
|
|
24
|
+
|
|
25
|
+
Create a personal access token under **Preferences › Access tokens** in GitLab, or a project or
|
|
26
|
+
group access token from that project's or group's settings. Two scopes matter:
|
|
27
|
+
|
|
28
|
+
| Scope | What it allows |
|
|
29
|
+
| ---------- | -------------------------------------------------------- |
|
|
30
|
+
| `read_api` | Everything on this site that reads. Nothing that writes. |
|
|
31
|
+
| `api` | Reads and writes. |
|
|
32
|
+
|
|
33
|
+
Start with `read_api`. It is not just a smaller permission — it is the only thing that makes a
|
|
34
|
+
write structurally impossible, which matters as soon as a script or an agent is running these
|
|
35
|
+
commands. See [Write safety](/guides/write-safety/).
|
|
36
|
+
|
|
37
|
+
## Connect to your instance
|
|
38
|
+
|
|
39
|
+
Every command reads its connection settings from environment variables, from flags, or from a
|
|
40
|
+
`.env` file passed with `-e/--env-file`:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
GITLAB_TOKEN=glpat-...
|
|
44
|
+
GITLAB_URL=https://gitlab.example.com # omit entirely for gitlab.com
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
`GITLAB_URL` defaults to `https://gitlab.com`, so a gitlab.com user needs only the token. See
|
|
48
|
+
[Credentials](/guides/credentials/) for precedence between flags, environment, and file, and for
|
|
49
|
+
trusting an internal certificate authority.
|
|
50
|
+
|
|
51
|
+
## First commands
|
|
52
|
+
|
|
53
|
+
Find a project you can reach, then look at its open merge requests:
|
|
54
|
+
|
|
55
|
+
```sh
|
|
56
|
+
simply gitlab project list --membership
|
|
57
|
+
simply gitlab mr list --project group/project
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Add `--json` to either to get the raw API payload instead of the formatted table.
|
|
61
|
+
|
|
62
|
+
## Naming a project
|
|
63
|
+
|
|
64
|
+
Every project-scoped command takes `-p/--project`, which accepts a numeric id or the full path.
|
|
65
|
+
Both of these are the same project:
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
simply gitlab mr list --project 1234
|
|
69
|
+
simply gitlab mr list --project group/subgroup/project
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
The path is URL-encoded for you — do not encode it yourself. If you work in one project most of
|
|
73
|
+
the time, set `GITLAB_PROJECT` and drop the flag.
|
|
74
|
+
|
|
75
|
+
## Where to go next
|
|
76
|
+
|
|
77
|
+
- The [Command Reference](/reference/) lists every command by topic, with its flags and examples.
|
|
78
|
+
- [Credentials](/guides/credentials/) covers tokens, precedence, and certificates.
|
|
79
|
+
- [Write safety](/guides/write-safety/) explains `--dry-run`, `GITLAB_READ_ONLY`, and why a
|
|
80
|
+
`read_api` token is the only one of those that actually binds.
|
|
81
|
+
- [Scripts and agents](/guides/scripting/) covers the `--json` contract and exit codes.
|
|
82
|
+
- [MCP server](/guides/mcp-server/) gives an AI agent the same capabilities as tools, read-only by
|
|
83
|
+
default.
|
|
84
|
+
- Want to contribute? See
|
|
85
|
+
[CONTRIBUTING.md](https://github.com/SimplySF/simply-gitlab/blob/main/CONTRIBUTING.md) in the
|
|
86
|
+
repo.
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Configuration baselines
|
|
3
|
+
description: Hold many GitLab projects to one standard - export a baseline from a project you like, see what differs across the rest, and converge them.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Fifty projects drift. One was created before you settled on squash merges, someone unprotected
|
|
7
|
+
`main` to fix something and never put it back, and two never had an approval rule at all. There is
|
|
8
|
+
no answer to "are these the same?" short of opening fifty tabs.
|
|
9
|
+
|
|
10
|
+
A baseline is a JSON file saying what those projects should have in common, and three commands that
|
|
11
|
+
read it:
|
|
12
|
+
|
|
13
|
+
| Command | Writes? | What it does |
|
|
14
|
+
| ----------------------------- | ------- | ---------------------------------------------------- |
|
|
15
|
+
| `simply gitlab config export` | no | Emits a config from a project you already like |
|
|
16
|
+
| `simply gitlab config plan` | no | Reports, per project, what differs from the baseline |
|
|
17
|
+
| `simply gitlab config apply` | yes | Converges each project onto the baseline |
|
|
18
|
+
|
|
19
|
+
## Start by exporting
|
|
20
|
+
|
|
21
|
+
Do not write the file by hand. Export the project that already looks right and delete what you do
|
|
22
|
+
not care about:
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
simply gitlab config export --project group/api > baseline.json
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The output is deliberately verbose — every supported key, not a curated subset — because deleting a
|
|
29
|
+
line is easier than discovering that a key exists. Variables come out as metadata only: keys,
|
|
30
|
+
scopes, and flags, never values.
|
|
31
|
+
|
|
32
|
+
## Point it at the rest
|
|
33
|
+
|
|
34
|
+
The exported file targets only the project it came from. Widen it on purpose:
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"version": 1,
|
|
39
|
+
"targets": {
|
|
40
|
+
"groups": ["platform"],
|
|
41
|
+
"exclude": ["platform/sandbox", "platform/archived-*"]
|
|
42
|
+
},
|
|
43
|
+
"project": {
|
|
44
|
+
"settings": {
|
|
45
|
+
"merge_method": "ff",
|
|
46
|
+
"squash_option": "default_on",
|
|
47
|
+
"only_allow_merge_if_pipeline_succeeds": true
|
|
48
|
+
},
|
|
49
|
+
"protectedBranches": [{ "name": "main", "allow_force_push": false }],
|
|
50
|
+
"approvalRules": [{ "name": "Two maintainers", "approvals_required": 2, "usernames": ["alice", "bob"] }]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
`targets.groups` expands through subgroups. `exclude` takes a trailing `*` to drop a whole subtree.
|
|
56
|
+
A project the token cannot see is a hard error, not a silent omission — a baseline that quietly
|
|
57
|
+
skipped six of fifty would leave those six wrong with nobody knowing to look.
|
|
58
|
+
|
|
59
|
+
## Read the plan
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
simply gitlab config plan --config ./baseline.json
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
Targets: 50 project(s), 1 group(s).
|
|
67
|
+
|
|
68
|
+
platform/api
|
|
69
|
+
settings
|
|
70
|
+
~ merge_method merge → ff
|
|
71
|
+
~ only_allow_merge_if_pipeline_succeeds false → true
|
|
72
|
+
protectedBranches
|
|
73
|
+
~ main.allow_force_push true → false
|
|
74
|
+
- legacy (not pruned; set "prune": true on this section to remove it)
|
|
75
|
+
|
|
76
|
+
platform/worker
|
|
77
|
+
✓ matches the baseline
|
|
78
|
+
|
|
79
|
+
50 target(s): 31 match, 19 differ.
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Three things in that output are worth understanding.
|
|
83
|
+
|
|
84
|
+
**Only what you declared is compared.** A project with forty settings the config never mentions
|
|
85
|
+
shows nothing for them. That is what makes a baseline safe to point at projects that already exist:
|
|
86
|
+
the blast radius is the set of keys you wrote down.
|
|
87
|
+
|
|
88
|
+
**Drift you are not fixing is still shown.** `- legacy` is a protected branch that exists but is not
|
|
89
|
+
in the config. By default nothing is deleted, and the line says so. Seeing what you are choosing not
|
|
90
|
+
to correct is most of the value of running this across fifty projects.
|
|
91
|
+
|
|
92
|
+
**A section can come back unsupported.** Approval rules, approval settings, and push rules are
|
|
93
|
+
Premium/Ultimate. On an instance without them the section reports that and the rest still converges.
|
|
94
|
+
|
|
95
|
+
## Apply it
|
|
96
|
+
|
|
97
|
+
```sh
|
|
98
|
+
simply gitlab config apply --config ./baseline.json --dry-run # prints the plan, sends nothing
|
|
99
|
+
simply gitlab config apply --config ./baseline.json
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Apply executes exactly what the plan showed — the two are computed in one pass, so a preview is a
|
|
103
|
+
guarantee rather than an approximation. A second run against a converged project sends no requests
|
|
104
|
+
at all.
|
|
105
|
+
|
|
106
|
+
Sections are applied in a fixed order: settings, protected branches, protected tags, approval
|
|
107
|
+
settings, approval rules, push rules. That order exists because an approval rule scoped to `main`
|
|
108
|
+
needs `main` protected before it can reference it.
|
|
109
|
+
|
|
110
|
+
One project failing does not abandon the other forty-nine. There is no transaction across GitLab
|
|
111
|
+
endpoints, so a project that fails part-way keeps the sections already applied; the summary says
|
|
112
|
+
where it stopped, and `plan` afterwards shows what is left.
|
|
113
|
+
|
|
114
|
+
## Per-project exceptions
|
|
115
|
+
|
|
116
|
+
`overrides` is keyed by project path:
|
|
117
|
+
|
|
118
|
+
```json
|
|
119
|
+
"overrides": {
|
|
120
|
+
"platform/legacy-api": {
|
|
121
|
+
"project": {
|
|
122
|
+
"settings": { "merge_method": "merge" },
|
|
123
|
+
"approvalRules": [{ "name": "Two maintainers", "approvals_required": 1 }]
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Lists merge by a natural key — `name` for branches, tags, and rules; `key` plus `environment_scope`
|
|
130
|
+
for variables — so an override adjusts one entry rather than restating the array. The rule above
|
|
131
|
+
changes one number and inherits the usernames from the baseline.
|
|
132
|
+
|
|
133
|
+
Set `"$replace": true` on a section to swap the list wholesale instead, for the project that needs
|
|
134
|
+
genuinely different rules rather than adjusted ones.
|
|
135
|
+
|
|
136
|
+
## Turning on pruning
|
|
137
|
+
|
|
138
|
+
By default the config adds and corrects; it never deletes. When you are ready for a section to be
|
|
139
|
+
authoritative, opt in:
|
|
140
|
+
|
|
141
|
+
```json
|
|
142
|
+
"protectedBranches": {
|
|
143
|
+
"prune": true,
|
|
144
|
+
"entries": [{ "name": "main", "allow_force_push": false }]
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Now an undeclared protected branch is removed. Adopt this section by section, after `plan` has shown
|
|
149
|
+
you what it would take away — a first run against fifty existing projects with everything pruning
|
|
150
|
+
could remove protections that predate the config.
|
|
151
|
+
|
|
152
|
+
## Checking for drift in CI
|
|
153
|
+
|
|
154
|
+
```sh
|
|
155
|
+
simply gitlab config plan --config ./baseline.json --fail-on-drift
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Exits `1` when anything differs, so a scheduled job tells you something drifted without anyone
|
|
159
|
+
reading the output. `--json` returns the whole plan as structured data if you would rather track it
|
|
160
|
+
over time:
|
|
161
|
+
|
|
162
|
+
```sh
|
|
163
|
+
simply gitlab config plan --config ./baseline.json --json | jq '.summary'
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## CI/CD variables are reported, not written
|
|
167
|
+
|
|
168
|
+
The config can declare which variables must exist and what flags they carry. `plan` reports the ones
|
|
169
|
+
that are missing or wrong; `apply` does not touch them.
|
|
170
|
+
|
|
171
|
+
That is the API, not caution. Creating a variable requires a value, and so does updating one — even
|
|
172
|
+
to change `masked` from false to true. A variable created as `masked_and_hidden` will not return its
|
|
173
|
+
value at all. There is no honest way to reconcile secrets from a file that, by design, holds none.
|
|
174
|
+
|
|
175
|
+
Knowing that six projects are missing `DEPLOY_ENV` is still the question people actually ask; setting
|
|
176
|
+
it is a person's job.
|
|
177
|
+
|
|
178
|
+
## From an agent
|
|
179
|
+
|
|
180
|
+
The MCP server exposes `gitlab_config_plan` and `gitlab_config_export`, so you can ask an agent
|
|
181
|
+
"which of our projects are missing the two-approval rule?" and get an answer.
|
|
182
|
+
|
|
183
|
+
There is deliberately no tool that applies a baseline. Changing settings across fifty projects is a
|
|
184
|
+
deployment, not a tool call, and belongs to a person with the plan in front of them. An agent that
|
|
185
|
+
should apply one can run the CLI, where it is a shell command you can see and approve. See the
|
|
186
|
+
[MCP server guide](/guides/mcp-server/).
|