Невозможно выполнить скрипт bash в контейнере модуля k8s cronjob

Команда, /bin/bash: line 5: ./repo/clone.sh: No such file or directory

не могу запустить вышеуказанный файл, но я могу его хорошо понять. Я старался изо всех сил и все еще пытаюсь найти, но пока безуспешно ..

мое требование состоит в том, чтобы смонтировать сценарий bash из карты конфигурации в каталог внутри контейнера и запустить его для клонирования репо, но я получаю сообщение ниже.

работа крона

spec:
  concurrencyPolicy: Allow
  jobTemplate:
    metadata:
    spec:
      template:
        metadata:
        spec:
          containers:
          - args:
            - -c
            - |
              set -x
              pwd && ls
              ls -ltr /
              cat /repo/clone.sh
              ./repo/clone.sh
              pwd
            command:
            - /bin/bash
            envFrom:
            - configMapRef:
                name: sonarscanner-configmap
            image: artifactory.build.team.com/product-containers/user/sonarqube-scanner:4.7.0.2747
            imagePullPolicy: IfNotPresent
            name: sonarqube-sonarscanner
            securityContext:
              runAsUser: 0
            volumeMounts:
            - mountPath: /repo
              name: repo-checkout
          dnsPolicy: ClusterFirst
          initContainers:
          - args:
            - -c
            - cd /
            command:
            - /bin/sh
            image: busybox
            imagePullPolicy: IfNotPresent
            name: clone-repo
            securityContext:
              privileged: true
            volumeMounts:
            - mountPath: /repo
              name: repo-checkout
              readOnly: true
          restartPolicy: OnFailure
          securityContext:
            fsGroup: 0
          volumes:
          - configMap:
              defaultMode: 420
              name: product-configmap
            name: repo-checkout
  schedule: '*/1 * * * *'

Карта конфигурации

kind: ConfigMap
metadata:
apiVersion: v1
data:
  clone.sh: |-
    #!bin/bash
    set -xe
    apk add git curl
    #Containers that fail to resolve repo url can use below step.
    repo_url=$(nslookup ${CODE_REPO_URL} | grep Non -A 2 | grep Name | cut -d: -f2)
    repo_ip=$(nslookup ${CODE_REPO_URL} | grep Non -A 2 | grep Address | cut -d: -f2)
    if grep ${repo_url} /etc/hosts; then
        echo "git dns entry exists locally"
    else
        echo "Adding dns entry for git inside container"
        echo ${repo_ip} ${repo_url} >> /etc/hosts
    fi
    cd / && cat /etc/hosts && pwd
    git clone "https://$RU:$RT@${CODE_REPO_URL}/r/a/${CODE_REPO_NAME}" && \
        (cd "${CODE_REPO_NAME}" && mkdir -p .git/hooks && \
        curl -Lo `git rev-parse --git-dir`/hooks/commit-msg \
        https://$RU:$RT@${CODE_REPO_URL}/r/tools/hooks/commit-msg; \
        chmod +x `git rev-parse --git-dir`/hooks/commit-msg)
    cd ${CODE_REPO_NAME}
    pwd

выходной модуль описать

  Warning  FailedCreatePodSandBox  1s    kubelet, node1  Failed create pod sandbox: rpc error: code = Unknown desc = failed to start sandbox container for pod "sonarqube-cronjob-1670256720-fwv27": Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:303: getting the final child's pid from pipe caused \"EOF\"": unknown

журналы модулей

+ pwd
+ ls
/usr/src
+ ls -ltr /repo/clone.sh
lrwxrwxrwx    1 root     root            15 Dec  5 16:26 /repo/clone.sh -> ..data/clone.sh
+ ls -ltr
total 60
.
drwxr-xr-x    2 root     root          4096 Aug  9 08:58 sbin
drwx------    2 root     root          4096 Aug  9 08:58 root
drwxr-xr-x    2 root     root          4096 Aug  9 08:58 mnt
drwxr-xr-x    5 root     root          4096 Aug  9 08:58 media
drwxrwsrwx    3 root     root          4096 Dec  5 16:12 repo <<<<< MY MOUNTED DIR
.
+ cat /repo/clone.sh
#!bin/bash
set -xe
apk add git curl
#Containers that fail to resolve repo url can use below step.
repo_url=$(nslookup ${CODE_REPO_URL} | grep Non -A 2 | grep Name | cut -d: -f2)
repo_ip=$(nslookup ${CODE_REPO_URL} | grep Non -A 2 | grep Address | cut -d: -f2)
if grep ${repo_url} /etc/hosts; then
    echo "git dns entry exists locally"
else
    echo "Adding dns entry for git inside container"
    echo ${repo_ip} ${repo_url} >> /etc/hosts
fi
cd / && cat /etc/hosts && pwd
git clone "https://$RU:$RT@${CODE_REPO_URL}/r/a/${CODE_REPO_NAME}" && \
    (cd "${CODE_REPO_NAME}" && mkdir -p .git/hooks && \
    curl -Lo `git rev-parse --git-dir`/hooks/commit-msg \
    https://$RU:$RT@${CODE_REPO_URL}/r/tools/hooks/commit-msg; \
    chmod +x `git rev-parse --git-dir`/hooks/commit-msg)
cd code_dir
+ ./repo/clone.sh
/bin/bash: line 5: ./repo/clone.sh: No such file or directory
+ pwd
pwd/usr/src
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предполагая, что рабочий каталог отличается от /:

Если вы хотите получить свой скрипт в текущем процессе bash (сокращенно .), вы должны добавить пробел между точкой и путем:

. /repo/clone.sh

Если вы хотите выполнить его в дочернем процессе, удалите точку:

/repo/clone.sh

классная помощь. ценить это. тоже новичок. если есть лучший способ моего подхода, пожалуйста, просветите.

AhmFM 05.12.2022 17:43

Другие вопросы по теме