【问题标题】:Run command taking output from previous step on GitHub actions在 GitHub 操作上运行从上一步获取输出的命令
【发布时间】:2021-12-05 00:50:17
【问题描述】:

我正在尝试创建一个 GitHub 操作来构建一个 Hugo 网站,将其部署在 Pinata 上并将最后一步的输出哈希保存到一个 txt 文件中。我设法实现了第一步和第二步。而且,对于第三个,我一直在尝试通过运行“echo”命令来做到这一点。但是,我收到此消息:“第 36 行的 yaml 语法有错误”

如何运行脚本以获取标识为“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

【问题讨论】:

  • 您是否尝试在第二个作业配置中添加needs: build?如果我没记错的话,当您想使用特定工作的输出时,这是强制性的。我也会尝试在" 之间添加 ${{ ... }} 回显部分来解决语法错误。
  • @GuiFalourd 好的!谢谢。我添加了这两件事。但是,我仍然收到语法错误。它似乎在第二份工作之前的最后一行。
  • 我想我知道发生了什么。首先,您的缩进似乎有问题,我在这里复制了工作流程以更正它而不返回错误:github.com/GuillaumeFalourd/poc-github-actions/blob/main/… - 其次:我一开始没有看到它,但是您忘记在 job1 中添加outputs 字段(构建)级别,没有这个你就不能在其他工作上共享输出(我无法成功运行它,因为我没有任何证书可以测试)。如果您使用您的凭据复制/粘贴我共享的工作流程,它应该可以工作。
  • 让我知道它是否有效,以便我添加官方答案????
  • @GuiFalourd 是的,当然!有用。谢谢!!

标签: yaml github-actions


【解决方案1】:

首先

您的缩进似乎有问题,I reproduced the workflow 在将工作流推送到存储库时更正它而不返回错误:

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

第二

正如您在上面的工作流程中看到的,我在 job1(构建)级别添加了 outputs 字段,否则您将无法在其他作业上共享输出。

Reference about outputs

此外,要在作业之间共享输出,您必须在 job2(saves-hash-on-file)级别添加 needs: [build] 行。

注意:我无法成功运行它,因为我没有任何要测试的凭据,但如果您复制/粘贴我使用您的凭据共享的工作流,它应该可以工作。

【讨论】:

    猜你喜欢
    • 2022-12-29
    • 2011-05-21
    • 2022-06-14
    • 2021-06-08
    • 2020-11-20
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2020-01-16
    相关资源
    最近更新 更多