Ejecutando acciones en otro directorio

Resuelto MylesK asked hace 54 años • 3 respuestas

Recién comencé a explorar las acciones de Github, sin embargo, me encontré colocando un comando en varios lugares.

Tengo un proyecto PHP donde composer.jsonno está en la raíz, mi estructura se ve así:

my-project:
    readme.md
    app:
        composer.json

Obviamente hay más y hay una razón, pero mi composer.jsonse encuentra en un subdirectorio llamado "aplicación". Como resultado de mi flujo de trabajo, tengo que ingresar a esa carpeta cada vez para ejecutar un comando:

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

¿ Cómo puedo eliminar el cd appen cada etapa?

MylesK avatar Jan 01 '70 08:01 MylesK
Aceptado

Actualización : ahora es posible establecer un working-directoryvalor predeterminado para un trabajo. Vea esta respuesta .

Existe una opción para configurar working-directoryun paso, pero no para varios pasos ni para un trabajo completo. Estoy bastante seguro de que esta opción solo funciona para pasos de guión, no para pasos de acción con uses.

https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsrun

Usando working-directory, su flujo de trabajo se vería así. Todavía es bastante detallado pero quizás un poco más limpio.

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

Alternativamente, puede ejecutarlo todo en un solo paso para que solo necesite especificarlo working-directoryuna vez.

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
peterevans avatar Sep 27 '2019 23:09 peterevans

Ahora puede agregar un directorio de trabajo predeterminado para todos los pasos de un trabajo: documentos

Para el ejemplo aquí, esto sería:

name: CI

on: [push]

jobs:
  phpunit:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./app
    steps:
      - uses: actions/checkout@v1
      - name: Setup Symfony
        run: .env.dev .env
      - name: Install Composer Dependencies
        run: composer install --prefer-dist
      - name: Run Tests
        run: php bin/phpunit

Advertencia: esto sólo se aplica a runlos pasos; por ejemplo, aún necesitará agregar el subdirectorio a los withparámetros de useslos pasos, si es necesario.

Tomas avatar Jul 27 '2020 19:07 Tomas