我在一台服务器上使用 Gitlab,并希望在主分支提交时将我的 git 存储库推送到另一台网络服务器。因此,当我推送网站的新版本时,生产服务器会更新。我知道这应该可以通过 gitlab 中的钩子来实现,但我无法找到确切的方法。尝试了以下指南http://danielmiessler.com/study/git/#website但它不是为与 gitlab 一起使用而编写的,所以我缺少部分。
我需要在生产网络服务器上做什么,然后我将钩子 URL 设置为什么?
这很奇怪,但是在设置 git 存储库并使用以下命令创建 post-receive 挂钩时:
echo "--initializing hook--"
cd ~/websites/testing
echo "--prepare update--"
git pull
echo "--update completed--"
Run Code Online (Sandbox Code Playgroud)
钩子确实运行了,但它永远无法正确运行 git pull :
6bfa32c..71c3d2a master -> master
--initializing hook--
--prepare update--
fatal: Not a git repository: '.'
Failed to find a valid git directory.
--update completed--
Run Code Online (Sandbox Code Playgroud)
所以我现在问自己,如何让钩子用 post-receive 更新克隆?
在这种情况下,运行进程的用户是相同的,它的所有内容都在用户文件夹中,所以我真的不明白......因为如果我手动进入
cd ~/websites/testing
git pull
Run Code Online (Sandbox Code Playgroud)
它工作没有任何问题......
对此的任何帮助将不胜感激
非常感谢
这对超级用户来说可能更好,但我认为作为交易工具,它可能是一个更好的主题。我经常发现在 vim 中编辑时退出,运行一些我正在测试的脚本,然后返回到 vim(是的,我意识到我可以使用 :!command 从 vim 运行东西)我只是想知道是否有保存文件时挂钩运行的方法(:w)?
我希望 Jenkins (1.561) 构建提交到 GitLab (6.7.5) 的合并(拉取)请求,由合并请求 Web 钩子触发。我有一个参数化构建,以及 Jenkins 插件“GitLab Merge Request Builder”(1.2.0)和“GitLab Hook”(1.0.0)。不幸的是,迁移到 Jenkins CI 并不是一个真正的选择。
只要变量、 和可用,合并请求构建器插件就能够构建合并请求。当插件轮询存储库本身时,这很有效,或者我使用手动有效负载(例如)触发构建,但我无法使用钩子执行此操作。gitlabMergeRequestIdgitlabTargetBranchgitlabSourceBranchcurl --data "gitlabMergeRequestId=3&so_on http://server_name/job/$JOB_NAME/buildWithParameters
使用 GitLab Hook 插件,我能够在 JSON 有效负载中获取必要的数据,但这些值具有“错误”的键:
gitlabMergeRequestId 是 idgitlabTargetBranch 是 target_branchgitlabSourceBranch 是 source_branch我已经尝试使用 GitLab Merge Request Builder 插件的要求和变量值来配置构建参数。不幸的是(并且可能是故意的),字段中的变量没有被替换,因此 Jenkins 正在寻找具有 id和类似分支值的合并请求。NameDefault ValueDefault Value${id}
我发现无法配置从 GitLab 发送的有效负载,并且 GitLab Hook 插件和 GitLab Merge Request Builder 插件使用的参数名称都没有配置选项。
我正在考虑编写一个小的 PHP 脚本来拦截和更改来自 POST 的有效负载,然后再将其传递给 Jenkins。虽然我确信这会奏效,但它确实看起来不必要地复杂。 …
我使用 GitLab 社区版 8.2 并想添加提交后挂钩。
我创建了具有权限的文件 path_to_project.git/custom_hooks/post-commit
$ ls -l1 custom_hooks/post-commit
-rwxr-xr-x 1 git git 45 Dec 14 21:31 custom_hooks/post-commit
Run Code Online (Sandbox Code Playgroud)
和内容
#!/bin/bash
echo "test custom" > /tmp/hook
Run Code Online (Sandbox Code Playgroud)
如此处所述:http : //doc.gitlab.com/ce/hooks/custom_hooks.html
但它不起作用(通过 Web 界面提交检查)。我也尝试过“正常”的 git 钩子放置(project.git/hooks/post-commit),但它也不起作用。
我有 2 个用户有问题
• git用户 - 用于 gitosis - 所以它是一个无密码用户,只能通过 root 访问...
•用户用户 - 我的文件所在的位置
所以我想做的是授予用户git权限以导航到这样的 luddico 文件夹
git@domain.me:~/respositories# cd /home/user/websites/domain.com
Run Code Online (Sandbox Code Playgroud)
然后在用户用户文件(任何文件/文件夹)中执行任何操作,这样我就可以例如
git@domain.com:/home/user/websites/domain.com# git pull
Run Code Online (Sandbox Code Playgroud)
因为实际上上面提到的操作返回:
error: cannot open .git/FETCH_HEAD: Permission denied
Run Code Online (Sandbox Code Playgroud)
所以当我要求执行这样的操作时,它会请求 git 的密码,顺便说一句,没有任何密码,或者立即取消它
所以,我怎么可以配置用户的git有像在用户root /管理员权限的用户 ,而不需要提供命令之前任何密码或sudo?就像如果它是根一样
提前致谢
在文件通过(chrooted)SFTP 成功上传后,我将如何运行脚本?
我使用 PureFTP 处理标准 FTP 连接
http://linux.die.net/man/8/pure-uploadscript
我正在运行 Debian Squeeze
我想向文件系统添加一个钩子,这样每当从磁盘读取特定文件时我就可以执行一个进程。*nix 是否提供了创建这样一个钩子的方法?(我有root权限)
我想将多个接收后挂钩脚本添加到我自己的服务器上的 git 存储库中。例如:触发CI,发布到slack。
如何添加多个脚本?