{"id":17618689,"url":"https://github.com/devopsctl/gitlabctl","last_synced_at":"2025-04-30T20:05:54.088Z","repository":{"id":57567758,"uuid":"133817373","full_name":"devopsctl/gitlabctl","owner":"devopsctl","description":"Cross platform Gitlab management cli written in Go. Download the executable with no dependencies!","archived":false,"fork":false,"pushed_at":"2022-08-22T22:21:46.000Z","size":3168,"stargazers_count":42,"open_issues_count":6,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-30T20:05:45.839Z","etag":null,"topics":["cli","devops","gitlab","gitlab-api","gitlab-cli","gitlab-ctl","go","golang"],"latest_commit_sha":null,"homepage":"https://devopsctl.github.io/gitlabctl","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devopsctl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-05-17T13:27:58.000Z","updated_at":"2024-06-15T13:15:28.000Z","dependencies_parsed_at":"2022-08-28T07:40:37.128Z","dependency_job_id":null,"html_url":"https://github.com/devopsctl/gitlabctl","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devopsctl%2Fgitlabctl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devopsctl%2Fgitlabctl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devopsctl%2Fgitlabctl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devopsctl%2Fgitlabctl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devopsctl","download_url":"https://codeload.github.com/devopsctl/gitlabctl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251774894,"owners_count":21641731,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","devops","gitlab","gitlab-api","gitlab-cli","gitlab-ctl","go","golang"],"created_at":"2024-10-22T20:00:28.386Z","updated_at":"2025-04-30T20:05:54.055Z","avatar_url":"https://github.com/devopsctl.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/devopsctl/gitlabctl.svg?branch=master)](https://travis-ci.org/devopsctl/gitlabctl)\n[![codecov](https://codecov.io/gh/devopsctl/gitlabctl/branch/master/graph/badge.svg)](https://codecov.io/gh/devopsctl/gitlabctl)\n[![Go Report Card](https://goreportcard.com/badge/github.com/devopsctl/gitlabctl)](https://goreportcard.com/report/github.com/devopsctl/gitlabctl)\n[![Waffle board](https://badge.waffle.io/devopsctl/gitlabctl.png?columns=all)](https://waffle.io/devopsctl/gitlabctl)\n\n# NO MAINTENANCE NOTICE \n\nI don't maintain this repository anymore. Feel free to fork if needed.\n\n\n# [`gitlabctl`](https://devopsctl.github.io/gitlabctl/)\n\nBe a rockstar and efficiently manage your team's gitlab.org or [self-hosted Gitlab](https://about.gitlab.com/installation/) projects, groups, users and other resources.\n\nTested with [__Gitlab 11.1__](https://about.gitlab.com/2018/07/22/gitlab-11-1-released/).\n\n## Getting Started\n\nComplete the [installation](#installation) guide below and then follow the [quickstart](#quickstart) guide.\n\nIf you are hooked, please visit the awesome [Project Github site](https://devopsctl.github.io/gitlabctl/) to read the full manual of each command.\n\nIf you just want to quickly check what are the available commands, go to [Gitlab Commands Available](#gitlab-commands-available) in this page.\n\n## Installation\n\nGet the download link of your preferred platform binary from [RELEASES](https://github.com/devopsctl/gitlabctl/releases).\n\n### OSX\n\n```bash\nGITLABCTL_BIN_DIR=$HOME/.gitlabctl/bin\n\nmkdir -p $GITLABCTL_BIN_DIR \u0026\u0026 curl -Lo gitlabctl \\\n https://github.com/devopsctl/gitlabctl/releases/download/v0.3.0/gitlabctl-darwin-amd64 \\\n \u0026\u0026 chmod +x gitlabctl \\\n \u0026\u0026 mv gitlabctl $GITLABCTL_BIN_DIR\n\nexport PATH=$PATH:$GITLABCTL_BIN_DIR\n\n# You can also append this export command in $HOME/.profile or similar SHELL file\n# to make sure it is included in your `$PATH` variable \n# automatically upon starting a new terminal session.\n```\n\n### Linux\n\n```bash\nGITLABCTL_BIN_DIR=$HOME/.gitlabctl/bin\n\nmkdir -p $GITLABCTL_BIN_DIR \u0026\u0026 curl -Lo gitlabctl \\\n https://github.com/devopsctl/gitlabctl/releases/download/v0.3.0/gitlabctl-linux-amd64 \\\n \u0026\u0026 chmod +x gitlabctl \\\n \u0026\u0026 mv gitlabctl $GITLABCTL_BIN_DIR\n\nexport PATH=$PATH:$GITLABCTL_BIN_DIR\n\n# You can also append this export command in $HOME/.profile or similar SHELL file\n# to make sure it is included in your `$PATH` variable \n# automatically upon starting a new terminal session.\n```\n\n### Windows\n\nDownload the gitlabctl-windows-amd64.exe file, rename it to gitlabctl.exe and add it to your Windows System Environment Variable `%PATH%`.\n\n### Auto Complete\n\nEnable auto complete for __bash__ or __zsh__ shell. ❤️\n\n```bash\n# follow the instructions from the command output\ngitlabctl completion -h\n```\n\n## Quickstart\n\n### Authenticating to Gitlab server\n\nUsing `gitlabctl login` to fetch personal access token\n\n```bash\ngitlabctl login\n\n\u003e\u003e Enter gitlab host url: http://localhost:10080\n\u003e\u003e Enter gitlab username: root\n\u003e\u003e Enter gitlab password: *****\n/Users/jb/.gitlabctl.yaml file has been created by login command\n```\n\n__Windows Users:__ password masking does not work in Git bash.\n\nUsing environment variables. See `gitlabctl -h`\n\n### Using the help commands\n\nUse __-h__ flag when possible. \n\n```bash\ngitlabctl [command] -h\n```\n\nor\n\n```bash\ngitlabctl [command] [subcommand] -h\n```\n\n### Usage Examples\n\nFetching resources with using `--output, -o` formatter flag.\n\n```bash\ngitlabctl get groups\n\n+----+------------------+------------------------------------------------+-----------+\n| ID |       PATH       |                      URL                       | PARENT ID |\n+----+------------------+------------------------------------------------+-----------+\n| 13 | Group1           | http://localhost:10080/groups/Group1           |         0 |\n| 14 | Group2           | http://localhost:10080/groups/Group2           |         0 |\n| 16 | Group1/SubGroup2 | http://localhost:10080/groups/Group1/SubGroup2 |        13 |\n| 15 | Group1/SubGroup1 | http://localhost:10080/groups/Group1/SubGroup1 |        13 |\n| 17 | Group2/SubGroup3 | http://localhost:10080/groups/Group2/SubGroup3 |        14 |\n| 18 | Group2/SubGroup4 | http://localhost:10080/groups/Group2/SubGroup4 |        14 |\n+----+------------------+------------------------------------------------+-----------+\n```\n\nView command outout in __json__.\n\n```bash\ngitlabctl get groups -o json\n\n[\n {\n  \"id\": 13,\n  \"name\": \"Group1\",\n  \"path\": \"Group1\",\n  \"description\": \"Updated by go test by id\",\n  \"visibility\": \"private\",\n  \"lfs_enabled\": false,\n  \"avatar_url\": \"\",\n  \"web_url\": \"http://localhost:10080/groups/Group1\",\n  \"request_access_enabled\": false,\n  \"full_name\": \"Group1\",\n  \"full_path\": \"Group1\",\n  \"parent_id\": 0,\n  \"projects\": null,\n  \"statistics\": null\n },\n {\n  \"id\": 14,\n  \"name\": \"Group2\",\n  \"path\": \"Group2\",\n  \"description\": \"\",\n  \"visibility\": \"private\",\n  \"lfs_enabled\": true,\n  \"avatar_url\": \"\",\n  \"web_url\": \"http://localhost:10080/groups/Group2\",\n  \"request_access_enabled\": false,\n  \"full_name\": \"Group2\",\n  \"full_path\": \"Group2\",\n  \"parent_id\": 0,\n  \"projects\": null,\n  \"statistics\": null\n },\n ]\n```\n\nView the command output in __yaml__.\n\n```bash\ngitlabctl get groups -o yaml\n\n- avatar_url: \"\"\n  description: Updated by go test by id\n  full_name: Group1\n  full_path: Group1\n  id: 13\n  lfs_enabled: false\n  name: Group1\n  parent_id: 0\n  path: Group1\n  projects: null\n  request_access_enabled: false\n  statistics: null\n  visibility: private\n  web_url: http://localhost:10080/groups/Group1\n- avatar_url: \"\"\n  description: \"\"\n  full_name: Group2\n  full_path: Group2\n  id: 14\n  lfs_enabled: true\n  name: Group2\n  parent_id: 0\n  path: Group2\n  projects: null\n  request_access_enabled: false\n  statistics: null\n  visibility: private\n  web_url: http://localhost:10080/groups/Group2\n```\n\nCreate gitlab resources.\n\n```bash\n# create a group\ngitlabctl new group devopsctl\n\n# create a project under devopsctl group\ngitlabctl new project gitlab-cli --namespace=devopsctl\n\n# create a new user with username john\ngitlabctl new user john --name=\"John Smith\" --password=\"john123456\" --email=john@example.com --reset-password \n```\n\n## Gitlab Commands Available \n### Authentication \n\n* [x] Authentication through environment variables.\n* [x] Authentication using `gitlabctl login` command.\n\n### Completion\n\n* [x] `completion --bash`\n* [x] `completion --zsh`\n\n### Group\n\n* [x] `get groups [flags]`\n* [x] `get groups --from-group [flags]`\n* [x] `describe group [group id or group path] [flags]`\n* [x] `new group [group name] [flags]`\n* [x] `delete group [group id or group path]`\n* [x] `edit group [group id or group path] [flags]`\n\n### Project\n\n* [x] `get projects [flags]`\n* [x] `get projects --from-group  [flags]`\n* [x] `describe project [project id or project path]`\n* [x] `new project [project name] [flags]`\n* [x] `edit project [project id or project path] [flags]`\n* [x] `delete project [project id or project path]`\n\n### Project/Repository Branch\n\n* [x] `get branch [project id or project path] [flags]`\n* [x] `describe branch [branch name] [--project] [flags]`\n* [x] `new branch [branch name] [--project] [flags]`\n* [x] `delete branch [branch name] [--project]`\n* [x] `edit branch [branch name] [--project] [--protect] [flags]`\n* [x] `edit branch [branch name] [--project] [--unprotect] [flags]`\n\n### Project/Repository Tags and Releases\n\n* [x] `get tags [project id or project path] [flags]`\n* [x] `describe tag [tag name] [--project] [flags]`\n* [x] `new tag [tag name] [--project] [flags]`\n* [x] `delete tag [tag name] [--project]`\n* [x] `new release [tag name] [--project] [flags]`\n* [x] `edit release [tag name] [--project] [flags]`\n\n### Project Hooks\n\n* [x] `get project-hooks [project id or project path] [flags]`\n* [x] `new project-hook [project id or project path] [flags]`\n* [x] `edit project-hook [hook id] [--project] [flags]`\n* [x] `delete project-hook [hook id] [--project]`\n\n### Users \n\n* [x] `get users [flags]`\n* [x] `describe user [user id or username]`\n* [x] `new user [username] [flags]`\n* [x] `delete user [user id or username]`\n* [x] `edit user [user id or username] [flags]`\n\n### Users SSH Keys \n\n* [x] `get ssh-keys [flags]`\n* [x] `new ssh-key [flags]`\n* [x] `delete ssh-key [flags]`\n\n### Members\n\n* [x] `get members --from-group [flags]`\n* [x] `get members --from-project [flags]`\n* [x] `describe member [username] --from-group [flags]`\n* [x] `describe member [username] --from-project [flags]`\n* [x] `new member [username] --from-group [flags]`\n* [x] `new member [username] --from-project [flags]`\n* [x] `delete member [username] --from-group`\n* [x] `delete member [username] --from-project`\n* [x] `edit member [username] --from-group [flags]`\n* [x] `edit member [username] --from-project [flags]`\n* [x] `delete all-members --from-project`\n\n## Contributing\n\nContributors are welcomed with love! Please read [CONTRIBUTING.md](./CONTRIBUTING.md) for the process for submitting pull requests to us.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevopsctl%2Fgitlabctl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevopsctl%2Fgitlabctl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevopsctl%2Fgitlabctl/lists"}