Manage repositories in Quay.io
- qucli
- Enviroment QUAY_API_TOKEN
- Get Api Token. Applications and Tokens
$ export QUAY_API_TOKEN=foobar
if Quay Enterprise user, add Enviroment QUAY_HOSTNAME or --hostname
$ export QUAY_HOSTNAME=quay.example.com
or
$ qucli xxx --hostname=quay.example.com
Formula is available at koudaiii/homebrew-tools.
$ brew tap koudaiii/tools
$ brew install qucli
Precompiled binaries for Windows, OS X, Linux are available at Releases.
To install, use go get
:
$ go get -d github.com/koudaiii/qucli
$ cd $GOPATH/src/github.com/koudaiii/qucli
$ make deps
$ make install
docker image is available at quay.io/koudaiii/qucli.
# -t is required to colorize logs
$ docker run \
--rm \
-t \
-e QUAY_API_TOKEN=foobar \
-e QUAY_HOSTNAME=quay.io \
quay.io/koudaiii/qucli:latest
$ qucli
usage: qucli [--version] [--help] <command> [<args>]
Available commands are:
add-notification Add notification in repository
add-team Add team in repository
add-user Add user in repository
create Create repository in Quay
delete Delete repository in Quay
delete-notification Delete notification in repository
delete-team Delete team in repository
delete-user Delete user in repository
get Get Repository and Permissions and Notifications in Quay
list List repository and Permissions in Quay
test-notification Test notification in repository
version Print qucli version and quit
List repository in namespace
With --is-public
option, you can true
or false
$ qucli list koudaiii
NAME isPublic DESCRIPTION
quay.io/koudaiii/apig-sample true
quay.io/koudaiii/qucli true
quay.io/koudaiii/kubeps true
quay.io/koudaiii/test true
Get repository and Permissions in Quay
$ qucli get koudaiii/test
Repository:
quay.io/koudaiii/test
Visibility:
private
Permissions:
koudaiii(admin)
Notifications:
b0736be9-f0eb-4c3c-8d33-2e331b1e5b0f Some title repo_push map[] slack map[url:https://hooks.slack.com/service/some/token/here]
Create repository in Quay
With --visibility
option, you can public
or private
$ qucli create koudaiii/test --visibility private
Created! quay.io/koudaiii/test
Delete repository in Quay
$ qucli delete koudaiii/test
Deleted! quay.io/koudaiii/test
$ qucli get koudaiii/test
err: HTTP error!
URL: https://quay.io/api/v1/repository/koudaiii/test
status code: 404
body:
{"status": 404, "error_message": "Not Found", "title": "not_found", "error_type": "not_found", "detail": "Not Found", "type": "https://quay.io/api/v1/error/not_found"}
Add user in repository
With --role
option, you can read
or write
or admin
$ qucli add-user koudaiii/test dtan4 --role write
Added! dtan4(write) in quay.io/koudaiii/test
$ qucli get koudaiii/test
Repository:
quay.io/koudaiii/test
Visibility:
private
Permissions:
koudaiii(admin)
dtan4(write)
Add team in repository
With --role
option, you can read
or write
or admin
$ qucli add-team koudaiii/test infrastructure --role write
Added! infrastructure(write) in quay.io/koudaiii/test
$ qucli get koudaiii/test
Repository:
quay.io/koudaiii/test
Visibility:
private
Permissions:
koudaiii(admin)
dtan4(write)
infrastructure(write)
Delete user from repository
$ qucli delete-user koudaiii/test dtan4
Deleted! dtan4 in quay.io/koudaiii/test
$ qucli get koudaiii/test
Repository:
quay.io/koudaiii/test
Visibility:
private
Permissions:
koudaiii(admin)
infrastructure(write)
Delete team from repository
$ qucli delete-team koudaiii/test infrastructure
Deleted! infrastructure in quay.io/koudaiii/test
$ qucli get koudaiii/test
Repository:
quay.io/koudaiii/test
Visibility:
private
Permissions:
koudaiii(admin)
Add notification in repository with some options.
webhook
method
$ qucli add-notification koudaiii/test --event="repo_push" --method="webhook" --url="http://url/goes/here"
Added! 3c3c142c-2161-42ae-9414-39c787386b5c repo_push map[] webhook map[url:http://url/goes/here] in quay.io/koudaiii/test
slack
method
$ qucli add-notification koudaiii/test --event="repo_push" --method="slack" --url="https://hooks.slack.com/service/{some}/{token}/{here}"
Added! 61ae254f-89f0-4a36-a439-9b78004f2ab0 repo_push map[] slack map[url:https://hooks.slack.com/service/{some}/{token}/{here}] in quay.io/koudaiii/test
- options
$ qucli add-notification
qucli supported only Quay.io
Usage: add-notification
qucli add-notification koudaiii/qucli --event="repo_push" --method="webhook" --url="http://url/goes/here"
Option:
--event string set 'evnet'. ['repo_push', 'build_queued', 'build_start', 'build_success', 'build_failure', 'build_cancelled', 'vulnerability_found'].
--level string if you use 'vulnerability_found' evnet, A vulnerability must have a severity of the chosen level (highest level is 0).[0-6]
--ref string if you use event excluding 'repo_push' event, an optional regular expression for matching the git branch or tag git ref. If left blank, the notification will fire for all builds.(refs/heads/somebranch)|(refs/tags/sometag)
--method string set 'method'. ['webhook', 'slack', 'email'].
--email string if you use 'email' method, set E-mail address. 'test@example.com'.
--url string if you use 'webhook' or 'slack' method, set url. 'http://url/goes/here' or 'https://hooks.slack.com/service/{some}/{token}/{here}'.
--title string The title for a notification is an optional field for a human-readable title for the notification.
Test notification from repository.
$ qucli test-notification koudaiii/qucli 0c91e746-9d9e-4845-8dff-3c0995976dfa
Test Notification! 0c91e746-9d9e-4845-8dff-3c0995976dfa notification in quay.io/koudaiii/qucli
Delete notification from repository.
$ ./bin/qucli delete-notification koudaiii/test 3c3c142c-2161-42ae-9414-39c787386b5c
Deleted! 3c3c142c-2161-42ae-9414-39c787386b5c notification in quay.io/koudaiii/test
Option | Description | Required | Default |
---|---|---|---|
--visibility=VISIBILITY |
"visibility set to 'public' or 'private' | public |
|
--role=ROLE |
role to use for the user or team ROLE='read' or 'write' or 'admin' | read |
|
--is-public=bool |
repository type is public. true or false |
true |
|
--hostname=HOSTNAME |
if Quay Enterprise user, set hostname. | quay.io |
|
--event=EVENT |
set 'evnet'. EVENT='repo_push' or 'build_queued' or 'build_start' or 'build_success' or 'build_failure' or 'build_cancelled' or 'vulnerability_found'. | true | |
--level=LEVEL |
if you use 'vulnerability_found' evnet, A vulnerability must have a severity of the chosen level (highest level is 0).LEVEL=0-6 | ||
--ref=REF |
if you use event excluding 'repo_push' event, an optional regular expression for matching the git branch or tag git ref. If left blank, the notification will fire for all builds.(refs/heads/somebranch) or (refs/tags/sometag) | ||
--method=METHOD |
set 'method'. METHOD='webhook' or 'slack' or 'email'. | true | |
--email=EMAIL |
if you use 'email' method, set E-mail address. EMAIL='test@example.com'. | ||
--url=URL |
if you use 'webhook' or 'slack' method, set url. 'http://url/goes/here' or 'https://hooks.slack.com/service/{some}/{token}/{here}'. | ||
--title=TITLE |
The title for a notification is an optional field for a human-readable title for the notification. | ||
--help |
Print command line usage | ||
-v , --version |
Print version |
Clone this repository and build using make
.
$ go get -d github.com/koudaiii/qucli
$ cd $GOPATH/src/github.com/koudaiii/qucli
$ make
- Fork (https://github.com/koudaiii/qucli/fork)
- Create a feature branch
- Commit your changes
- Rebase your local changes against the master branch
- Run test suite with the
go test ./...
command and confirm that it passes - Run
gofmt -s
- Create a new Pull Request