Я хочу выполнить shell через SSH с gitlab-ci, и я сталкиваюсь с ошибками.
Переменные имеют следующие значения:
DEV_SERVER=myserver.domain.com
CODE_APP=4A
CI_COMMIT_REF_SLUG=pretorien-feature-ci
часть gitlab-ci.yml выглядит так:
review_app:
stage: review
before_script:
# SSH key configuration
# ...
script:
- ssh dev@${DEV_SERVER} \
"CONTAINER_PORT=$(docker port app_${CODE_APP}-${CI_COMMIT_REF_SLUG} 80 | cut -d ':' -f2)" \
"&& echo 'My container port : ${CONTAINER_PORT}' > result.txt"
Gitlab CI возвращает эту ошибку /usr/bin/bash: line 109: docker: command not found
Я пытался изменить команду docker с двоичным путем docker (/ usr / bin / docker) или $ (который docker), но яУ меня та же проблема.
Итак, я решил использовать другой подход:
review_app:
stage: review
before_script:
# SSH key configuration
# ...
script:
- ssh dev@${DEV_SERVER} \
"{ read CONTAINER_PORT _; } < <(docker port app_${CODE_APP}-${CI_COMMIT_REF_SLUG} 80 | cut -d ':' -f2)" \
"&& echo 'My container port : ${CONTAINER_PORT}' > result.txt"
Но в этом случае файл result.txt будет пуст ипеременная CONTAINER_PORT тоже.
В обоих случаях я проверял команды непосредственно в оболочке, результат был хорошим, и я могу прочитать значение CONTAINER_PORT в result.txt