将文件从master分支从Gitlab复制到我的服务器

时间:2019-06-12 10:57:01

标签: php python continuous-integration gitlab

很抱歉,我真的不知道如何问这个问题。我正在一个gitlab.com上托管的项目上工作,我想编写一个在服务器上运行的脚本,以从项目的master分支中获取所有文件,然后将其复制到特定的文件夹中,而不必手动执行。

我的问题是:如何使用gitlab的API和phppython这样的语言来获取此文件,而无需在服务器上设置git项目?

我看了看文档并制作了所有东西来获取ssh密钥,但我找不到如何简单地从master分支获取文件的方法。

我不需要完整的代码,只需要正确的方法即可

我希望我的问题不要太含糊。我先谢谢你

2 个答案:

答案 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