测试项目部署 ci-runner
Testing project deployment ci-runner
下午好
我最近开始使用 gitlab,试图弄清楚它是否符合我们对 UX 管理团队的需求。
我在我们的云上创建了 3 个服务器用于测试,如下所示:
Server_1 Gitlab和Gitlab-CI
Server_2 Gitlab 跑者
Server_3 脚本库
我们的想法是将以前的脚本存储库推送到 Gitlab,然后控制对它们所做的任何更改和安全问题。
我在服务器 1 上安装了 Gitlab-Omnibus 并使用他的项目 Testproject1 创建了用户 "test1",之后我将一些测试脚本推送到该项目。
在此之后,我在 Server_2 上安装了运行器并针对 Gitlab 进行了配置,创建了一个运行器,注册了它并针对 Server3
配置了 ssh 密钥
这里的问题如下,用户test1对Gitlab的Testproject1上的任何脚本所做的任何更改都会触发runner构建并将整个项目推送到/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 功能?
顺便说下runner的yml文件如下:
job:
script:
- cd /opt/gitlab/aplicacion1
- git init .
- git add .
- git pull origin master
- pwd
- ls -ltra
tags:
- master
提前致谢
你可以在 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"
下午好
我最近开始使用 gitlab,试图弄清楚它是否符合我们对 UX 管理团队的需求。
我在我们的云上创建了 3 个服务器用于测试,如下所示:
Server_1 Gitlab和Gitlab-CI
Server_2 Gitlab 跑者
Server_3 脚本库
我们的想法是将以前的脚本存储库推送到 Gitlab,然后控制对它们所做的任何更改和安全问题。
我在服务器 1 上安装了 Gitlab-Omnibus 并使用他的项目 Testproject1 创建了用户 "test1",之后我将一些测试脚本推送到该项目。 在此之后,我在 Server_2 上安装了运行器并针对 Gitlab 进行了配置,创建了一个运行器,注册了它并针对 Server3
配置了 ssh 密钥这里的问题如下,用户test1对Gitlab的Testproject1上的任何脚本所做的任何更改都会触发runner构建并将整个项目推送到/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 功能?
顺便说下runner的yml文件如下:
job:
script:
- cd /opt/gitlab/aplicacion1
- git init .
- git add .
- git pull origin master
- pwd
- ls -ltra
tags:
- master
提前致谢
你可以在 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"