web-dev-qa-db-fra.com

Actions d'exécution dans un autre répertoire

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?

16
MylesK

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.

https://help.github.com/fr/articles/workflow-syntax-for-github-actions#jobsjob_idstepsworking-Directory

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
2
peterevans