Ejecutando acciones en otro directorio
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.json
no 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.json
se 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 app
en cada etapa?
Actualización : ahora es posible establecer un working-directory
valor predeterminado para un trabajo. Vea esta respuesta .
Existe una opción para configurar working-directory
un 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-directory
una 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
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 run
los pasos; por ejemplo, aún necesitará agregar el subdirectorio a los with
parámetros de uses
los pasos, si es necesario.