Woodpecker CI部署Jekyll至Codeberg Pages报jekyll加载失败
问题原因
报错核心是依赖缺失:
- 你项目根目录的
Gemfile中声明了github-pages依赖,但你使用的jekyll/jekyll官方基础镜像仅预装了Jekyll核心组件,不会自带github-pages这个整合了大量Pages兼容插件的gem包。 - 你的流水线执行逻辑完全跳过了
bundle install安装项目依赖的步骤,Bundler在执行bundle exec jekyll build时,会校验Gemfile中所有声明的依赖是否在本地存在,找不到对应gem就会抛出Bundler::GemNotFound错误。
修复方法
调整流水线配置,在构建前增加依赖安装步骤,同时补全git部署必要的身份配置、修正鉴权地址写法,可直接使用的配置如下:
pipeline: publish: image: jekyll/jekyll secrets: [ codeberg_access_token ] commands: # 安装项目声明的所有Ruby依赖 - bundle install # 指定生产环境构建,跳过开发类依赖 - JEKYLL_ENV=production bundle exec jekyll build - cd _site - git init # 配置git提交身份,避免commit阶段报错 - git config user.name "Woodpecker CI" - git config user.email "ci@noreply.local" # 修正Codeberg鉴权地址格式,避免token鉴权失败 - git remote add up https://$CODEBERG_ACCESS_TOKEN@codeberg.org/mikwee/pages.git - git add . - git commit -m "Auto deploy to Codeberg Pages" - git push -u up master -f
额外优化提示:
- 如果你不需要兼容GitHub Pages的依赖环境,可以直接把
Gemfile里的gem "github-pages"行删除,只保留你实际用到的Jekyll和对应插件依赖,能大幅缩短CI执行时间。 - 如果依赖安装速度慢,可以在
bundle install前增加RubyGems镜像源配置,进一步提升执行效率。
内容的提问来源于stack exchange,提问作者mikwee
相关产品推荐
相关产品推荐

