如何在不触发下载的情况下查看原始构建工件?
How to view a raw build artifact without trigerring a download?
在 GitLab 上,您可以通过烦人的重定向 URL 浏览和下载作业工件,如下所示:
- https://gitlab.com/NatoBoram/eldarya-enhancements/-/jobs/artifacts/master/browse/dist?job=deploy
- https://gitlab.com/NatoBoram/eldarya-enhancements/-/jobs/artifacts/master/file/dist/eldarya-enhancements.min.user.js?job=deploy
- https://gitlab.com/NatoBoram/eldarya-enhancements/-/jobs/artifacts/master/raw/dist/eldarya-enhancements.min.user.js?job=deploy
我可以在 release 页面中使用这些 URL 作为下载 link。但是,我正在分发用户脚本;用户不想下载它们,他们想要查看它们(因此 TamperMonkey 和 Greasemonkey 可以安装它们)。
如何让用户可以从任意 branch/tag/commit 安装用户脚本而无需退出 GitLab?
不幸的是,gitlab.com 不支持此功能,因为 workhorse 始终将工件的内容处置设置为 'attachment',导致浏览器下载文件。内容处置 header 设置为 'inline' 的唯一情况是在查看 blob 时。
最好的解决方法是将构建的文件提交到存储库(或另一个 repository/snippets)并使用原始视图。方便的是,项目片段基本上是存储库中的一个存储库,您可以将其用于此目的。
例如,您可以在管道中使用 project snippets API 创建包含用户脚本的片段,然后在发布中使用原始片段 URL。我在使用 tampermonkey 时对其进行了测试。
另一种可能的解决方法是将您的文件托管在 GitLab 页面上,但每次发布到 GitLab 页面都会覆盖之前的发布,因此您必须每次都下载所有以前的工件和 re-publish 它们如果您想支持所有 branches/tags.
这也可能证明是有问题的,因为并发管道(如标签+分支管道)可能有 race-conditions 除非你用资源组保护它们。
在 GitLab 上,您可以通过烦人的重定向 URL 浏览和下载作业工件,如下所示:
- https://gitlab.com/NatoBoram/eldarya-enhancements/-/jobs/artifacts/master/browse/dist?job=deploy
- https://gitlab.com/NatoBoram/eldarya-enhancements/-/jobs/artifacts/master/file/dist/eldarya-enhancements.min.user.js?job=deploy
- https://gitlab.com/NatoBoram/eldarya-enhancements/-/jobs/artifacts/master/raw/dist/eldarya-enhancements.min.user.js?job=deploy
我可以在 release 页面中使用这些 URL 作为下载 link。但是,我正在分发用户脚本;用户不想下载它们,他们想要查看它们(因此 TamperMonkey 和 Greasemonkey 可以安装它们)。
如何让用户可以从任意 branch/tag/commit 安装用户脚本而无需退出 GitLab?
不幸的是,gitlab.com 不支持此功能,因为 workhorse 始终将工件的内容处置设置为 'attachment',导致浏览器下载文件。内容处置 header 设置为 'inline' 的唯一情况是在查看 blob 时。
最好的解决方法是将构建的文件提交到存储库(或另一个 repository/snippets)并使用原始视图。方便的是,项目片段基本上是存储库中的一个存储库,您可以将其用于此目的。
例如,您可以在管道中使用 project snippets API 创建包含用户脚本的片段,然后在发布中使用原始片段 URL。我在使用 tampermonkey 时对其进行了测试。
另一种可能的解决方法是将您的文件托管在 GitLab 页面上,但每次发布到 GitLab 页面都会覆盖之前的发布,因此您必须每次都下载所有以前的工件和 re-publish 它们如果您想支持所有 branches/tags.
这也可能证明是有问题的,因为并发管道(如标签+分支管道)可能有 race-conditions 除非你用资源组保护它们。