#yaml #github-actions
Вопрос:
Я пытаюсь выполнить действие GitHub, которое создает веб-сайт Hugo, развертывает его на Pinata и сохраняет выходной хэш этого последнего шага в txt-файл. Мне удалось сделать первый и второй шаги. И, для третьего, я пытался сделать это, выполнив команду «эхо». Однако я получаю следующее сообщение: «У вас есть ошибка в синтаксисе yaml в строке 36»
Как запустить скрипт, берущий выходные данные с шага, определенного как «ipfs-pin»?
Вот мой код:
name: deploy
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: jakejarvis/hugo-build-action@master
with:
args: --minify --buildDrafts
- uses: anantaramdas/ipfs-pinata-deploy-action@v1.6.4
id: ipfs-pin
with:
pin-name: '[my-pin-name]'
path: './public'
pinata-api-key: [API Key]
pinata-secret-api-key: [secret API Key]
verbose: true
remove-old: true
saves-hash-on-file:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '14'
- run: echo ${{steps.build.ipfs-pin.hash}} > /.github/ipfs-hash.txt
Комментарии:
1. Вы пробовали добавить
needs: build
конфигурацию второго задания? Если я не ошибаюсь, это обязательно, когда вы хотите использовать результаты конкретной работы. Я бы также попробовал добавить ${{ … }} эхо-часть между"
для устранения синтаксической ошибки.2. @GuiFalourd Хорошо! Спасибо. Я добавил эти две вещи. Однако я все равно получаю синтаксическую ошибку. Похоже, он находится в последней строке перед вторым заданием.
3. Кажется, я понял, что произошло. Во-первых, это, кажется, ваш отступ есть проблемы, я воспроизвел процесс, чтобы исправить это, не возвращая ошибку здесь: github.com/GuillaumeFalourd/poc-github-actions/blob/main/… — во-вторых: я не видел его в первый раз, но ты забыл добавить
outputs
поле в job1 (сборка) уровня, без этого ты не можешь поделиться вывод на другую работу (я не смог запустить его успешно, так как у меня нет учетных данных для тестирования). Это должно сработать, если вы скопируете/вставите рабочий процесс, которым я поделился, используя свои учетные данные.4. Дайте мне знать, если это сработает, чтобы я добавил официальный ответ 🙂
5. @GuiFalourd да, конечно! Это работает. Спасибо!!
Ответ №1:
Первый
Похоже, у вашего отступа есть проблема, я воспроизвел рабочий процесс, чтобы исправить его, не возвращая ошибку при запуске рабочего процесса в репозитории:
name: Deploy
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
outputs:
hash: ${{ steps.ipfs-pin.outputs.hash }}
steps:
- uses: actions/checkout@master
- uses: jakejarvis/hugo-build-action@master
with:
args: --minify --buildDrafts
- uses: anantaramdas/ipfs-pinata-deploy-action@v1.6.4
id: ipfs-pin
with:
pin-name: '[my-pin-name]'
path: './public'
pinata-api-key: '[API Key]'
pinata-secret-api-key: '[secret API Key]'
verbose: true
remove-old: true
saves-hash-on-file:
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '14'
- run: echo ${{steps.build.outputs.hash}} > /.github/ipfs-hash.txt
Второй
Как вы можете видеть в приведенном выше рабочем процессе, я добавил outputs
поле на уровне задания 1 (сборка), без этого вы не сможете делиться результатами на других заданиях.
Кроме того, чтобы разделить выходные данные между заданиями, вам придется добавить needs: [build]
строку на уровне job2 (сохранение хэша в файле).
Примечание: Я не смог запустить его успешно, так как у меня нет никаких учетных данных для тестирования, но он должен работать, если вы скопируете/вставите рабочий процесс, которым я поделился, используя свои учетные данные.