在另一个目录中运行操作

时间:2019-09-27 17:36:25

标签: github github-actions

我刚刚开始探索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

2 个答案:

答案 0 :(得分:13)

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

在这里的示例为:

run

注意:仅适用于with个步骤;例如,如果需要,您仍然需要将子目录添加到uses步骤的value?is_sequence参数中。

答案 1 :(得分:1)

可以选择在某个步骤上设置working-directory,但不能为多个步骤或整个作业设置。我相当确定此选项仅适用于脚本步骤,不适用于uses的操作步骤。

https://help.github.com/en/articles/workflow-syntax-for-github-actions#jobsjob_idstepsworking-directory

使用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