很抱歉,我真的不知道如何问这个问题。我正在一个gitlab.com
上托管的项目上工作,我想编写一个在服务器上运行的脚本,以从项目的master分支中获取所有文件,然后将其复制到特定的文件夹中,而不必手动执行。
我的问题是:如何使用gitlab的API和php
或python
这样的语言来获取此文件,而无需在服务器上设置git项目?
我看了看文档并制作了所有东西来获取ssh密钥,但我找不到如何简单地从master分支获取文件的方法。
我不需要完整的代码,只需要正确的方法即可
我希望我的问题不要太含糊。我先谢谢你
答案 0 :(得分:0)
您可以使用ftp git https://github.com/git-ftp/git-ftp
它是很好的解决方案,可同时启动gitlab和服务器。
或者您可以使用gitlab管道,使用gitlab凭据在服务器上创建.gitlab-ci.yml文件,以将服务器连接到gitlab项目 https://docs.gitlab.com/ee/ci/README.html
答案 1 :(得分:0)
上述问题可以通过使用python解决:
您可以通过将所有存储库克隆到服务器中的特定位置来完成此操作:
第1步)获取您要克隆的gitlab中所有存储库的列表,在此我们将运行循环
获取所有存储库:
gl = gitlab.Gitlab(git_url, private_token=your private token)
all_projects = gl.projects.list(all=True)
length=len(all_projects)
i=0
while i < length:
project = gl.projects.get(all_projects[i].id)
print(project.name)
i=i+1
步骤2):将每个存储库一个一个地克隆到该位置:
import pygit2
callbacks =
pygit2.RemoteCallbacks(pygit2.UserPass("your_private_token", 'x-oauth-basic'))
repoClone = pygit2.clone_repository("https://gitlab.com/test/testing.git", location_to_clone,checkout_branch=master,callbacks=callbacks)
完整代码:
import pygit2
import gitlab
gl = gitlab.Gitlab(git_url, private_token=your private token)
all_projects = gl.projects.list(all=True)
length=len(all_projects)
i=0
callbacks =
pygit2.RemoteCallbacks(pygit2.UserPass("your_private_token", 'x-oauth-basic'))
while i < length:
project = gl.projects.get(all_projects[i].id)
print(project.name)
repoClone = pygit2.clone_repository("https://gitlab.com/test/"+project.name+".git", location_to_clone,checkout_branch=master,callbacks=callbacks)
i=i+1