Skip to content

Latest commit

 

History

History
359 lines (276 loc) · 10.3 KB

README.md

File metadata and controls

359 lines (276 loc) · 10.3 KB

qucli

Build Status Docker Repository on Quay GitHub release

Description

Manage repositories in Quay.io

Table of Contents

Requirements

$ 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

Installation

Using Homebrew (OS X only)

Formula is available at koudaiii/homebrew-tools.

$ brew tap koudaiii/tools
$ brew install qucli

Precompiled binary

Precompiled binaries for Windows, OS X, Linux are available at Releases.

From source

To install, use go get:

$ go get -d github.com/koudaiii/qucli
$ cd $GOPATH/src/github.com/koudaiii/qucli
$ make deps
$ make install

Run in a Docker container

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

Usage

$ 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

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

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

Create repository in Quay

With --visibility option, you can public or private

$ qucli create koudaiii/test --visibility private
Created! quay.io/koudaiii/test

delete

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

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

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

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

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

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. '[email protected]'.
  --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

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

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

Options

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='[email protected]'.
--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

Development

Clone this repository and build using make.

$ go get -d github.com/koudaiii/qucli
$ cd $GOPATH/src/github.com/koudaiii/qucli
$ make

Contribution

  1. Fork (https://github.com/koudaiii/qucli/fork)
  2. Create a feature branch
  3. Commit your changes
  4. Rebase your local changes against the master branch
  5. Run test suite with the go test ./... command and confirm that it passes
  6. Run gofmt -s
  7. Create a new Pull Request

Author

koudaiii

License

MIT License