Je viens de commencer à explorer les actions GitHub, mais je me suis retrouvé placer une commande dans plusieurs endroits.
J'ai un PHP projet où le composer.json
n'est pas à la racine, ma structure ressemble à:
my-project:
readme.md
app:
composer.json
De toute évidence, il y en a plus et il y a une raison pour laquelle, mais mon composer.json
Siège dans un sous-répertoire appelé "application". En conséquence, mon flux de travail, je dois dans ce dossier à chaque fois pour exécuter une commande:
name: CI
on: [Push]
jobs:
phpunit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Setup Symfony
run: |
cd app
cp .env.dev .env
- name: Install Composer Dependencies
run: |
cd app
composer install --prefer-dist
- name: Run Tests
run: |
cd app
php bin/phpunit
Comment puis-je supprimer le cd app
À chaque étape?
Il y a une option pour définir un working-directory
sur une étape, mais pas pour plusieurs étapes ou tout un travail. Je suis assez sûr que cette option ne fonctionne que pour les étapes de script, pas des étapes d'action avec uses
.
En utilisant working-directory
, votre flux de travail ressemblerait à ceci. C'est toujours assez verbeux mais peut-être un peu plus propre.
name: CI
on: [Push]
jobs:
phpunit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Setup Symfony
working-directory: ./app
run: cp .env.dev .env
- name: Install Composer Dependencies
working-directory: ./app
run: composer install --prefer-dist
- name: Run Tests
working-directory: ./app
run: php bin/phpunit
Sinon, vous pouvez tout exécuter en une étape pour que vous n'ayez besoin que de spécifier working-directory
une fois.
name: CI
on: [Push]
jobs:
phpunit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Setup and run tests
working-directory: ./app
run: |
cp .env.dev .env
composer install --prefer-dist
php bin/phpunit