1. ホーム
  2. github

[解決済み] 別ディレクトリでアクションを実行する

2022-03-07 21:21:32

質問

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

また、1つのステップですべてを実行することもできますので、その場合は以下のように指定するだけです。 working-directory を1回だけ実行します。

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