Я пытаюсь реализовать конвейер CI / CD для Terraform, однако мне нужно изменить pwd перед выполнением любых дальнейших команд.
Похоже, контейнер Terraform принимает только команды Terraform, поэтому cd / ls / echo $ PATH не распознаются. Мне нужно создать образ, который поддерживает это, и использовать его, или я могу использовать поддерживаемые образы Terraform?
Я попытался изменить ENTRYPOINT, но, похоже, из-за образа Alpine доступна только минимальная установка.





Вы можете просто использовать общий образ, такой как alpine, в вашем .gitlab-ci.yml и получить Terraform внутри своего скрипта, например:
wget https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_386.zip
unzip terraform*
и используйте его как:
./terraform [...]
Вы можете изменить точку входа на /usr/bin/env, чтобы запустить команду cd. Пример с gitlab-ci:
validate_terraform:
image:
name: hashicorp/terraform:light
entrypoint: ["/usr/bin/env"]
stage: test
script:
- cd infrastructure/
- terraform init
- terraform validate
Правильный синтаксис для точки входа: entrypoint: - "/usr/bin/env", поскольку он ожидает массив строк.
Пожалуйста, покажите нам код (в идеале минимальный, полный и проверяемый пример проблемы) и то, что он на самом деле делает. В противном случае это просто невозможно отладить.