当持续集成通过并构建工件时,如何在 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
参考文献:
我使用 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
参考文献: