我有一个git repo,其中一组开发人员和我正在合作开发项目代码。偶尔,我们想将git repo复制到具有外部IP地址(w.x.y.z
)的VPS(设置为Linux服务器)。
我可以进入SFTP客户端并将文件夹层次结构向上导航到服务器根目录,然后向下导航到/ var / www /(服务器Web根目录)以删除我的文件但我想部署到服务器而是通过命令行。
我的目标是将Linux服务器配置为远程git目录,但不知道如何导航文件层次结构让git识别远程分支repo需要进入/ var / www /。 / p>
简短搜索已发现git remote add origin username@w.x.y.z
,然后使用git push origin
。
似乎以这种方式连接到w.x.y.z
会将我放在'用户名'的主文件夹中,而不是通过浏览器访问时的根网站目录(/ var / www /)。
有没有人能够深入了解如何设置远程目录以将git repo部署到“生产”服务器?
答案 0 :(得分:1)
你似乎是以一种相当不明显的方式做这件事。我想你想要做的是将git repo复制到其他地方(vps服务器)。实现此目标的标准方法是git clone
。
在/var/www/
目录或其相应的子目录中,执行:
git clone [URL-FROM-GITHUB]
这会将git存储库克隆到您的VPS。然后,您可以使用
更新它git pull
可以用
编写脚本ssh my.vps.server 'cd /var/www/whatever && git pull'
但是,通常你不希望整个项目都放在'/ var / www / ...'中,因为这也会把你不想在那里部署的东西放在那里,例如: .git
目录。因此,最好在您的主目录中克隆repo,并使用rsync
删除您不想要的文件,在/var/www/
针对您的存储库的--exclude
目录下创建一个小脚本,或只是rsync
- 回购的子目录。
答案 1 :(得分:0)
可以肯定的是,这是发布此内容的正确位置。我正在Jenkins POC上班。目标是要做两件事:
我发现,如果我使用正确的权限提前创建目录,一切都会很好。如果不这样做,我会得到我认为是预期的错误:
Building in workspace /var/lib/jenkins/workspace/Git POC
java.nio.file.AccessDeniedException: /opt/sysops
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:384)
at java.nio.file.Files.createDirectory(Files.java:674)
at java.nio.file.Files.createAndCheckIsDirectory(Files.java:781)
at java.nio.file.Files.createDirectories(Files.java:767)
at hudson.FilePath.mkdirs(FilePath.java:3272)
at hudson.FilePath.access$1300(FilePath.java:212)
at hudson.FilePath$Mkdirs.invoke(FilePath.java:1253)
at hudson.FilePath$Mkdirs.invoke(FilePath.java:1249)
at hudson.FilePath.act(FilePath.java:1077)
at hudson.FilePath.act(FilePath.java:1060)
at hudson.FilePath.mkdirs(FilePath.java:1245)
at hudson.plugins.git.GitSCM.createClient(GitSCM.java:810)
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1180)
at hudson.scm.SCM.checkout(SCM.java:504)
at hudson.model.AbstractProject.checkout(AbstractProject.java:1208)
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499)
at hudson.model.Run.execute(Run.java:1819)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
Finished: FAILURE
我知道我可以使用ansible来强制文件夹的创建和所有权,但是不确定是否应该走这条路,或者是否有办法使它成为jenkins中POC项目的一部分(这显然意味着要提供jenkins用户的sudo特权即可运行mkdir)。任何想法或反馈将不胜感激。