当持续集成通过并构建工件时,如何在 GitLab 页面上生成鹈鹕站点?

How to get pelican site generate on GitLab Pages when continuous integration passes and artifacts are being built?

我使用 pelican 作为静态站点生成器来构建静态站点。我想将其托管在 GitLab Pages 上,并让该站点通过 GitLab 与 Makefile 的持续集成生成。

该站点通过其 CI/CD 管道在本地和 GitLab 上成功构建。 构建代码通过工件上传,作业成功。内容文件在 public 文件夹中构建和生成。

不知何故,在构建通过并根据需要将工件上传到 public 文件夹后,预计静态站点将托管在 GitLab 页面的用户页面上,如 username.gitlab.io/projectname

尽管建议的等待时间为 15 分钟到半小时,但即使在 15 个多小时后仍无法正常工作。

还尝试了在自定义子域上托管。子域已验证,但尚未生成站点。

作为参考,下面提到了使用中的最少代码。

.gitlab-ci.yml

# default to using the latest Python docker image for builds
image: python:3.7.0

# our build job installs the Python requirements and Pelican
# plugins, then runs ``make publish`` to generate the output
build:
  stage: deploy
  script:
  - apt-get update -qq && apt-get install -y -qq python python-pip
  - python -v
  - pip install  -r requirements.txt
  - git clone --recursive https://github.com/getpelican/pelican-plugins ../plugins
  - pelican -s publishconf.py
  - make publish
# specify the artifacts to save
  artifacts:
    paths:
      - public/
  only:
  - master

publishconf.py

#!/usr/bin/env python
# -*- coding: utf-8 -*- #
from __future__ import unicode_literals
import os

AUTHOR = 'Tanya Jain'
SITENAME = 'Tanya Jain'
SITEURL = '/public'
DESCRIPTION = ''
THEME = 'themes/stellarAdventurerTheme'

PATH = 'content'
OUTPUT_PATH = 'public'

pelicanconf.py

#!/usr/bin/env python
# -*- coding: utf-8 -*- #
from __future__ import unicode_literals
import os

AUTHOR = 'Tanya Jain'
SITENAME = 'Tanya Jain'
SITEURL = '/public'
DESCRIPTION = ''
THEME = 'themes/stellarAdventurerTheme'

PATH = 'content'
OUTPUT_PATH = 'public'

生成文件

PY?=python3
PELICAN?=pelican
PELICANOPTS=

BASEDIR=$(CURDIR)
INPUTDIR=$(BASEDIR)/content
OUTPUTDIR=$(BASEDIR)/public
CONFFILE=$(BASEDIR)/pelicanconf.py
PUBLISHCONF=$(BASEDIR)/publishconf.py

FTP_HOST=localhost
FTP_USER=anonymous
FTP_TARGET_DIR=/

SSH_HOST=localhost
SSH_PORT=22
SSH_USER=root
SSH_TARGET_DIR=/var/www

请帮助如何在 GitLab Pages 上生成站点!

更新 1:

尝试了这些更改也没有用。然而,我相信这些更改是在 pelican 设置中进行的,而不是 GitLab 的 YAML。

pelicanconf.py

SITEURL = ''

publishconf.py

SITEURL = 'http://subdomain.example.com'

没有发表评论和要求澄清的名誉。因此,在答案正文中写入 question/answer 。

默认情况下,pelican 使用相对路径,这很容易与 python SimpleHTTPServer 一起使用。对于 Gitlab 页面,你必须使用绝对 URLs。请检查您是否使用了绝对值 URL,也许这就是问题所在。

# In Publishconf.py
SITEURL = 'https://username.gitlab.io/pelican2048'

参考:#1

来源:Static website using Pelican, hosting on Gitlab

更新:我相信你已经看到了,但是请交叉检查https://gitlab.com/pages/pelican and https://mister-gold.pro/posts/en/deploy-pelican-on-gitlab-pages/

希望对您有所帮助!

非常感谢您的帮助!我已经解决了这个问题。该错误是由于在 .gitlab-ci.yml 中将作业提到为 build 并且缺少作业 pages。使用 pages 作为作业是部署 GitLab 页面的必要条件,可以进一步阅读提到的参考资料。因此,正确的脚本应该是:

image: python:3.7.0

pages:
    stage: deploy
    script:
    - apt-get update -qq && apt-get install -y -qq python python-pip
    - python -v
    - pip install  -r requirements.txt
    - git clone --recursive https://github.com/getpelican/pelican-plugins ../plugins
    - pelican -s publishconf.py
    - make publish
    artifacts:
        paths:
            - public/
    only:
    - master

参考文献:

  1. Exploring GitLab Pages (documentation)
  2. Creating and Tweaking GitLab CI/CD for GitLab Pages