Действия GitHub Если содержит функцию, не работающую с env.VARIABLE - PullRequest
1 голос
/ 16 апреля 2020

Я установил переменную среды, используя:

echo "::set-env name=PROJECT_TO_TEST::$(sh scripts/test.sh)"

test. sh просто повторяет "SomeString, MoreString"

Я вижу, что переменная PROJECT_TO_TEST правильно устанавливается, выполняя:

echo "env.PROJECT_TO_TEST = ${{ env.PROJECT_TO_TEST }}"

Который выводит "env.PROJECT_TO_TEST = SomeString, MoreString"

На следующем шаге я делаю проверку if, чтобы увидеть, что переменная PROJECT_TO_TEST содержит несколько строк, например:

- name: Conditionally Run
  if: contains('${{ env.PROJECT_TO_TEST }}', 'SomeString')
  run: |
    echo "SomeString did exist and should run"
- name: Conditionally Run
  if: contains('${{ env.PROJECT_TO_TEST }}', 'ShouldNotRun')
  run: |
    echo "ShouldNotRun"  

В этом случае должна быть напечатана только «SomeString существовала и должна быть запущена», но также печатается «ShouldNotRun».

Полный код здесь: https://github.com/gomfucius/github-actions/blob/master/.github/workflows/pullrequest.yml

Рабочий процесс, который иллюстрирует проблему: https://github.com/gomfucius/github-actions/runs/590320131

Ответы [ 2 ]

1 голос
/ 16 апреля 2020

Вам не нужно ${{}} внутри if, поскольку он может напрямую обращаться к контексту env.

  - run:  echo ::set-env name=PROJECT_TO_TEST::SomeString,MoreString
  - name: Conditionally Run
    if:   contains(env.PROJECT_TO_TEST, 'SomeString')
    run:  echo "SomeString did exist and should run"
  - name: Conditionally Run
    if:   contains(env.PROJECT_TO_TEST, 'ShouldNotRun')
    run:  echo "ShouldNotRun"
0 голосов
/ 16 апреля 2020

Я нашел обходной путь, используя условные выражения, используя bash, это не ответ на оригинальный вопрос:

- name: Build and Test Frameworks
  run: |
    if [[ $projectToTest == *"SomeString"* ]]; then
      echo "SomeString did exist and should run"
    fi
    if [[ $projectToTest == *"ShouldNotRun"* ]]; then
      echo "ShouldNotRun"
    fi
  env:
     projectToTest: ${{ env.PROJECT_TO_TEST }}
...