1COPR-CLI(1)                          COPR                          COPR-CLI(1)
2
3
4

NAME

6       copr-cli - command line interface for the Copr service
7

SYNOPSIS

9       copr-cli [-h] [--version] [--config CONFIG] {list,create,build} ...
10

DESCRIPTION

12       This command allows you to interact with the Copr service from the
13       command line.
14
15       You need to to configure authentication first (see the AUTHENTICATION
16       section below).
17

OPTIONS

19       -h, --help
20           show this help message and exit
21
22       --version
23           show the program’s version number and exit
24
25       --config
26           path to an alternative configuration file (default is
27           ~/.config/copr).
28

ACTION LIST

30       list [username|@groupname]
31           List all the projects of the provided username. If no username is
32           provided, then your projects are listed.
33
34       create
35           Create a new project.
36
37       delete
38           Delete an entire project.
39
40       build
41           Build packages for a specified project.
42
43       status
44           Get the status of the build.
45
46       cancel
47           Cancel a build of given id.
48
49       download-build
50           Download a build to local directory.
51
52       modify
53           Modify existing copr
54
55       regenerate-repos
56           Regenerate repository metadata for a project
57
58       add-package-*
59           Add a new package of the specified source type (e.g.
60           add-package-tito)
61
62       edit-package-*
63           Edit source definition and type of an existing package (e.g.
64           edit-package-tito)
65
66       list-packages
67           List all packages from a copr in json format
68
69       list-package-names
70           Output just the package names from the given copr
71
72       get-package
73           Display details of a single package in json format
74
75       delete-package
76           Remove package from a copr and all its builds as well
77
78       reset-package
79           Clear source definition of a package and its source type
80
81       build-package
82           Build package from its source definition
83
84       mock-config
85           Get the mock profile (similar to koji mock-config)
86
87       build-module
88           Build module via Copr MB
89

PROJECT ACTIONS

91   copr-cli create [options]
92       usage: copr-cli create [-h] --chroot CHROOTS [--repo REPOS]
93       [--initial-pkgs PKGS] [--description DESCRIPTION] [--instructions
94       INSTRUCTIONS] [--disable_createrepo DISABLE_CREATEREPO] [--enable-net
95       {on,off}] [--unlisted-on-hp {on,off}] [--persistent] [--auto-prune
96       {on,off}] [--isolation {default, nspawn, simple}] name
97
98       --chroot
99           Chroot to use for this project. Can be specified multiple times,
100           but at least one must be present.
101
102       --repo
103           Repository to add to this project. Can be specified multiple times.
104
105       --initial-pkgs
106           List of packages to build in this new project. Can be specified
107           multiple times.
108
109       --description
110           Description of the project.
111
112       --instructions
113           Instructions for the project.
114
115       --disable_createrepo
116           Disables automatic repository metadata generation. Accepted values
117           for DISABLE_CREATEREPO: true/false.
118
119       --enable-net
120           If net should be enabled for builds in this project.
121
122       --unlisted-on-hp
123           This project will not be listed on COPR home page.
124
125       --persistent
126           Project and its builds will be undeletable. This option can only be
127           specified by a COPR admin.
128
129       --auto-prune
130           If backend auto-prunning script should be run for this project.
131           This option can only be specified by a COPR admin.
132
133       --isolation ISOLATION
134           Choose the isolation method for running commands in buildroot
135
136       name
137           Can be just name of the project or in form username/projectname or
138           @groupname/projectname.
139
140   copr-cli modify [options]
141       usage: copr-cli modify [-h] [--repo REPOS] [--chroot CHROOTS]
142       [--description DESCRIPTION] [--instructions INSTRUCTIONS]
143       [--disable_createrepo DISABLE_CREATEREPO] [--enable-net {on,off}]
144       [--unlisted-on-hp {on,off}] [--auto-prune {on,off}] [--isolation
145       {default, nspawn, simple}] name
146
147       Alters only specified project property.
148
149       --repo
150           Repository to add to this project. Can be specified multiple times.
151
152       --chroot
153           Chroot to use for this project. Can be specified multiple times.
154           When this option is not used, chroots in the project remain
155           unchanged. Once you specify a chroot, it is going to be enabled in
156           the project, but current chroots will not be preserved if they are
157           not specified.
158
159       --description
160           Description of the project.
161
162       --instructions
163           Instructions for the project.
164
165       --disable_createrepo
166           Disables automatic repository metadata generation. Accepted values
167           for DISABLE_CREATEREPO: true/false.
168
169       --enable-net
170           If networking should be enabled for builds in this project.
171
172       --unlisted-on-hp
173           This project will not be listed on COPR home page.
174
175       --auto-prune
176           If backend auto-prunning script should be run for this project.
177           This option can only be specified by a COPR admin.
178
179       --isolation ISOLATION
180           Choose the isolation method for running commands in buildroot
181
182       name
183           Can be just name of the project or in form username/projectname or
184           @groupname/projectname.
185
186   copr-cli regenerate-repos [options]
187       usage: copr-cli regenerate-repos [-h] copr
188
189       copr
190           Can be just name of the project or in form username/projectname or
191           @groupname/projectname.
192

BUILD ACTIONS

194   copr-cli build [options]
195       usage: copr-cli build [-h] [-r, --chroot CHROOTS] [--memory MEMORY]
196       [--timeout TIMEOUT] [--nowait] [--background] [--isolation {default,
197       nspawn, simple}] [--enable-net {on,off}] copr_repo PKG [PKG ...]
198
199       -r, --chroot
200           If you don’t need this build for all the project’s chroots. You can
201           use it several times for each chroot you need.
202
203       --exclude-chroot
204           If you don’t need this build for all the project’s chroots. You can
205           use it several times for each chroot you don’t need.
206
207       --memory
208           Override memory for this build. This is actually not used and it
209           have no effect.
210
211       --timeout
212           Override timeout for this build.
213
214       --nowait
215           Don’t wait for build completion.
216
217       --background
218           Run the build at a lower priority.
219
220       --isolation ISOLATION
221           Choose the isolation method for running commands in buildroot.
222
223       --enable-net
224           If networking should be enabled for this build.
225
226       copr_repo
227           The copr repository to build the package in. This can be a simple
228           name of some of your projects or it can be specified fully as
229           username/project or @groupname/project. This way you can build into
230           the project of another user or group, provided you have permissions
231           to do so. Finally, instead of just project name, you can also pass
232           project:tag. In that case, the build will land into the project
233           side repository instead of the main repository. The side repository
234           of the name project:tag will be automatically created if it doesn’t
235           exist yet. You can e.g. use this feature to launch test builds
236           while the main user-facing repository stays intact. You can specify
237           any tag that is appropriate for the given build(s).
238
239       PKG
240           This can be either file on your local workstation or URL of the
241           package to build. When URL is used, then the package must be placed
242           on a public web or ftp server. Note that you cannot combine local
243           file paths and URLs in one command line and local-file builds are
244           limited to the first specified PKG. This limitation comes from the
245           COPR API.
246
247   copr-cli buildpypi [options]
248       usage: copr buildpypi [-h] [-r, --chroot CHROOTS] [--memory MEMORY]
249       [--timeout TIMEOUT] [--nowait] [--background] [--pythonversions
250       [VERSION [VERSION ...]]] [--packageversion PYPIVERSION] --packagename
251       PYPINAME project
252
253       --pythonversions [VERSION [VERSION ...]]
254           For what Python versions to build (by default: 3 2)
255
256       --packageversion PYPIVERSION
257           Version of the PyPI package to be built (by default latest)
258
259       --packagename PYPINAME
260           Name of the PyPI package to be built, required.
261
262       For the rest of the arguments, see copr-cli build command above.
263
264   copr-cli buildscm [options]
265       usage: copr buildscm [-h] --clone-url CLONE_URL [--commit COMMITTISH]
266       [--subdir SUBDIRECTORY] [--spec SPEC] [--type {git,svn}] [--method
267       {rpkg,tito,tito_test,make_srpm}] [--memory MEMORY] [--timeout TIMEOUT]
268       [--nowait] [-r CHROOTS] [--background] copr_repo
269
270       Build package from a Git/DistGit/SVN repository.
271
272       --clone-url CLONE_URL
273           clone url to a project versioned by Git or SVN, required
274
275       --commit COMMITISH
276           branch name, tag name, or git hash to be built
277
278       --subdir SUBDIRECTORY
279           relative path from the repo root to the package content
280
281       --spec SPEC
282           relative path from the subdirectory to the .spec file
283
284       --type TYPE
285           Specify versioning tool. Default is git.
286
287       --method METHOD
288           Srpm build method. Default is rpkg.
289
290       For the rest of the arguments, see copr-cli build command above.
291
292   copr-cli download-build [options]
293       usage: copr-cli download-build [-h] [-d, --dest DESTINATION] [-r,
294       --chroot CHROOT] build_id
295
296       build_id
297           Download built packages for build identified by build_id.
298
299       -d, --dest
300           Base directory to store packages
301
302       -r, --chroot
303           Fetch only selected chroots. Can be specified multiple times.
304
305   copr-cli delete-build [options]
306       usage: copr delete-build [-h] build_id [build_id ...]
307
308       build_id
309           ID of the build to be deleted. Can be specified multiple times.
310           Note that specifying multiple build_id is much faster than calling
311           copr delete-build multiple times, because in the first case
312           createrepo is called only once.
313

EXAMPLES

315           copr-cli build myproject some.src.rpm
316           copr-cli build someone_else/project some.src.rpm
317           copr-cli build -r fedora-24-x86_64 -r fedora-24-i386 "@somegroup/project" some.src.rpm
318

CHROOT ACTIONS

320   copr-cli edit-chroot [options] coprchroot
321       usage: copr edit-chroot [-h] [--upload-comps FILEPATH | --delete-comps]
322       [--packages PACKAGES] [--repos REPOS] [--isolation {default, nspawn,
323       simple}] coprchroot
324
325       Edit the specified coprchroot.
326
327       coprchroot
328           Path to a project chroot as owner/project/chroot or project/chroot
329
330       --upload-comps FILEPATH
331           Filepath to the comps.xml file to be uploaded
332
333       --delete-comps
334           Deletes already existing comps.xml for the chroot
335
336       --packages PACKAGES
337           space separated string of package names to be added to buildroot
338           (e.g. "gcc ghc")
339
340       --repos REPOS
341           space separated string of additional repo urls for chroot (e.g.
342           "http://foo http://bar")
343
344       --isolation ISOLATION
345           Choose the isolation method for running commands in buildroot
346
347   copr-cli get-chroot coprchroot
348       usage: copr get-chroot [-h] coprchroot [--output-format {json, text,
349       text-row}]
350
351       Print info of the given chroot.
352
353       coprchroot
354           Path to a project chroot as owner/project/chroot or project/chroot
355
356       --output-format FORMAT
357           Set the formatting style. We recommend using json, which prints the
358           required data in json format. The text format prints the required
359           data in a column, one piece of information per line. The text-row
360           format prints all information separated by a space on a single
361           line.
362

PACKAGE ACTIONS

364   copr-cli add-package-pypi [options]
365       usage: copr add-package-pypi [-h] [--pythonversions [VERSION [VERSION
366       ...]]] [--packageversion PYPIVERSION] --packagename PYPINAME --name
367       PKGNAME [--webhook-rebuild {on,off}] project
368
369       Add package of PyPI source type.
370
371       --pythonversions [VERSION [VERSION ...]]
372           For what Python versions to build (by default: 3 2)
373
374       --packageversion PYPIVERSION
375           Version of the PyPI package to be built (by default latest)
376
377       --packagename PYPINAME
378           Name of the PyPI package to be built, required
379
380       --name PKGNAME
381           Name of the package to be edited or created
382
383       --webhook-rebuild {on,off}
384           Enable auto-rebuilding
385
386   copr-cli edit-package-pypi [options]
387       usage: copr edit-package-pypi [-h] [--pythonversions [VERSION [VERSION
388       ...]]] [--packageversion PYPIVERSION] --packagename PYPINAME --name
389       PKGNAME [--webhook-rebuild {on,off}] project
390
391       Edit source definition and type of an existing package. Options are
392       shared with add-package-pypi.
393
394       copr-cli add-package-scm [options]
395
396           usage: copr add-package-scm [-h] --clone-url CLONE_URL [--commit COMMITTISH]
397                                       [--subdir SUBDIRECTORY] [--spec SPEC]
398                                       [--type {git,svn}]
399                                       [--method {rpkg,tito,tito_test,make_srpm}] --name
400                                       PKGNAME [--webhook-rebuild {on,off}]
401                                       copr
402
403           Add package of SCM source type.
404
405           --clone-url CLONE_URL::
406           clone url to a project versioned by Git or SVN, required
407
408           --commit COMMITISH::
409           branch name, tag name, or git hash to be built
410
411           --subdir SUBDIRECTORY::
412           relative path from the repo root to the package content
413
414           --spec SPEC::
415           relative path from the subdirectory to the .spec file
416
417           --type TYPE::
418           Specify versioning tool. Default is 'git'.
419
420           --method METHOD::
421           Srpm build method. Default is 'rpkg'.
422
423           --name PKGNAME::
424           Name of the package to be edited or created
425
426           --webhook-rebuild {on,off}::
427           Enable auto-rebuilding
428
429
430           `copr-cli edit-package-scm [options]`
431
432       usage: copr edit-package-scm [-h] --clone-url CLONE_URL [--commit
433       COMMITTISH] [--subdir SUBDIRECTORY] [--spec SPEC] [--type {git,svn}]
434       [--method {rpkg,tito,tito_test,make_srpm}] --name PKGNAME
435       [--webhook-rebuild {on,off}] copr
436
437       Edit package of SCM source type.
438
439   copr-cli add-package-rubygems [options]
440       usage: copr add-package-rubygems [-h] [--gem GEM] --name PKGNAME
441       [--webhook-rebuild {on,off}] project
442
443       Add package of RubyGems source type.
444
445       --gem GEM
446           Specify gem name
447
448       --name PKGNAME
449           Name of the package to be edited or created
450
451       --webhook-rebuild {on,off}
452           Enable auto-rebuilding
453
454   copr-cli edit-package-rubygems [options]
455       usage: copr edit-package-rubygems [-h] [--gem GEM] --name PKGNAME
456       [--webhook-rebuild {on,off}] project
457
458       Edit source definition and type of an existing package. Options are
459       shared with add-package-rubygems.
460
461   copr-cli list-packages [options]
462       usage: copr list-packages [-h] [--with-latest-build]
463       [--with-latest-succeeded-build] [--with-all-builds] [--output-format
464       {json, text, text-row}] project
465
466       Lists all packages in the given project in json format.
467
468       --with-latest-build
469           Also display data related to the latest build for each package.
470
471       --with-latest-succeeded-build
472           Also display data related to the latest succeeded build for each
473           package.
474
475       --with-all-builds
476           Also display data related to the builds for each package.
477
478       --output-format FORMAT
479           Set the formatting style. We recommend using json, which prints the
480           required data in json format. The text format prints the required
481           data in a column, one piece of information per line. The text-row
482           format prints all information separated by a space on a single
483           line.
484
485   copr-cli list-package-names [options]
486       usage: copr list-package-names [-h] project
487
488       Only list package names in the given project line by line.
489
490   copr-cli get-package [options]
491       usage: copr get-package [-h] --name PKGNAME [--with-latest-build]
492       [--with-latest-succeeded-build] [--with-all-builds] [--output-format
493       {json, text, text-row}] project
494
495       Similar to list-packages but returns just a single package directly as
496       json structure (not wrapped in a list).
497
498       --output-format FORMAT
499           Set the formatting style. We recommend using json, which prints the
500           required data in json format. The text format prints the required
501           data in a column, one piece of information per line. The text-row
502           format prints all information separated by a space on a single
503           line.
504
505   copr-cli delete-package [options]
506       usage: copr delete-package [-h] --name PKGNAME project
507
508       Deletes package and all its builds from the given project.
509
510   copr-cli reset-package [options]
511       usage: copr reset-package [-h] --name PKGNAME project
512
513       Clears default source of a package and its source type (all the package
514       settings are lost after invoking this!).
515
516   copr-cli build-package [options]
517       usage: copr build-package [-h] [--memory MEMORY] [--timeout TIMEOUT]
518       [--nowait] [-r CHROOTS] --name PKGNAME project
519
520       Creates a new build of the given package from its source definition.
521
522       --name PKGNAME
523           Name of a package to be built
524
525       For the rest of the arguments, see copr-cli build command above.
526
527   copr-cli mock-config [options]
528       usage: copr mock-config [-h] project chroot
529
530       Get the mock profile (similar to koji mock-config), print it to
531       standard output. The configuration can be slightly different from the
532       real mock configuration used by Copr Builders, but should be similar
533       enough for basic debugging (e.g. by mock --shell).
534

EXAMPLES

536           copr-cli add-package-tito myproject --name pkgname --git-url http://github.com/clime/example.git --test on
537
538           copr-cli get-package myproject --name pkgname
539
540           copr-cli build-package myproject --name pkgname --nowait --timeout 10000 -r fedora-23-x86_64
541
542           copr-cli delete-package myproject --name pkgname
543
544           copr-cli mock-config myproject fedora-rawhide-x86_64
545

MODULE ACTIONS

547   copr-cli build-module [options]
548       usage: copr build-module [-h] [--url URL] [--token TOKEN] [copr]
549
550       Build module via Copr MBS
551
552       --url URL: SCM with modulemd file in yaml format
553
554       --yaml YAML: Path to modulemd file in yaml format
555

EXAMPLES

557           copr-cli build-module --url git://pkgs.stg.fedoraproject.org/modules/testmodule.git?#620ec77
558

EXIT STATUS

560       Normally, the exit code is 0 when everything goes well. But if not, we
561       could get:
562
563       1 - Bad request like wrong project name, insufficient rights etc. Also
564       might happen when user interrupts the operation when they shouldn’t.
565
566       2 - Wrong arguments given.
567
568       3 - Bad or no configuration.
569
570       4 - Build failed or was canceled.
571
572       5 - Communication error between Cli and server. This issue probably
573       means bug and should be reported.
574
575       6 - Configuration error.
576
577       7 - Authentication with Copr server failed.
578

AUTHENTICATION

580       Copr client supports token-based and GSSAPI authentication.
581
582       Visit the page https://copr.fedorainfracloud.org/api/ to obtain an API
583       token. This token must be saved in the configuration file
584       ~/.config/copr in the following format:
585
586           [copr-cli]
587           username = msuchy
588           login = Y57wcg==##fkfaxbkjhuoiebfafadl
589           token = vbfseelqdebzedukgombekmuvbkqwo
590           copr_url = https://copr.fedorainfracloud.org
591           # expiration date: 2023-01-01
592
593       Be aware that API tokens have an expiration date!
594
595       To enable GSSAPI you need to obtain a Kerberos ticket. If you want to
596       work with Fedora Copr, you can just do:
597
598           $ fkinit
599           Enter your password and OTP concatenated. (Ignore that the prompt is for only the token)
600           Enter OTP Token Value: <your password + OTP token>
601
602       To work with a different (non-Fedora Copr) instance, you will obtain
603       the ticket differently and you still need to have a configuration file
604       referring appropriate copr_url:
605
606           $ kinit username@EXAMPLE.COM
607           $ cat ~/.config/copr
608           [copr-cli]
609           copr_url = https://copr.example.com/
610
611       Copr client uses the python API internally, for more info take a look
612       at the page
613       https://python-copr.readthedocs.io/en/latest/ClientV3.html#example-usage
614

USING DIFFERENT COPR INSTANCE

616       If you plan to run copr client against non-default Copr instance, the
617       API token is available on the http://YOUR.COPR.URL/api/ page. You can
618       either replace your default ~/.config/copr configuration file, or
619       rather use alternative file with a shell alias
620
621           alias your_copr='copr --config ~/.config/your-copr'
622
623       inserted into your profile.
624

AUTHORS

626       Miroslav Suchý <msuchy@redhat.com>, clime <clime@redhat.com>
627
628
629
630copr                              01/24/2023                       COPR-CLI(1)
Impressum