Действие GitHub: передать переменную среды в действие с помощью PowerShell

Я пытаюсь создать рабочий процесс, который будет работать в PowerShell. Я устанавливаю среду для имени моей ветки, которая будет использоваться на этапе проверки другого репозитория.

run: |
  $branchName = $Env:GITHUB_REF -replace "refs/heads/", ""
  echo "CURRENT_BRANCH=${branchName}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append

На более позднем этапе я пытаюсь передать переменную:

- name: Checkout repo  
  uses: actions/checkout@v2
  with:
    repository: 'MyOrg/MyRepo'
    ref: ${env:CURRENT_BRANCH}

Я пробовал разные форматы, в которых используются фигурные скобки, но я продолжаю получать выходные данные сборки, которые показывают именно этот текст в качестве пути. Я не уверен, как заставить его оценить.
Когда я это сделаю ${{ env:CURRENT_BRANCH }}, я получил следующую ошибку:

Рабочий процесс недействителен. .github / workflows / publish.yml (строка: 54, столбец: 14): неожиданный символ: 'env: CURRENT_BRANCH'. Находится в позиции 1 внутри выражения: env: CURRENT_BRANCH


person Airn5475    schedule 03.11.2020    source источник


Ответы (3)


Чтобы ссылаться на переменную из данного контекста (в данном случае env) в рабочем процессе GitHub Actions, мы должны использовать символ точки (.), но вы использовали двоеточие (:). Чтобы исправить ошибку выше, необходимо скорректировать рабочий процесс:

- name: Checkout repo  
  uses: actions/checkout@v2
  with:
    repository: 'MyOrg/MyRepo'
    ref: ${{env.CURRENT_BRANCH}}

Кроме того, вам не нужно обнаруживать текущую ветвь и передавать ее действию проверки. actions/checkout@v2 по умолчанию будет использовать текущую ветвь. Итак, вам нужно всего лишь:

- name: Checkout repo  
  uses: actions/checkout@v2
- name: Next Step
[...]
person Marcin Kłopotek    schedule 04.11.2020
comment
К вашему второму пункту: я проверяю два репозитория. Первый, из которого выполняется действие, выберет правильную ветку. Однако второй репозиторий использует Master. Вы этого ожидали? - person Airn5475; 04.11.2020
comment
Я знаю, что пробовал это раньше, но, возможно, я еще что-то напортачил. На этот раз это сработало! Действия утомительны. - person Airn5475; 04.11.2020

Одно решение я нашел в другом месте и опубликую здесь как вариант, хотя я хотел бы знать, возможно ли использование переменных среды в моем сценарии. Решение - использовать Выводы из шага

- name: Output Variables
  id: SetVariables
  run: |
    $branchName = $Env:GITHUB_REF -replace "refs/heads/", ""
    echo "Branch: ${branchName}"
    echo "::set-output name=branch::${branchName}"

- name: Checkout Repo 2
  uses: actions/checkout@v2
  with:
    repository: 'MyOrg/MyRepo'
    ref: ${{ steps.SetVariables.outputs.branch }}
person Airn5475    schedule 04.11.2020

Сейчас это рабочий метод, подробнее здесь:

echo "action_state=yellow" >> $GITHUB_ENV

Тот, что ниже, у меня больше не работает. Небольшое исследование показало, что это связано с проблема безопасности.

echo "::set-output name=action_state::yellow"

person zinen    schedule 21.11.2020