¿Cómo puedo crear un script que se compile con Codeship solo cuando se realizan cambios en un directory específico?

Digamos que tengo dos directorys, lib y src , y solo deseo que Codeship construya cambios comprometidos que sean del directory src . ¿Cómo voy a hacer un guión de Bash que haga eso? Sé que al aplicar el --skip-ci a una confirmación, Codeship no creará una compilation fuera de ese compromiso. ¡Cualquier ayuda es muy apreciada!

Puede usar un command como el siguiente directamente en los pasos de testing:

 if [[ $(git log -m -n 1 --name-only --pretty=format:"" | grep -e "lib" -e "src" -c) -gt 0 ]]; then run_your_tests; fi 

Esto mostrará los files modificados para la última confirmación sin ningún metadato adicional y contará las ocurrencias de lib y src en esas líneas.

Si estas cadenas ocurren más de una vez, ejecutará el command run_your_tests . De lo contrario, simplemente volverá.

Tenga en count que esta es una versión muy cruda, no busca las cadenas al principio de los nombres de los files, por ejemplo. Pero debería ser un buen punto de partida.

Póngase en contacto a través de support@codeship.com (o nuestro postro en la aplicación) si tiene más preguntas. (Y actualizaré la respuesta si agregamos algo a través del soporte de la aplicación integrada.

[Descargo de responsabilidad] Estoy trabajando para Codeship;)

No estoy familiarizado con Codeship pero si eres un usuario de Git puedes hacer una de las siguientes cosas:

  • Use src / lib como submodules y luego, cada vez que alguien se comprometa con cualquiera de esas carpetas, ejecute el commit
  • Use un gancho git para averiguar si alguien se ha comprometido con esos directorys y luego ejecute commit basándose en la carpeta deseada.

por ejemplo, agregue esta línea a cualquiera de su enlace de confirmación if [ $(git diff --name-only HEAD^..HEAD path/ ) ] y verifique si esto es cierto.