下午好。
我最近开始使用gitlab,试图弄清楚它是否符合我们在UX管理团队的需求。
我在云端创建了3台服务器进行测试,如下所示:
Server_1 Gitlab和Gitlab-CI
Server_2 Gitlab runners
Server_3 Scripts repository
我们的想法是将以前的脚本存储库推送到Gitlab,然后控制对它们所做的任何更改和安全问题。
我已经在服务器1上安装了Gitlab-Omnibus并使用他的项目Testproject1创建了用户“test1”,之后我将一些测试脚本推送到项目中。 在此之后,我在Server_2上安装了运行程序并针对Gitlab进行了配置,创建了一个运行器,注册它并为Server3配置了ssh密钥
这里的问题如下,用户test1对Gitlab的Testproject1上的任何脚本所做的任何更改都会触发运行器构建并将整个项目推送到/ home / user / build /“number”/ number / Testproject1 / 执行这些操作的脚本位于该位置,名称为“Testproject1.sh”,其中包含如下代码:
if [[ -d $'builds/6461cd4f/0/test1/Testproject1/.git' ]]; then
echo $'\x1b[32;1mFetching changes...\x1b[0;m'
cd $'builds/6461cd4f/0/test1/Testproject1'
.....等等。
我们不希望将存储库部署在用户的家中,我认为使用所需的部署路径和命令配置文件“.gitlab-ci.yml”就足够了,但我唯一能做到的就是那个每次在用户主页和.yml文件中指定的路径上部署存储库。
任何人都知道如何修改此行为?有没有任何环境变量或任何冷解决这个问题?或者我使用错误的CI功能?
顺便说一下,跑步者的yml文件如下:
job:
script:
- cd /opt/gitlab/aplicacion1
- git init .
- git add .
- git pull origin master
- pwd
- ls -ltra
tags:
- master
提前致谢
答案 0 :(得分:1)
你可以在gitlab-runner的配置中更改builds_dir
gitlab-runner的默认builds_dir是$ HOME / $ version / build gitlab-link
示例:强>
/etc/gitlab-runner/config.toml:
[[runners]]
...
name = "runner_name"
executor = "ssh"
builds_dir = "/data/git_build"
[runners.ssh]
user = "user"
host = "192.xxx.xxx.xxx"
port = "22"
identity_file = "/home/user/.ssh/id_rsa"
或者您可以在注册gitlab-runner时设置builds_dir:
带有参数--builds-dir
的
gitlab-ci-multi-runner register \
--name "$NAME" \
--non-interactive \
--url " $URL" \
--tag-list $TAG \
--registration-token "$TOKEN" \
--executor "ssh" \
--builds-dir "$BUILD_DIR" \
--ssh-user "$SSH_USER" \
--ssh-host "$SSH_HOST" \
--ssh-port "$SSH_PORT" \
--ssh-identity-file "$SSH_IDENTITY_FILE"