Sign inSign up

huhouhua/glctl

By huhouhua

•Updated 8 months ago

Image
0

671

huhouhua/glctl repository overview

⁠GitLab CLI

glctl is a powerful GitLab command line tool. It provides a declarative API to manage GitLab resources, making it easier for you to perform common GitLab operations from the terminal

Installation⁠ ā˜ Features⁠ ā˜ Quick-Start⁠ ā˜ Examples⁠ ā˜ License⁠

Workflow ci Go Report Card release Docker Pulls License GoDoc Test Coverage

Using environment variables for authorization

* Basic Authentication (if using a username and password)
    - GITLAB_USERNAME
    - GITLAB_PASSWORD
    - GITLAB_URL

* Private Token (if using a private token)
    - GITLAB_PRIVATE_TOKEN
    - GITLAB_URL

* OAuth Token (if using an oauth token)
    - GITLAB_OAUTH_TOKEN
    - GITLAB_URL
    
Basic Commands:
  get         Display one or many resources
  edit        Edit a resource on the server
  delete      Delete resources by file names, stdin, resources and names, or by resources
  create      Create a resource from a file or from stdin

Authorization Commands:
  login       Login to gitlab
  logout      logout current gitlab

Advanced Commands:
  replace     Replace a repository file by file name or stdin.

 all formats are accepted. If replacing an existing repository file, the
complete repository file spec must be provided. This can be obtained by

  $ glctl get files PROJECT --path=my.yml --ref=BRANCH --raw

Settings Commands:
  completion  Output shell completion code for the specified shell (bash, zsh,
fish, or powershell)

Other Commands:
  version     Print the client and server version information

⁠🤘  Features

  • Manage GitLab projects, issues, merge requests, and more
  • Authenticate and manage GitLab sessions
  • Create, get, edit, and delete GitLab resources
  • Operate on project branch files
  • Shell completion support

⁠🐳  Docker Container

⁠Release
docker pull huhouhua/glctl
docker run \
  -e GITLAB_URL=https://gitlab.example.com \
  -e GITLAB_PRIVATE_TOKEN=305e146a4aa23fb4021a4f162102251e85f651a058a34fb2c27d633617cf8877 \
  huhouhua/glctl get projects

šŸ”” Note: Above examples use private token authentication by default. See environment⁠ for details. To run glctl against other compatible servers, start the container this way:

docker run -it --entrypoint=/bin/sh huhouhua/glctl
⁠🦊 GitLab CI

When using the Docker container in GitLab CI, you must set the entrypoint to an empty string⁠.

deploy:
  image:
    name: huhouhua/glctl
    entrypoint: ['']
  stage: deploy
  before_script:
    - export GITLAB_URL=https://gitlab.example.com
    - export GITLAB_PRIVATE_TOKEN=305e146a4aa23fb4021a4f162102251e85f651a058a34fb2c27d633617cf8877
  script:
    - glctl get projects

ā šŸ“¦Ā  Installation

ā šŸ“ From Binary

Download the appropriate version for your platform from the releases page⁠.

ā šŸ› ļø From Source
  • compile glctl and place it in _output/
git clone https://github.com/huhouhua/glctl.git
cd glctl
make build

ā šŸš€Ā  Quick Start

ā šŸ“„Ā Usage
glctl <command> <subcommand> [flags]
ā šŸ” Authentication
  • start interactive login
glctl login https://gitlab.example.com
  • start interactive Login by username
glctl login https://gitlab.example.com --username myname
  • Login by specifying username and password
glctl login https://gitlab.example.com --username myname --password mypassword
  • authenticate with private token and hostname
export GITLAB_URL=https://gitlab.example.com
export GITLAB_PRIVATE_TOKEN=305e146a4aa23fb4021a4f162102251e85f651a058a34fb2c27d633617cf8877
  • authenticate with oauth token and hostname
export GITLAB_URL=https://gitlab.example.com
export GITLAB_OAUTH_TOKEN=aefb8b4e0895799aa60cf50eb8bcd9ae1fecf08fb6cc8249238219067e5aa926
  • Logging in using environment variables (Not recommended for shared environments)
export GITLAB_URL=https://gitlab.example.com
export GITLAB_USERNAME=myname
export GITLAB_PASSWORD=mypassword

ā šŸ„™Ā  Examples

  • List your groups
glctl get groups
  • List your projects:
glctl get projects
  • List branches of group1/project1
glctl get branchs group1/project1
  • Create a develop branch from the master branch in the group1/project1 project
glctl create branch develop --project=group1/project1 --ref=master
⁠🄪 Available Commands
  • login - Authenticate with GitLab
  • logout - Log out from GitLab
  • create - Create new GitLab resources (projects, issues, merge requests, etc.)
  • get - Get information about GitLab resources
  • edit - Edit existing GitLab resources
  • delete - Delete GitLab resources
  • replace - Replace existing GitLab resources
  • version - Display version information
  • completion - Generate shell completion scripts
ā šŸ—’ļøĀ Logged in user authorization file

Files are stored in $HOME/.glctl.yaml example:

access_token: 305e146a4aa23fb4021a4f162102251e85f651a058a34fb2c27d633617cf8877
created_at: 1.748339041e+09
host_url: https://gitlab.example.com
refresh_token: aefb8b4e0895799aa60cf50eb8bcd9ae1fecf08fb6cc8249238219067e5aa926
scope: api
token_type: Bearer
user_name: root

⁠🧠 TODOs

  • This cli tool is still in the development stage, and most of the resources are not completed. Everyone contribute is very much needed. šŸ™‹ā€ā™‚ļø
  • Declarative resources are still in the design stage

ā šŸ¤Ā Issues

If you have an issue: report it on the issue tracker⁠

ā šŸ‘¤Ā Author

Kevin Berger ([email protected]⁠)

ā šŸ§‘ā€šŸ’»Ā Contributing

Contributions are always welcome. For more information, check out the contributing guide⁠

ā šŸ“˜Ā  License

Licensed under the Apache License 2.0. See LICENSE⁠ for details.

Tag summary

Content type

Image

Digest

sha256:5acd80e8a…

Size

12.6 MB

Last updated

8 months ago

docker pull huhouhua/glctl:0.0.6