Я использую действие 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_OUTPUT
для выходных данных, $GITHUB_ENV
для переменных среды (см. Файлы среды).Вот пример из 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"
поскольку вы не можете напрямую записать многострочную строку в файл среды (см. Многострочные строки).
@KaramJaber Это файл env при использовании шагов run:
, но скрипт github абстрагирует его.
я думал, что $GITHUB_OUTPUT — это результат каждого шага... по какой-то причине я пропустил документацию о возвращаемом значении, спасибо, это сработало бы