测试项目部署 ci-runner

Testing project deployment ci-runner

下午好

我最近开始使用 gitlab,试图弄清楚它是否符合我们对 UX 管理团队的需求。

我在我们的云上创建了 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"