如何通过命令行创建GitLab项目?求对应GitHub脚本的curl命令
移植到GitLab的Curl命令及脚本修改方案
GitLab的API在认证方式、端点和部分参数命名上和GitHub有差异,我帮你把原来的仓库创建脚本改成适配GitLab的版本:
修改后的Bash脚本(GitLab版本)
#!/bin/bash # Create new GitLab repo from the command line. # usage=> ./create_gitlab.sh "name" "account" "token" GITLABUSER=$2 TOKEN=$3 NAME=$1 DESC="Blog of ${1}" # 若使用自托管GitLab,替换为你的实例地址,比如https://your-gitlab-instance.com/api/v4/projects curl -s -H "PRIVATE-TOKEN: ${TOKEN}" https://gitlab.com/api/v4/projects -d "{\"name\": \"${NAME}\", \"description\": \"${DESC}\", \"visibility\": \"public\", \"issues_enabled\": true, \"packages_enabled\": true, \"wiki_enabled\": false, \"pages_enabled\": true}" # echo "done"
关键差异说明
- 认证方式:GitLab API用
PRIVATE-TOKEN请求头做认证,替代了GitHub的Basic Auth(-u参数) - API端点:GitLab创建项目的接口是
/api/v4/projects,GitHub则是/user/repos - 参数映射:
- GitHub的
private: false→ GitLab的visibility: "public"(可选值还有private、internal) - GitHub的
has_issues: true→ GitLab的issues_enabled: true - GitHub的
has_downloads: true→ GitLab的packages_enabled: true(如果仅需要允许源码下载,GitLab默认开启,这个参数主要控制包仓库;若要完全对齐原逻辑可以保留) - GitHub的
has_wiki: false→ GitLab的wiki_enabled: false - GitHub的
has_pages: true→ GitLab的pages_enabled: true
- GitHub的
对应的Ruby方法修改
把原来调用GitHub脚本的逻辑换成新的GitLab脚本即可:
def create_gitlab_repo() # new project repo on GitLab system("cd scripts && chmod +x ./create_gitlab.sh") system("cd scripts && ./create_gitlab.sh #{self.username} #{Rails.configuration['gitlabusername']} #{ENV['gitlab_token']}") end
注意:如果是自托管GitLab,记得替换curl命令里的API域名;同时要确保你的GitLab Token拥有api权限(创建项目必须具备该权限)。
内容的提问来源于stack exchange,提问作者Hfyuu
相关产品推荐
相关产品推荐

