Github Pages 迁移到 Gitlab Pages

本文最后更新于 2019 年 4 月 7 日


最近询问如何将 Github Pages 迁移到 Gitlab Pages 上的小伙伴还挺多的,本文介绍在使用 Hugo 或 Hexo 时,如何进行这种迁移。

静态文件

无论对于 Hexo 还是 Hugo,这个方法都是通用的,之前怎么 push 到 git server 上还是怎么 push,这部分略做 github 和 gitlab 的修改即可。在推上去的根目录下有这样一个叫做 .gitlab-ci.yml 的文件即可:

.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
image: alpine:latest

pages:
stage: deploy
script:
- mkdir .public
- cp -r * .public
- mv .public public
artifacts:
paths:
- public
only:
- master

远端部署

对于 Hexo,要在整个博客目录下的 .gitignore中包含有 node_modules/public/.deploy*/ 。日后是要把博客目录里需要推上去的同步上去,然后由 gitlab 来进行生成静态文件的操作。

.gitlab-ci.yml 文件如下:

.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
image: node:8.11.2

pages:
cache:
paths:
- node_modules/

script:
- npm install hexo-cli -g
- npm install
- hexo g
artifacts:
paths:
- public
cache:
paths:
- node_modules
key: project
only:
- master

对于 Hugo 同理,其 .gitlab-ci.yml 文件如下:

.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
image: registry.gitlab.com/pages/hugo:latest

variables:
GIT_SUBMODULE_STRATEGY: recursive

test:
script:
- hugo
except:
- master

pages:
script:
- hugo
artifacts:
paths:
- public
only:
- master

References

GitHub Pages 迁移到 GitLab Pages 并启用 HTTPS 记录

从零开始建立个人博客 IX:由 GitHub 迁移到 GitLab

Hugo Example

Hexo Example

Plain Example

Mastodon