bash - que - circleci dashboard
Permiso de CircleCI denegado la ejecuciĆ³n de script bash (4)
Como @palfrey dice que la secuencia de comandos probablemente no está marcada como ejecutable, y algunas veces parece que está mal marcada en la implementación, incluso cuando anteriormente ha ejecutado chmod +x
en su secuencia de comandos en su máquina local. (¿Por qué? No lo sé. ¡Si alguien lo hace, por favor, ilumíname!)
Este es un comando general que se utiliza para garantizar que sus scripts siempre estén marcados como ejecutables. Esto supone que todos están ubicados en un directorio /home/ubuntu/${CIRCLE_PROJECT_REPONAME}/scripts
y todos tienen una extensión .sh
. Si sus directorios son diferentes, edítelos para usar su directorio.
Dado que todos mis scripts shared.sh
un script compartido ( shared.sh
) en la parte superior de cada script llamado por circle.yml
, agrego el siguiente código a shared.sh
que garantiza que todos los scripts estén marcados como ejecutables:
SCRIPTS="/home/ubuntu/${CIRCLE_PROJECT_REPONAME}/scripts"
find "${SCRIPTS}" | grep "/.sh$" | xargs chmod +x
Funciona de maravilla. :-)
Tengo un archivo circle.yml
así:
dependencies:
override:
- meteor || curl https://install.meteor.com | /bin/sh
deployment:
production:
branch: "master"
commands:
- ./deploy.sh
Cuando empujo a Github, me sale el error:
/home/ubuntu/myproject/deploy.sh returned exit code 126
bash: line 1: /home/ubuntu/myproject/deploy.sh: Permission denied Action failed: /home/ubuntu/myproject/deploy.sh
Cuando ejecuto los comandos que viven dentro de deploy.sh
fuera del archivo (bajo los commands
), todo funciona bien.
Todo en el archivo circle.yml
parece estar en línea con los ejemplos en los documentos de CircleCI ... ¿Qué estoy haciendo mal?
Suponiendo que ya lo haya registrado, use este comando para marcarlo como ejecutable para git:
git update-index --chmod=+x script.sh
referencia: https://www.pixelninja.me/make-script-committed-to-git-executable/
Varios problemas posibles:
- deploy.sh podría no estar marcado como ejecutable (
chmod +x deploy.sh
solucionaría esto) - La primera línea de deploy.sh podría no ser un shell ejecutable ...
Si el primero no funciona, ¿podemos ver los contenidos de deploy.sh?
Yo estaba teniendo el mismo problema. Agregué sh a la parte frontal de la sección de comandos para que funcione.
deployment:
production:
branch: "master"
commands:
- sh ./deploy.sh
Esperemos que esa solución salve a todos en el futuro.