【问题标题】:Kubernetes cronjob - git pull else git cloneKubernetes cronjob - git pull else git clone
【发布时间】:2021-09-25 19:39:59
【问题描述】:

Kubernetes cronjob 可用于使用 git 存储库中的最新数据更新某些卷。

containers:
      - name: hello
        image: alpine/git
        volumeMounts:
        - name: requirements
          mountPath: /workdir
        imagePullPolicy: IfNotPresent
        command:
        - /bin/sh
        - -c
        - cd /workdir/dashboard; git pull http://url..

但它还没有准备好开箱即用。如果卷为空,我需要先执行 git clone,然后每次执行 git pull。

但是由于某种原因,将 bash if 语句作为 cronjob 命令不起作用 - cronjob 只会失败。

if cd /workdir/dashboard; then git pull http://url..; else git clone http://url..; fi

日志是fatal: not a git repository (or any parent up to mount point /) Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)

有谁知道如何让它工作?

【问题讨论】:

  • 不使用 Git,您可以将您的内容放入 Docker 映像,然后在 Deployment 中更新 image: 标签吗?您希望在这本书中包含哪些内容?
  • “命令由于某种原因不起作用”——会发生什么? pod 日志中是否有错误?
  • @larsks 致命:不是 git 存储库(或挂载点 / 之前的任何父级)停止在文件系统边界(未设置 GIT_DISCOVERY_ACROSS_FILESYSTEM)。当我在没有 git clone 的情况下运行 cronjob 时,也会引发同样的错误。据我了解,命令在 git pull 处停止
  • @DavidMaze requirements.txt 文件。
  • 该错误听起来像是您正在运行 git pull 而不是 git clone。可能只是调试你的脚本(也许添加set -x?)会让你发现问题的根源。也许/workdir/dashboard 存在但不是 git 存储库?

标签: git kubernetes cron yaml


【解决方案1】:

如果你想做一个 git pull 并且如果 repo 在本地不存在,你可以使用以下 sn-p 仅在第一个命令失败时执行第二个命令,即 repo 尚未克隆

git pull || git clone $git-repo-url

【讨论】:

  • 我需要先更改工作目录。所以考虑到这个事实 - 你的命令和我自己使用的 if 语句不一样吗?
猜你喜欢
  • 1970-01-01
  • 2020-05-03
  • 1970-01-01
  • 2021-08-17
  • 1970-01-01
  • 2020-04-29
  • 2020-03-25
  • 2011-04-06
  • 2021-11-17
相关资源
最近更新 更多