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
WebClientouwebclient? Le système de fichiers est sensible à la casse, et s'il s'agit deWebClientcomme vous l'avez montré pour la première fois, vous devez utilisercd src/WebClientau lieu decd src/webclient.