运行 另一个目录中的操作
Running actions in another directory
我刚刚开始探索 Github 操作,但是我发现自己在多个地方放置了一个命令。
我有一个 PHP 项目,其中 composer.json
不在根目录中,我的结构如下:
my-project:
readme.md
app:
composer.json
显然还有更多内容,这是有原因的,但我的 composer.json
位于一个名为 'app' 的子目录中。因此在我的工作流程中,我每次都必须 cd 进入该文件夹以执行 运行 命令:
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
?
更新:现在可以为作业设置 working-directory
默认值。参见 。
可以选择在一个步骤上设置 working-directory
,但不能为多个步骤或整个作业设置。我相当确定此选项仅适用于脚本步骤,不适用于 uses
.
的操作步骤
https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsrun
使用 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
您现在可以为作业中的所有步骤添加默认工作目录:docs
对于此处的示例,这将是:
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
警告:这仅适用于 run
个步骤;例如,如果需要,您仍然需要将子目录添加到 uses
步骤的 with
参数。
希望这对某人有所帮助
name: CI
on:
...
defaults:
run:
working-directory: ./app
jobs:
...
我刚刚开始探索 Github 操作,但是我发现自己在多个地方放置了一个命令。
我有一个 PHP 项目,其中 composer.json
不在根目录中,我的结构如下:
my-project:
readme.md
app:
composer.json
显然还有更多内容,这是有原因的,但我的 composer.json
位于一个名为 'app' 的子目录中。因此在我的工作流程中,我每次都必须 cd 进入该文件夹以执行 运行 命令:
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
?
更新:现在可以为作业设置 working-directory
默认值。参见
可以选择在一个步骤上设置 working-directory
,但不能为多个步骤或整个作业设置。我相当确定此选项仅适用于脚本步骤,不适用于 uses
.
https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsrun
使用 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
您现在可以为作业中的所有步骤添加默认工作目录:docs
对于此处的示例,这将是:
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
警告:这仅适用于 run
个步骤;例如,如果需要,您仍然需要将子目录添加到 uses
步骤的 with
参数。
希望这对某人有所帮助
name: CI
on:
...
defaults:
run:
working-directory: ./app
jobs:
...