如何在 GitLab 页面上传期间排除故障/调查错误?
How to troubleshoot / investigate an error during GitLab pages upload?
我 运行 我的页面工作并且它通过了,但是最后有以下消息
Uploading artifacts...
WARNING: public: no matching files
Uploading artifacts to coordinator... ok
Job succeeded
该网站似乎无法访问。所有构建步骤都成功且没有错误。我在我的机器上本地尝试构建并验证它是正确的。该网站的入口点是 index.html
(我想这是正确的?)。
如何解决这个问题?如果我能完成 "manually" 的工作就好了,这样我就可以在 CI 机器上构建文件后检查一些东西。这样我就不必一直提交+推送一个新的.gitlab-ci.yml
来检查/尝试。
非常感谢任何建议!谢谢!
P.S.: 如果这很重要,我会使用 Sphinx 构建网站。
编辑 - 一些细节
我通过 Sphinx 的 Makefile(它是我文档源的一部分)构建文档。 Sphinx 向我确认文件位于 build/html
中(我在本地计算机上确认了这一点)并将它们复制到 public 文件夹中。这是我的 ci.yaml
:
的相应摘录
- make html
- mkdir ~/.public
- cp -r build/html/* ~/.public/
- cd
- mv .public public
我不知道来自 Sphinx'conf.py
的哪些信息对于这种情况可能很有趣,我已经扫描过它并且它似乎没有损坏(本地构建也可以)。
作为输出,我获得了一个 index.html
+ 其他几个 HTML 文件,这些文件链接自 index.html
。这一切都放在 ~/public
.
如果能够在构建服务器上手动执行这些构建步骤,我将非常感激,因为我可以查看构建文件,然后也许可以找出问题所在。我没有找到任何文档证明这是可能的,但我也不认为这真的是 CI 背后的想法。现在我不确定我应该如何解决这个问题,因为它在我的机器上构建良好,另一方面我无法直接访问构建服务器。
编辑 2
我通过
验证
ls -al ~/public
在我的 ci.yaml
文件中,生成的文件都在正确的位置。特别是:
$ ls -al ~/public
[...]
-rw-r--r--. 1 root root 5621 Apr 13 23:31 index.html
[...]
所以 GitLab 页面似乎期待除 index.html
以外的其他东西?我从他们的示例页面存储库中 运行 Jekyll 示例,并且在 index.html
下工作正常。但也许 Jekyll 在构建过程中会生成更多文件。
根据 this documentation and this tutorial,GitLab 页面只会考虑名为 public
的文件夹,该文件夹位于 项目目录 内。也就是说 HTML 内容应该转到 ~/projectname/public
而不是 ~/public
.
我想我被这个问题吃掉了。实际上 ~/public
在 docker 图像中,我们作为 root 连接的地方......是 /root/public
:) 而不是 gitlab pages 所期望的。
你应该试试
mv build/html public
我 运行 我的页面工作并且它通过了,但是最后有以下消息
Uploading artifacts...
WARNING: public: no matching files
Uploading artifacts to coordinator... ok
Job succeeded
该网站似乎无法访问。所有构建步骤都成功且没有错误。我在我的机器上本地尝试构建并验证它是正确的。该网站的入口点是 index.html
(我想这是正确的?)。
如何解决这个问题?如果我能完成 "manually" 的工作就好了,这样我就可以在 CI 机器上构建文件后检查一些东西。这样我就不必一直提交+推送一个新的.gitlab-ci.yml
来检查/尝试。
非常感谢任何建议!谢谢!
P.S.: 如果这很重要,我会使用 Sphinx 构建网站。
编辑 - 一些细节
我通过 Sphinx 的 Makefile(它是我文档源的一部分)构建文档。 Sphinx 向我确认文件位于 build/html
中(我在本地计算机上确认了这一点)并将它们复制到 public 文件夹中。这是我的 ci.yaml
:
- make html
- mkdir ~/.public
- cp -r build/html/* ~/.public/
- cd
- mv .public public
我不知道来自 Sphinx'conf.py
的哪些信息对于这种情况可能很有趣,我已经扫描过它并且它似乎没有损坏(本地构建也可以)。
作为输出,我获得了一个 index.html
+ 其他几个 HTML 文件,这些文件链接自 index.html
。这一切都放在 ~/public
.
如果能够在构建服务器上手动执行这些构建步骤,我将非常感激,因为我可以查看构建文件,然后也许可以找出问题所在。我没有找到任何文档证明这是可能的,但我也不认为这真的是 CI 背后的想法。现在我不确定我应该如何解决这个问题,因为它在我的机器上构建良好,另一方面我无法直接访问构建服务器。
编辑 2
我通过
验证ls -al ~/public
在我的 ci.yaml
文件中,生成的文件都在正确的位置。特别是:
$ ls -al ~/public
[...]
-rw-r--r--. 1 root root 5621 Apr 13 23:31 index.html
[...]
所以 GitLab 页面似乎期待除 index.html
以外的其他东西?我从他们的示例页面存储库中 运行 Jekyll 示例,并且在 index.html
下工作正常。但也许 Jekyll 在构建过程中会生成更多文件。
根据 this documentation and this tutorial,GitLab 页面只会考虑名为 public
的文件夹,该文件夹位于 项目目录 内。也就是说 HTML 内容应该转到 ~/projectname/public
而不是 ~/public
.
我想我被这个问题吃掉了。实际上 ~/public
在 docker 图像中,我们作为 root 连接的地方......是 /root/public
:) 而不是 gitlab pages 所期望的。
你应该试试
mv build/html public