GitLab CI Runner未更新gitlab-ci脚本的问题

119次阅读
没有评论

问题描述

在GitLab CI中遇到了一个问题,无法理解:在一个单体存储库中,他存储了一些基础设施代码(IaC),在这个存储库中有一个脚本,允许他对saltstack状态代码进行lint,如下所示:

#!/bin/bash
# Std var
_hostname=$(hostname -f)
for file in $(find . -iname "*.sls" ! \( -path '*/files/orchestration_states/*' -or -path '*/files/reactor_states/*' -or -name "top.sls" \)); do
    state_path_name=$(echo ${file%.*} | tr -d "." | tr "/" ".")
    if ! sudo salt-call --file-root=. --pillar-root=/home/gitlab-runner/salt_pillars/testBed/ --local --retcode-passthrough state.show_sls ${state_path_name}  pillar='{"tgt_client_name": "dummy-dummy.domain}' ; then
        echo -e "> Error found while validating state file: please fix it!\n\nDetails:\n - File(s) name(s): ${state_path_name}\n - Pipeline ID: ${CI_JOB_ID}\n\n - Job link: ${CI_JOB_URL}" | mail -s "${CI_PROJECT_NAME} | Pipeline #${CI_JOB_ID} has failed" -aFrom:${_hostname}@spie.com "mail@domain.com"
        exit 1
    fi
done

在这个脚本中,他需要更新--pillar-root=/home/gitlab-runner/salt_pillars/testBed/,将testBed字符串替换为其他内容,比如说to to。但是,当他在存储库内更新字符串后,Runner在获取分支以lint状态时仍然使用旧版本的脚本(因为路径不正确)。
他可以看到存储库中的脚本已经更新,但是Runner在获取分支进行状态lint时并没有更新这个脚本。
他想知道为什么Runner没有更新这个脚本?

解决方案

请注意以下操作可能会因版本差异或其他因素而有所不同,做任何更改前请备份。
用户遇到的问题可能是由于Runner没有正确获取最新版本的脚本,这可能与缓存或配置有关。以下是一些可能的解决方案:

方案1

清除GitLab CI Runner缓存

  1. 登录到GitLab CI/CD Runner所在的机器。
  2. 停止GitLab CI Runner的服务。这可以使用类似以下命令的方式:sudo gitlab-runner stop
  3. 清除GitLab CI Runner的缓存。运行类似以下命令的操作:sudo gitlab-runner verify --delete-cache
  4. 启动GitLab CI Runner服务:sudo gitlab-runner start
  5. 触发一个新的CI/CD构建,并检查是否成功更新了脚本。

方案2

检查Runner配置

  1. 登录到GitLab CI/CD Runner所在的机器。
  2. 确保Runner的配置正确,特别是它与GitLab服务器的连接和注册信息。
  3. 运行以下命令以重新注册Runner:sudo gitlab-runner register,然后按照提示填写必要的信息。
  4. 触发一个新的CI/CD构建,看是否成功更新了脚本。

方案3

手动触发更新

如果以上方法仍然无效,可以尝试手动触发更新:
1. 打开GitLab仓库的网页界面。
2. 找到并进入CI/CD页面。
3. 找到上次失败的CI/CD构建,点击重新运行按钮。
这将触发一个新的CI/CD构建,它应该使用最新的代码和脚本。

如果问题仍然存在,请检查Runner和GitLab服务器之间的网络连接,确保没有其他配置问题导致Runner无法获取最新的脚本。

方案4

用户回复解决方案

从用户的回复中可以看出,问题实际上是他点击了“重试”按钮,但这会使用相同的提交,因此对脚本的更改没有生效。正确的方法是重新触发一个新的CI/CD构建,以确保使用最新的提交和脚本。

结论

当遇到GitLab CI Runner未更新脚本的问题时,可以尝试清除缓存、检查配置、手动触发更新或确保正确的重新构建,以确保Runner使用最新的脚本进行构建。如果问题仍然存在,请检查网络连接和其他可能的配置问题。

正文完