Skip to content

huhouhua/glctl

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

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

InstallationFeaturesQuick-StartExamplesLicense

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 (huhouhuam@outlook.com)

🧑‍💻 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.

About

GitLab CLI tool, designed with a declarative API 🚀🚀

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors 2

  •  
  •