我没有网站建设经验。我已经按照 gitlab 上的说明创建了一个示例 jekyll 站点(包括删除 fork 关系并将 url 重命名为 groupname)。在 gitlab 上,.gitlab-ci.yml文件包含:
pages:
stage: deploy
script:
- gem install jekyll
- jekyll build -d public/
- cp -r static/* public/
artifacts:
paths:
- public
only:
- pages
在gitlab的'root'文件夹中,有index.html、目录(css、static)等。在gitlab-ci.yml文件中可以看到,gitlab将静态目录的内容复制到根文件夹(public )。尽管在查看我的项目页面(而不是副本)时只有静态文件。
在 linux 上,我已经安装并运行了jekyll,但它显示不正确。命令行中的“未找到”错误所有引用路径都在静态目录中(其中包含 css、font-awesome、fonts、img 和 js 的子目录)。
我不愿意在本地弄乱文件/目录位置,因为当我想将更改部署到 gitlab 时可能会导致问题。如何在本地模拟(使用“bundle exec jekyll serve”命令)gitlab 正在做什么(将静态复制到根目录)?还是有另一种方法来处理/解决这个问题?
编辑:运行 serve 命令时,我还看到“配置文件:无”消息。虽然有一个 _config.yml 文件,但我认为它可能需要一些配置。在不同的 gitlab/jekyll主题上,有一些配置说明。我将不得不进一步调查。
解决后编辑:
根据 Ross 的建议,我将 .gitlab-ci.yml 文件中的行从“jekyll build -d public/”更新为“bundle exec jekyll build -d public”。对于这个文件,我看到其他人已经删除了“gem install jekyll”这一行,但我仍然拥有它并且它现在可以工作。尽管我想知道是否应该将其更改为“捆绑安装”,以便 gitlab/local jekyll 版本相同。bundle 命令读取 Gem 文件,我指定了 jekyll 版本。我不确定这是否会告诉 gitlab 使用特定版本的 jekyll,或者他们是否只使用他们的版本。
然后在 linux 上本地使用从 gitlab 下载的 .yml 文件进入站点目录。然后跑了
mkdir public
bundle install
bundle exec jekyll build -d public/
cp -r static/* public/
cd public/
jekyll serve
提供的页面不再损坏。它现在看起来与实际的 gitlab.io 页面完全相同。