在另一个目录中运行操作

我刚刚开始研究 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

136010 次浏览

更新 : 现在可以为作业设置 working-directory默认值了。

有一个选项可以为一个步骤设置 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

现在可以为作业的所有步骤添加默认工作目录: 医生

这里的例子是:

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:
...