我刚刚开始探索Github动作,但是我发现自己在多个地方放置了命令。
我有一个PHP项目,其中composer.json
不在根目录中,我的结构如下:
my-project:
readme.md
app:
composer.json
显然还有更多的原因,这是有原因的,但是我的composer.json
位于一个名为“ app”的子目录中。因此,在我的工作流程中,我每次都必须进入该文件夹以运行命令:
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
如何在每个阶段删除cd app
?
答案 0 :(得分:13)
您现在可以为作业中的所有步骤添加默认的工作目录:docs
在这里的示例为:
run
注意:仅适用于with
个步骤;例如,如果需要,您仍然需要将子目录添加到uses
步骤的value?is_sequence
参数中。
答案 1 :(得分:1)
可以选择在某个步骤上设置working-directory
,但不能为多个步骤或整个作业设置。我相当确定此选项仅适用于脚本步骤,不适用于uses
的操作步骤。
使用working-directory
,您的工作流程将如下所示。它仍然很冗长,但也许更干净。
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
或者,您可以一步执行所有操作,因此只需指定一次working-directory
。
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