Как использовать выходные данные действия github-script на следующем шаге

Я использую действие github-script для обнаружения измененных файлов в текущем PR, а затем хочу использовать его на следующем шаге для отправки вывода в скрипт Python.

У меня есть следующий yml:

steps:
      - name: Checkout code
        uses: actions/checkout@v4
        
      - name: bbb
        id: bbb
        uses: actions/github-script@v7
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const response = await github.request('GET /repos/{owner}/{repo}/pulls/{pull_number}/files', {
              owner: context.repo.owner,
              repo: context.repo.repo,
              pull_number: context.payload.pull_request.number
            });
  
            const files = response.data.map(file => file.filename);
            console.info(`FILES=${files.join('\n')}` >> $GITHUB_ENV);g
      # - name: Set up Python
      #   uses: actions/setup-python@v2  
      - name: Execute Python script
        run: |
          echo "my ${{ steps.bbb.outputs.FILES }}"

Я попробовал много вариантов, но не могу использовать их на следующем этапе «Выполнение сценария Python».

Редкие достижения на Github ✨
Редкие достижения на Github ✨
Редкая коллекция доступна в профиле на GitHub ✨
0
0
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы путаете несколько вещей:

  • Файлы среды бывают двух видов: $GITHUB_OUTPUT для выходных данных, $GITHUB_ENV для переменных среды (см. Файлы среды).
  • Шаги github-script неявно устанавливают вывод через возвращаемые значения

Вот пример из README github-скрипта:

- uses: actions/github-script@v7
  id: set-result
  with:
    script: return "Hello!"
    result-encoding: string
- name: Get result
  run: echo "${{steps.set-result.outputs.result}}"

Кроме того, если вы хотите установить многострочное значение из сценария, вам придется использовать этот синтаксис:

{
    echo "output<<EOF"
    echo "line 1"
    echo "line 2"
    echo "EOF"
} >> "$GITHUB_OUTPUT"

поскольку вы не можете напрямую записать многострочную строку в файл среды (см. Многострочные строки).

я думал, что $GITHUB_OUTPUT — это результат каждого шага... по какой-то причине я пропустил документацию о возвращаемом значении, спасибо, это сработало бы

KaramJaber 24.04.2024 16:33

@KaramJaber Это файл env при использовании шагов run:, но скрипт github абстрагирует его.

Benjamin W. 24.04.2024 17:15

Другие вопросы по теме