J'essaie de tester les actions Github pour un petit projet Web. J'ai deux projets dans le référentiel et je souhaite créer un script de déploiement pour le client Web uniquement.
Le référentiel ressemble à ceci:
total 28 drwxr-xr-x 5 runner docker 4096 Oct 17 18:05 . drwxr-xr-x 3 runner docker 4096 Oct 17 18:05 .. drwxr-xr-x 8 runner docker 4096 Oct 17 18:05 .git drwxr-xr-x 3 runner docker 4096 Oct 17 18:05 .github -rw-r--r-- 1 runner docker 6215 Oct 17 18:05 .gitignore drwxr-xr-x 4 runner docker 4096 Oct 17 18:05 src /home/runner/work/_temp/43164e53-98ec-41c2-8773-72e94c3453e5.sh: line 2: cd: ./src/webclient: No such file or directory Error: Process completed with exit code 1.
Je souhaite exécuter des scripts dans le répertoire WebClient. Quand j'essaye de cd dans ./src/webclient, j'obtiens l'erreur no such file or directory
name: CI on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Setup Node.js environment uses: actions/setup-node@v2.1.2 - name: Open Web Client Directory run: | ls -la cd ./src/webclient ls -la - name: Run a multi-line script run: | echo Add other actions to build, echo test, and deploy your project. ls -la
La sortie de l'étape "Ouvrir le répertoire du client Web":
root | |-src | |-API | | | |-WebClient | |-docs
Il semble réussir à ls -la
commande ls -la
, mais ne parvient pas à trouver le répertoire ./src/webclient.
Y a-t-il quelque chose d'évident qui me manque? J'ai essayé de changer la commande en cd src/webclient
, et cela échoue également. Cela fonctionne sur deux machines locales différentes, un ubuntu et un MacOS.
3 Réponses :
D'après vos logs, cela semble être dû au respect de la casse: vous montrez que le référentiel contient src/WebClient
(camel cased!), Mais ensuite vous essayez de cd src/webclient
(minuscules).
Sous macOS, cela fonctionnerait car le système de fichiers est insensible à la casse par défaut; Je ne sais pas pourquoi cela fonctionne sur votre système Ubuntu, à moins que vous n'utilisiez quelque chose comme la complétion des onglets, qui fait le boîtier pour vous.
Pour vérifier ce que vous avez dans vos sous-répertoires, vous pouvez exécuter find src
au lieu de ls -la
pour voir toute l'arborescence de répertoires dans src
.
C'était le problème. Mon WSL était un onglet pour moi. On dirait un PEBCAK de qualité A!
Essaye ça:
- name: Open Web Client Directory working-directory: src/webclient run: | ls -la
Ce n'est pas le cas pour OP, mais j'ai eu un problème où une étape échouait toujours avec Error: No such file or directory
quelle que soit la façon dont je l'ai configuré.
Il s'avère que l'erreur était due au fait que je n'avais pas extrait le code lors d'une étape précédente.
Assurez-vous donc toujours de le faire:
steps: - uses: actions/checkout@v2
Le nom du répertoire est-il
WebClient
ouwebclient
? Le système de fichiers est sensible à la casse, et s'il s'agit deWebClient
comme vous l'avez montré pour la première fois, vous devez utilisercd src/WebClient
au lieu decd src/webclient
.