我刚刚开始探索Github动作,但我发现自己在多个地方放置命令。
我有一个PHP项目,其中作曲家。Json不在根目录中,我的结构是这样的:
my-project:
readme.md
app:
composer.json
显然还有很多原因,但是我的作曲家。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应用程序?
更新:现在可以为作业设置工作目录默认值了。请看这个答案。
有一个选项可以在一个步骤上设置工作目录,但不能为多个步骤或整个作业设置工作目录。我相当肯定这个选项只适用于脚本步骤,而不适用于使用的操作步骤。
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
或者,您可以在一个步骤中运行它,这样您只需要指定一次工作目录。
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