SkillAgentSearch skills...

Glctl

GitLab CLI tool, designed with a declarative API πŸš€πŸš€

Install / Use

/learn @huhouhua/Glctl
About this skill

Quality Score

0/100

Category

Operations

Supported Platforms

Universal

README

<div align="center"> <h1>GitLab CLI</h1> <p>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</p> </div>

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

<p align="center"> <a href="#-installation">Installation</a> ❘ <a href="#-features">Features</a> ❘ <a href="#-quick-start">Quick-Start</a> ❘ <a href="#-examples">Examples</a> ❘ <a href="#-license">License</a> </p>
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@gmail.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.

View on GitHub
GitHub Stars7
CategoryOperations
Updated5d ago
Forks2

Languages

Go

Security Score

90/100

Audited on Mar 27, 2026

No findings