我使用 rake 任务为 GitLab 6.8.2 创建备份。
gitlab-rake gitlab:backup:create
Run Code Online (Sandbox Code Playgroud)
在/etc/gitlab/gitlab.rb我添加了以下行:
gitlab_rails['backup_keep_time'] = 60
Run Code Online (Sandbox Code Playgroud)
这应该修剪超过 60 秒的备份。我的期望是,gitlab:backup:create如果 60 秒过去了,第二次运行将删除第一个备份。虽然输出中的最后一行是
删除旧备份...跳过
如何配置 GitLab 以实际删除旧备份?
我正在努力访问我的 Jenkins 管道中的 GIT 变量
我需要知道在管道的某个阶段的某些 bash 代码中检查了哪个 GIT 分支。我将使用它来创建不同的输出文件名。我的管道是声明性的,而不是脚本化的,我使用的是 Jenkins 2.150.1
我尝试了所有可以在网上找到的东西,但大多是不完整的代码或脚本管道。或者干脆我不能把这些信息放在一起。
给我花多少时间,如果有一个使用声明性管道的完整工作示例会很好。
这是我到目前为止尝试过的:
#1
运行 git inside sh,但 Jenkins 检出提交,而不是分支,导致分离头
#2
从 shell 中查找环境变量,但没有设置与 GIT 相关的变量。这个片段
steps {
sh 'echo $GIT_BRANCH'
}
Run Code Online (Sandbox Code Playgroud)
总是返回空。然后我尝试了 Groovy:
steps {
echo "${env.GIT_BRANCH}"
}
Run Code Online (Sandbox Code Playgroud)
打印null。
#3
在“全局变量参考”中有一段说:
SCM-specific variables such as GIT_COMMIT are not automatically defined as environment variables; rather you can use the return value of the checkout step.
Run Code Online (Sandbox Code Playgroud)
我在网上搜索了如何做到这一点,并将此代码放在一起:
pipeline {
stages {
stage('Build') {
steps {
def …Run Code Online (Sandbox Code Playgroud) 我多年来一直是 SVN 的用户,我不能说我对此非常满意。几天前,我的搭档让我看一看 git,说“它具有更好的性能,更容易合并和分支”。
我一直在阅读一些 git 与 SVN 比较文章,如果人们可以总结使用这两种版本控制系统的优缺点,我会很高兴。
现在我正在调查那些从一个系统切换到另一个系统并听取主观意见的人。
我自己知道我真的很喜欢 SVN 的工作方式,有一个人们可以从中结帐的中央存储库,知道我可以从中部署一个实时开发副本和一个实时生产副本,但有时我们会为排序冲突或其他错误而头疼,每次我们需要比较或查看文件的历史记录时,我们都需要处理网络延迟。
另一方面,拥有分布式平台听起来也很头疼,您如何控制访问?你有一个可以从中推送和更新的中央存储库吗?
感谢您对这个问题有更多的了解。
我一直在考虑版本控制文件系统。这是一个杀手级功能,我看过 Wayback、ext3cow、zfs、fuse 解决方案,或者只是 cvs/svn/git 覆盖。
我认为 ext3cow 是满足我要求的模型。透明、高效,但我可以不用额外的ls abc@timestamp功能。只要我以某种方式对我的文件进行自动化、透明的版本控制。
它可以是瞬时的,也可以基于 10 秒、30 秒、1 米、5 米、15 米等间隔的快照。只是可以有效处理给定目录中各种大小的数千个文件的东西,大多数文件很小,但也有一些超过 100m 到 1gb。
ZFS 并不是一个真正的选项,因为我在 linux 上(并且不想通过保险丝使用它,因为我已经有一个我想要版本的 ext3 设置,而不是新的东西)。
有哪些解决方案?
我们在 .server-1 中有一个文件的中央存储库/srv/www。然后我们也有 N 台服务器。我们希望 server-1 能够/srv/www尽可能快速有效地将其文件部署到所有服务器。
是否有类似 rsync 的东西,但不是指定单个目标,而是指定目标集群(N 个服务器)?
我在想git可能有用,但是我们也可以指定多个遥控器来推送吗?
假设 N 个服务器最终可能达到数百个,最好的解决方案是什么。
我一直在拼命尝试使用 git-http-backend 通过“smart-http”模式推动 git 工作。然而,经过数小时的测试和故障排除后,我仍然
error: Cannot access URL http://localhost/git/hello.git/, return code 22
fatal: git-http-push failed`
Run Code Online (Sandbox Code Playgroud)
我使用的是最新版本的 Ubuntu (12.04)、Apache2 (2.2.22) 和 Git (1.7.9.5) 并遵循了 Internet 上的不同教程,例如http://www.parallelsymmetry.com/howto/git .JSP。
我的 VHost 文件目前看起来像这样:
<VirtualHost *:80>
SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
DocumentRoot /var/www/git
ScriptAliasMatch \
"(?x)^/(.*?)\.git/(HEAD | \
info/refs | \
objects/info/[^/]+ | \
git-(upload|receive)-pack)$" \
/usr/lib/git-core/git-http-backend/$1/$2
<Directory /var/www/git>
Options +ExecCGI +SymLinksIfOwnerMatch -MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我已将/var/www/git文件夹的所有权更改root.www-data为我的测试存储库,并通过执行git config http.receivepack …
如果我使用 gitolite 之类的东西来处理访问控制,authorized_keys 的扩展性如何?意思是如果我说 50,000 个用户,性能会是什么样的(我猜不是很好)。有哪些替代方案?
更新: 我决定自己做一些测试(我本来应该做的)。我编写了一个简单的脚本来生成 SSH 密钥并将它们添加到一个 authorized_keys 文件中。我的电脑没有那么快,所以我只生成了 8,061 个密钥,然后将自己的密钥添加到最后,文件最终为 3.1MB。然后我添加了一个带有一个文件的 git 存储库并运行了 git clone 三次:
With 8,061 keys (Mine is at the end of the file)
real 0m0.442s
real 0m0.447s
real 0m0.458s
With just a single key:
real 0m0.248s
real 0m0.264s
real 0m0.255s
Run Code Online (Sandbox Code Playgroud)
性能比我想象的要好得多。对于 50,000+ 的一大组密钥,我仍然对任何可能更快更有效的替代方案非常感兴趣。
我在使用 Gitlab 时遇到问题。我使用以下指南来安装和配置 Gitlab https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md。安装似乎进行得很顺利。Web 应用程序似乎运行良好。但是我无法克隆、拉、推,基本上我基本上不能使用 Gitlab。尝试通过 SSH 进行克隆时,我看到 HTTP 和权限被拒绝的 403 错误。
我已确保在 Windows 和 OS X 上正确设置了我的私钥。我可以在服务器上看到公钥。我在 ~/.ssh.config 的配置文件中添加了以下内容
Host {hostname}
User git
Hostname {hostname}
PreferredAuthentications publickey
IdentityFile C:/Users/{username}/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
这是我在 /var/log/secure 中看到的
Jan 14 17:31:48 dev_version_control sshd[3696]: Connection closed by 192.168.17.113
Jan 14 17:32:18 dev_version_control sshd[3700]: Connection closed by 192.168.17.113
Run Code Online (Sandbox Code Playgroud)
在/var/log/message当我试图使用Git或ssh没作用
我不知道从这里去哪里。有什么建议?
我不知道您所说的使用 git 用户名的 SSH 是什么意思。我使用的指南没有为 git 用户创建密码,并声明该用户不能用于登录。
在我们的 Ubuntu 服务器中,我们能够以 Nginx 用户的身份进行克隆,/usr/share/nginx/www该用户具有www-data:www-data 所有权,但会收到警告
“警告:无法访问'/root/.config/git/attributes':权限被拒绝”
我们正在执行命令 sudo -u www-data git clone <repo>.
使用 sudo 我们会收到此警告,否则它可以正常工作。
我们能够以 root 用户身份进行克隆并且没有问题。
.gitconfig 仅位于 root 中,请查看内容:
root@geo:~# cat /root/.gitconfig
[user]
name = pc_user
email = pcgeopc@gmail.com
root@geo:~#
Run Code Online (Sandbox Code Playgroud)
任何人都可以请帮助我们。
我们尝试了各种选项,例如/root/.config/直接手动创建和更改权限等。但没有任何效果。任何人都可以帮我解决这个问题。
也请看这个:
root@geo:/setup/test# ll /setup/
total 16
drwxr-xr-x 4 www-data www-data 4096 Oct 9 00:14 ./
drwxr-xr-x 24 root root 4096 Oct 9 00:14 ../
drwxr-xr-x 3 www-data www-data 4096 Oct 9 00:14 test/
root@geo:/setup/test# sudo -u www-data …Run Code Online (Sandbox Code Playgroud) 我无法以某种方式配置 git 存储库 url,Jenkins 可以访问它。
在“项目 > 配置 > 源代码管理”下,我将存储库 URL 设置为“git@store:repositories/testproject.git”
我收到此错误:
Failed to connect to repository : Command "/usr/bin/git -c core.askpass=true ls-remote -h git@store:repositories/testproject.git HEAD" returned status code 128:
stdout:
stderr: Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Run Code Online (Sandbox Code Playgroud)
使用该 URL 的访问适用于 shell:
jenkins@dilbert:~$ /usr/bin/git -c core.askpass=true ls-remote -h git@store:repositories/testproject.git
git@store's password:
4fd35a4f528e2f2921a52cfd03918b7cbde3d253 …Run Code Online (Sandbox Code Playgroud) git ×10
gitlab ×3
jenkins ×2
ssh ×2
ubuntu ×2
apache-2.2 ×1
backup ×1
deployment ×1
ext3 ×1
filesystems ×1
gitolite ×1
http ×1
repository ×1
rsync ×1
svn ×1
versioning ×1