Github Actions,如何在作业步骤之间共享计算值?

2024-03-15

是否有一种 DRY 方法可以使用 Github Actions 在多个作业步骤中计算和共享值?

在下面的工作流程 yml 文件中,回声 ${GITHUB_REF} |剪切-d'/'-f3`-${GITHUB_SHA}在多个步骤中重复。

name: Test, Build and Deploy
on:
  push:
    branches:
      - master
jobs:
  build_and_push:
    name: Build and Push
    runs-on: ubuntu-latest
    steps:
      - name: Docker Build
        uses: "actions/docker/cli@master"
        with:
          args: build . --file Dockerfile -t cflynnus/blog:`echo ${GITHUB_REF} | cut -d'/' -f3`-${GITHUB_SHA}
      - name: Docker Tag Latest
        uses: "actions/docker/cli@master"
        with:
          args: tag cflynnus/blog:`echo ${GITHUB_REF} | cut -d'/' -f3`-${GITHUB_SHA} cflynnus/blog:latest

set-output https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-output-parameter可用于定义步骤的输出。然后可以在后续步骤中使用输出并在with and env输入部分。此外,返回输出的步骤应该有一个id,这是由消耗输出的步骤引用的。

以下是您的示例的外观。

name: Test, Build and Deploy
on:
  push:
    branches:
      - master
jobs:
  build_and_push:
    name: Build and Push
    runs-on: ubuntu-latest
    steps:
      - name: Set tag var
        id: vars
        run: echo "docker_tag=$(echo ${GITHUB_REF} | cut -d'/' -f3)-${GITHUB_SHA}" >> $GITHUB_OUTPUT
      - name: Docker Build
        uses: "actions/docker/cli@master"
        with:
          args: build . --file Dockerfile -t cflynnus/blog:${{ steps.vars.outputs.docker_tag }}
      - name: Docker Tag Latest
        uses: "actions/docker/cli@master"
        with:
          args: tag cflynnus/blog:${{ steps.vars.outputs.docker_tag }} cflynnus/blog:latest

这是另一个示例,显示如何动态设置操作要使用的多个变量。

      - name: Set output variables
        id: vars
        run: |
          pr_title="[Test] Add report file $(date +%d-%m-%Y)"
          pr_body="This PR was auto-generated on $(date +%d-%m-%Y) \
            by [create-pull-request](https://github.com/peter-evans/create-pull-request)."
          echo "pr_title=$pr_title" >> $GITHUB_OUTPUT
          echo "pr_body=$pr_body" >> $GITHUB_OUTPUT
      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v4
        with:
          title: ${{ steps.vars.outputs.pr_title }}
          body: ${{ steps.vars.outputs.pr_body }}

或者,您可以创建环境变量。

      - name: Set environment variables
        run: |
          echo "PR_TITLE=[Test] Add report file $(date +%d-%m-%Y)" >> $GITHUB_ENV
          echo "PR_BODY=This PR was auto-generated on $(date +%d-%m-%Y) by [create-pull-request](https://github.com/peter-evans/create-pull-request)." >> $GITHUB_ENV
      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v4
        with:
          title: ${{ env.PR_TITLE }}
          body: ${{ env.PR_BODY }}

Update:第一个示例中的 docker 操作已弃用。请参见这个答案 https://stackoverflow.com/questions/58350578/new-location-of-docker-actions/58350591#58350591了解在 GitHub Actions 中使用 docker 的最新方法。

Note:为了在人与人之间分享价值观不同的职位,请参阅这个问题 https://stackoverflow.com/questions/59175332/using-output-from-a-previous-job-in-a-new-one-in-a-github-action.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Github Actions,如何在作业步骤之间共享计算值? 的相关文章

  • 在 Github 提交中强制执行 PEP-8'ish 格式

    是否有任何预制解决方案可以在 Git 提交挂钩中强制执行良好的 Python 标准 有没有办法在本地结帐中自动执行此过程 类似于 Bazaar 可以将提交挂钩推送给客户端 当您签出存储库时 它会安装提交挂钩 这应该足够了 无需运行进一步的工
  • 自动更改 github 文件

    我制作了一个带有白名单的应用程序 withelist 位于 github 存储库上 只有一个文件 即 withelist 每次下载我的应用程序的用户想要被允许使用该应用程序时 都必须向我发送一个消息插入白名单 现在这个过程真的很慢 我想加快
  • Azure DevOps/VSTS 始终在干净的存储库上报告“DETACHED HEAD”

    Friends 我现在厌倦了 Azure DevOps VSTS Jenkins 好多了 现在仍然如此 只是我的组织想要使用 Azure DevOps 我有一个谜团需要帮助来解决 以下是我的笔记本电脑上的存储库 它没有未跟踪或未提交的更改
  • 使用 Github 注册表中的 Docker 镜像未经授权

    我在本地创建了 Docker 镜像 将其标记为 Github Docker 注册表 将其推送到 Github Docker 注册表 现在我想在 Github 操作中使用它来创建 Docker 镜像FROM字段但它总是失败unauthoriz
  • “user-images.githubusercontent.com”中的图像是否有过期时间?

    我正在使用博客提供服务GitHub 页面 https pages github com 博客服务有很多图像文件需要上传 所以我需要一个存储图像的存储库 在搜索存储库时 我发现了一种使用 github issues 的方法 我首先捕获图像 然
  • Github README.md 和 readme.md - 如何删除其中一个?

    不知何故 我最终在 github 上有了 README md 和 readme md 现在这两者相互影响 所以我的 GitHub app 完全混乱了 Github网站没有任何文件删除功能 如何删除这些文件之一 只需删除其中一个文件并提交删除
  • Flutter 分析/构建在 GitHub 操作中失败

    当运行以下操作时 它会失败flutter analyze 如果我删除它 稍后会失败flutter build 这两个命令在本地都可以正常工作 我理解该消息 但无法理解包路径可能有什么问题 GitHub 操作错误 flutter analyz
  • 从 git 中删除历史记录 - git 命令失败

    我正在尝试从 Git 历史记录中清除项目 bin 目录 我已经将 bin 添加到 gitignore 并运行 git rm cached r bin成功地 现在我尝试使用 GitHub 帮助页面中推荐的命令来清除历史记录 git filte
  • 我可以通过链接分享我的私人 GitHub 存储库吗?

    我在 GitHub 上的私人存储库中有一个 Java 应用程序 我想与没有帐户的人共享它 我在网站上没有找到任何与此相关的选项 有没有办法做到这一点 协作者只能是 GitHub 用户 无法在非 Github 用户之间共享私有存储库 您需要
  • Git 子模块:[电子邮件受保护]:权限被拒绝(公钥)。致命:无法从远程存储库读取

    我有一个问题git submodule update init remote 我收到错误 权限被拒绝和克隆失败 但我将 SSH 密钥添加到了我的 github 存储库中 我可以拉 推 git 克隆 我拥有所有需要的访问权限 我使用操作系统
  • 在 github 上的 fork 中跟踪上游的最佳实践

    摘要 对于要维护一组本地更改的上游存储库 处理长期运行跟踪的最佳实践是什么 我想让 github 上的 fork 与上游保持同步 但仍然允许清晰跟踪 fork 特有的更改 对于本次讨论 假设upstream指向主项目存储库并且origin指
  • 在 github 上下载 ZIP 时没有 .xcodeproj 文件

    我正在尝试将我的 GitHub 项目放入 Xcode 中 当我从 GitHub 下载时 zip 文件不包含任何 xcodeproj 文件 另外 即使我在 xcode 上登录 GitHub 克隆 下载时也没有 在 Xcode 中打开 选项 如
  • 自动将所有 GitHub 存储库镜像到 gitlab

    对于 GitLab 必须手动为每个存储库设置拉 推镜像 我想知道那里有any way可以自动将所有 Github 存储库同步到 GitLab 这样 当您在 GitHub 中创建新的存储库时 GitLab 中的存储库将自动创建 并充当拉取镜像
  • 如何制作 github PR 请求审查整个文件?

    有这个问题 https github com isaacs github issues 284这是相关的 允许对更改集之外的部分代码进行注释 我只是想知道是否有人有聪明的解决方法或流程来实现类似的 也许更简单的事情 因此 我有一组不同的文件
  • Composer 用于下载私有 GitHub 存储库

    我无法使用 Composer 下载 github 私人存储库 php composer phar update 我收到以下错误 The https api github com repos company private1 https ap
  • 无法从 Sourcetree 拉取 Git 远程存储库

    我生成了 ssh 密钥并配置了我的 git 和 SourceTree 我可以 git pull 并从 Git bash 执行其他操作 注意 我在 bashrc 中添加了以下内容以使其正常工作 eval ssh agent ssh add 然
  • 为什么我的 Github 托管网站响应 HTTP 302 而不是 200?

    我拥有该域名penkov id au http penkov id au 我主持一个blog http michael penkov id au blog 2014 01 02 reinventing the wheel html usin
  • 缺少节点-v59-linux-x64/grpc_node.node

    我正在尝试在我的服务器中使用 Firebase admin SDK 当我部署时 出现错误 我在 firebase admin node module 映射中缺少文件 node v59 linux x64 grpc node node 我在包
  • Composer 无法获取 github

    今天 我尝试通过运行来安装 Laravelcomposer create project laravel laravel 5 1 myproject prefer dist我收到此错误 Could not fetch https api g
  • Github - 上传文件

    我正在尝试将文件夹添加到 github 存储库 该文件在 github 上显示为空 并有一个绿色箭头 有谁知道如何解决这个问题 我将不胜感激你的帮助 谢谢 这看起来类似于 Git 如何跟踪未跟踪的内容 https stackoverflow

随机推荐

  • WEBHDFS REST API 将文件从 Windows 服务器/本地文件夹/桌面复制/移动到 HDFS

    使用 WEBHDFS REST API 调用 我可以将文件从 Windows 计算机 即 Windows 服务器或 Windows 本地文件夹或桌面 传输或复制到 Hadoop HDFS 文件系统吗 如果是 有任何示例命令信息吗 我已经尝试
  • 分解量子态

    我正在寻找采用由位组成的加权经典状态之和组成的任意量子态的算法 如下所示 0000 gt 2 0011 gt 2 0100 gt 2 0111 gt 2 并使用张量积将其分解为更紧凑的形式 如下所示 0 gt x 0 gt 1 gt x 0
  • 循环或重复一组任务直到成功

    我目前有一个包含任务文件的剧本 在该任务文件中 我想检查一个条件 如果该条件的退出代码不等于 0 则应重复任务文件中的所有步骤 我已经尝试了块和循环的一些变体 但我还没有找到一种方法来使它执行我上面描述的操作 目前我有这样的事情 tasks
  • eax如何存储大小大于4字节的返回值?

    EAX在32位平台上用于存储函数的返回值 我想知道如果函数的返回值的大小大于4个字节 eax如何处理 在这种情况下 操作系统可以将返回值保存在堆栈上 并将堆栈地址存储在EAX中 但是操作系统如何判断EAX中存储的值是返回值的地址还是实际上是
  • 单括号和双括号 Numpy 数组的区别?

    这两个 numpy 对象有什么区别 import numpy as np np array 0 0 0 0 np array 0 0 0 0 In 71 np array 0 0 0 0 shape Out 71 1 4 In 72 np
  • 在 [FINE UPLOADER] 中显示以前上传的图像

    我正在使用精细的上传器插件来上传图像 图片上传工作正常 我想做的是 当图像上传后刷新页面时 精细上传器应该显示以前上传的图像 这是我的代码 accordion on shown bs collapse function activeShop
  • 如何在 Laravel Eloquent 中使用带有子查询的内连接

    注意 这是 laravel 5 3 基本上 当用户选择阿拉伯语翻译时 我正在运行查询 完整的 sql 如下所示 select s ref t text as ref ar FROM stores AS s INNER JOIN SELECT
  • 在 SharePoint 2013 中以编程方式创建文件夹

    目前我有在中创建文件夹的代码Documents运行时目录 using var context new Microsoft SharePoint Client ClientContext sharePointSite context Cred
  • 方案中的河内塔(递归)

    今天在scheme中写了如下代码 但是求值错误 请不要告诉我我编程很糟糕 我知道这是一个经典的递归问题 但我遇到了麻烦 define towers of hanoi n source temp dest if n 1 begin displ
  • 解析 ISO 8601 值 24:00:00 的日期失败

    我正在尝试解析来自数据源的传入日期 无法更改 它给了我 ISO 8601 格式示例的时间 2007 04 05T24 00 然而在 Net 中它无法将其解析为有效时间 维基百科指出它应该是有效的格式 维基百科 ISO 8601 http e
  • 更少的 mixin 和变量

    我有以下混合 iconFont color green font size 18px color color font size font size 如果我只想更改第二个变量值 我需要编写第一个变量默认值吗 h1 iconFont gree
  • Drupal 7在自定义主题中覆盖jquery js文件

    是否可以重写 覆盖自定义模板脚本变量中使用的默认 Drupal 7 26 jquery 我的意思是js文件之一 通过自定义主题来的一个 我试过这个sites all MYTPL template php但它不起作用 scripts misc
  • 不在映射中的字段包含在 ElasticSearch 返回的搜索结果中

    我想使用 Tire gem 作为 ElasticSearch 的客户端来索引 pdf 附件 在我的映射中 我从 source 中排除附件字段 以便附件不会存储在索引中 并且未在搜索结果中返回 mapping source gt exclud
  • Visual Studio Android 模拟器网络不工作

    I started using xamarin in visual studio and I installed visual studio android emulator Emulator works flawlessly but ne
  • 编辑超链接 Excel 2010 宏

    好的 我想创建一个宏来替换超链接的一部分 我的 Excel 文件中有大量的超链接 有没有办法创建一个宏来做到这一点 例如 www OldName com www Oldname com a www Oldname com b to www
  • C++ 非阻塞异步定时器

    我读过很多关于这个问题的帖子 但没有找到这个问题的答案 我想制作一个在后台运行并在完成后执行某些操作的计时器类 甚至我想一次调用多个异步倒计时的计时器 我在搜索这个类时发现了它 它似乎有效 但不在后台 我怎样才能将它转换为我想要的 Time
  • 如何在jquery mobile中初始化页面? pageinit 未触发

    在 jquery 移动页面上初始化对象的正确方法是什么 这事件文档 http jquerymobile com test docs api events html说使用 pageInit 没有该函数的示例 但给出了绑定到 的示例pagein
  • 在 iphone 应用程序中使用来自 sharekit 的 twitter 时无法验证 OAuth

    我正在 iphone 应用程序中使用 sharekit 实现 facebook 和 twitter 共享 Facebook 共享工作正常 但 twitter 共享出现错误 无法验证 OAuth 我遇到了同样的问题 这解决了它 https g
  • 使用 Fluent Nhibernate Table-Per-Subclass 策略时可以指定标识列吗?

    我正在创建一个 Fluent N hibernate 子类映射 目前看起来像这样 public class TaskDownloadMap SubclassMap
  • Github Actions,如何在作业步骤之间共享计算值?

    是否有一种 DRY 方法可以使用 Github Actions 在多个作业步骤中计算和共享值 在下面的工作流程 yml 文件中 回声 GITHUB REF 剪切 d f3 GITHUB SHA 在多个步骤中重复 name Test Buil