【问题标题】:Github Actions, Azure Devops "Publish Pipeline Artifact" Equivalent?Github Actions,Azure Devops“发布管道工件”等价物?
【发布时间】:2021-10-08 21:35:28
【问题描述】:

我看到 Microsoft 可能会朝着回避 Azure DevOps 的方向发展,并且更倾向于将 GitHub Actions 作为主要的自动化平台(推测,不确定是否属实),所以我正试图改变所有我将 DevOps 自动化转移到 GitHub Actions 上,当我这样做时,我注意到有一些缺乏相似之处。

在这种特定情况下,我想知道 GitHub Actions 中是否有与 Azure DevOps“发布管道工件”任务等效的任务?

我可以在 GitHub Actions 中找到最接近的内容是“actions/upload-artifact@v2”,但是这更类似于 Azure DevOps 的“发布构建工件”。我得到了用例并了解我可以使用它来做什么,但我想看看我是否可以在一个包中上传整个管道/工作流,而不是一个文件一个文件。

在 Azure DevOps 中,我的管道在 5-7 分钟内运行,因为我可以使用“发布管道工件”任务,但在 GitHub Actions 中,我只有“actions/upload-artifact@v2”操作,现在它完成相同的自动化任务最多需要 3 个小时。 (疯狂的差异!)。我认为增加的时间是由于 GitHub Actions 中的上传/发布任务逐个文件进行的,而在 Azure DevOps 中,上传/发布任务以某种方式压缩了所有内容,只需要大约 1 分钟即可完成。

非常感谢任何/所有帮助!我的 Google Fu 没有自动取款机。

【问题讨论】:

  • 我认为如果您在上传之前压缩文件应该会大大提高速度。
  • 有什么建议吗?因此,如果我想发布并稍后下载(在同一工作流程中),您建议我使用哪些操作。我基本上需要压缩它,发布 zip 文件 -> 然后下载 zip 文件并解压缩它吗?
  • 是的,使用 shell 脚本进行(解)压缩和下载/上传工件操作。

标签: azure-devops azure-pipelines github-actions azure-artifacts github-actions-artifacts


【解决方案1】:

它很慢,因为:

GZip 用于在开始上传之前在内部压缩单个文件。

因此,这不仅是因为每个文件都是单独发送的,而且每个文件也是单独压缩的。您目前最好的解决方法是压缩整个目录,就像 riQQ 已经写的那样。

可以这样做:

  - name: 'Tar files'
    run: tar -cvf my_files.tar /path/to/my/directory

  - name: 'Upload Artifact'
    uses: actions/upload-artifact@v2
    with:
      name: my-artifact
      path: my_files.tar    

一个很大的缺点是现在您每次下载工件时都需要解压缩它。

更多详情请查看topic - Upload artifact dir is very slow

【讨论】:

  • 谢谢,我认为压缩几乎是我唯一的选择。有趣的是 GitHub Actions 没有像 Azure DevOps 一样执行此任务的预打包操作。
  • 这里是 zip action 但这不是内置操作。
  • 我只用 linux zip 命令就能做到。另一方面,您对如何将已发布的工件传递给完全独立的工作流程有任何建议吗?有没有办法做到这一点?假设我压缩并压缩了一个目录然后发布了它,那么我如何能够在单独的工作流程中获取它?
  • 您可以使用此操作dawidd6/action-download-artifact@v2 从另一个工作流下载工件。
猜你喜欢
  • 1970-01-01
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
  • 2020-12-23
  • 2020-11-26
  • 2019-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多