I don't maintain this repository anymore. Feel free to fork if needed.
Be a rockstar and efficiently manage your team's gitlab.org or self-hosted Gitlab projects, groups, users and other resources.
Tested with Gitlab 11.1.
Complete the installation guide below and then follow the quickstart guide.
If you are hooked, please visit the awesome Project Github site to read the full manual of each command.
If you just want to quickly check what are the available commands, go to Gitlab Commands Available in this page.
Get the download link of your preferred platform binary from RELEASES.
GITLABCTL_BIN_DIR=$HOME/.gitlabctl/bin
mkdir -p $GITLABCTL_BIN_DIR && curl -Lo gitlabctl \
https://github.com/devopsctl/gitlabctl/releases/download/v0.3.0/gitlabctl-darwin-amd64 \
&& chmod +x gitlabctl \
&& mv gitlabctl $GITLABCTL_BIN_DIR
export PATH=$PATH:$GITLABCTL_BIN_DIR
# You can also append this export command in $HOME/.profile or similar SHELL file
# to make sure it is included in your `$PATH` variable
# automatically upon starting a new terminal session.
GITLABCTL_BIN_DIR=$HOME/.gitlabctl/bin
mkdir -p $GITLABCTL_BIN_DIR && curl -Lo gitlabctl \
https://github.com/devopsctl/gitlabctl/releases/download/v0.3.0/gitlabctl-linux-amd64 \
&& chmod +x gitlabctl \
&& mv gitlabctl $GITLABCTL_BIN_DIR
export PATH=$PATH:$GITLABCTL_BIN_DIR
# You can also append this export command in $HOME/.profile or similar SHELL file
# to make sure it is included in your `$PATH` variable
# automatically upon starting a new terminal session.
Download the gitlabctl-windows-amd64.exe file, rename it to gitlabctl.exe and add it to your Windows System Environment Variable %PATH%
.
Enable auto complete for bash or zsh shell. ❤️
# follow the instructions from the command output
gitlabctl completion -h
Using gitlabctl login
to fetch personal access token
gitlabctl login
>> Enter gitlab host url: http://localhost:10080
>> Enter gitlab username: root
>> Enter gitlab password: *****
/Users/jb/.gitlabctl.yaml file has been created by login command
Windows Users: password masking does not work in Git bash.
Using environment variables. See gitlabctl -h
Use -h flag when possible.
gitlabctl [command] -h
or
gitlabctl [command] [subcommand] -h
Fetching resources with using --output, -o
formatter flag.
gitlabctl get groups
+----+------------------+------------------------------------------------+-----------+
| ID | PATH | URL | PARENT ID |
+----+------------------+------------------------------------------------+-----------+
| 13 | Group1 | http://localhost:10080/groups/Group1 | 0 |
| 14 | Group2 | http://localhost:10080/groups/Group2 | 0 |
| 16 | Group1/SubGroup2 | http://localhost:10080/groups/Group1/SubGroup2 | 13 |
| 15 | Group1/SubGroup1 | http://localhost:10080/groups/Group1/SubGroup1 | 13 |
| 17 | Group2/SubGroup3 | http://localhost:10080/groups/Group2/SubGroup3 | 14 |
| 18 | Group2/SubGroup4 | http://localhost:10080/groups/Group2/SubGroup4 | 14 |
+----+------------------+------------------------------------------------+-----------+
View command outout in json.
gitlabctl get groups -o json
[
{
"id": 13,
"name": "Group1",
"path": "Group1",
"description": "Updated by go test by id",
"visibility": "private",
"lfs_enabled": false,
"avatar_url": "",
"web_url": "http://localhost:10080/groups/Group1",
"request_access_enabled": false,
"full_name": "Group1",
"full_path": "Group1",
"parent_id": 0,
"projects": null,
"statistics": null
},
{
"id": 14,
"name": "Group2",
"path": "Group2",
"description": "",
"visibility": "private",
"lfs_enabled": true,
"avatar_url": "",
"web_url": "http://localhost:10080/groups/Group2",
"request_access_enabled": false,
"full_name": "Group2",
"full_path": "Group2",
"parent_id": 0,
"projects": null,
"statistics": null
},
]
View the command output in yaml.
gitlabctl get groups -o yaml
- avatar_url: ""
description: Updated by go test by id
full_name: Group1
full_path: Group1
id: 13
lfs_enabled: false
name: Group1
parent_id: 0
path: Group1
projects: null
request_access_enabled: false
statistics: null
visibility: private
web_url: http://localhost:10080/groups/Group1
- avatar_url: ""
description: ""
full_name: Group2
full_path: Group2
id: 14
lfs_enabled: true
name: Group2
parent_id: 0
path: Group2
projects: null
request_access_enabled: false
statistics: null
visibility: private
web_url: http://localhost:10080/groups/Group2
Create gitlab resources.
# create a group
gitlabctl new group devopsctl
# create a project under devopsctl group
gitlabctl new project gitlab-cli --namespace=devopsctl
# create a new user with username john
gitlabctl new user john --name="John Smith" --password="john123456" --email=john@example.com --reset-password
- Authentication through environment variables.
- Authentication using
gitlabctl login
command.
-
completion --bash
-
completion --zsh
-
get groups [flags]
-
get groups --from-group [flags]
-
describe group [group id or group path] [flags]
-
new group [group name] [flags]
-
delete group [group id or group path]
-
edit group [group id or group path] [flags]
-
get projects [flags]
-
get projects --from-group [flags]
-
describe project [project id or project path]
-
new project [project name] [flags]
-
edit project [project id or project path] [flags]
-
delete project [project id or project path]
-
get branch [project id or project path] [flags]
-
describe branch [branch name] [--project] [flags]
-
new branch [branch name] [--project] [flags]
-
delete branch [branch name] [--project]
-
edit branch [branch name] [--project] [--protect] [flags]
-
edit branch [branch name] [--project] [--unprotect] [flags]
-
get tags [project id or project path] [flags]
-
describe tag [tag name] [--project] [flags]
-
new tag [tag name] [--project] [flags]
-
delete tag [tag name] [--project]
-
new release [tag name] [--project] [flags]
-
edit release [tag name] [--project] [flags]
-
get project-hooks [project id or project path] [flags]
-
new project-hook [project id or project path] [flags]
-
edit project-hook [hook id] [--project] [flags]
-
delete project-hook [hook id] [--project]
-
get users [flags]
-
describe user [user id or username]
-
new user [username] [flags]
-
delete user [user id or username]
-
edit user [user id or username] [flags]
-
get ssh-keys [flags]
-
new ssh-key [flags]
-
delete ssh-key [flags]
-
get members --from-group [flags]
-
get members --from-project [flags]
-
describe member [username] --from-group [flags]
-
describe member [username] --from-project [flags]
-
new member [username] --from-group [flags]
-
new member [username] --from-project [flags]
-
delete member [username] --from-group
-
delete member [username] --from-project
-
edit member [username] --from-group [flags]
-
edit member [username] --from-project [flags]
-
delete all-members --from-project
Contributors are welcomed with love! Please read CONTRIBUTING.md for the process for submitting pull requests to us.