什么是Gitlab-pages
了解 GitLab-pages之前,我们先介绍一下 Github Pages。
Github Pages 是面向用户、组织和项目开放的公共静态页面搭建托管服 务,站点可以被免费托管在 Github 上,你可以选择使用 Github Pages 默 认提供的域名 github.io 或者自定义域名来发布站点。Github Pages 支持 自动利用 Jekyll 生成站点,也同样支持纯 HTML 文档,将你的 Jekyll 站 点托管在 Github Pages 上是一个不错的选择。
GitLab-pages是Github Pages的开源实现。
Gitlab Runner是Gitlab持续集成(Gitlab CI)的执行器,它执行定义在 .gitlab-ci.yml 中的命令或任务。 它们是独立的(虚拟)机器,通过Gitlab CI的协作API来获取任务。 一个Runner可以是指定用于一个特定的项目,也可以服务于Gitlab CI中的任意项目。
解析泛域名
解析一个泛域名,给域名之后会用来配置gitlab-pages的自定义域名,比如这里解析的是<pages.gitlab.XXXXXXX.com>,那么之后的gitlab-pages的自定义域名可能是<cx.pages.gitlab.XXXXXXX.com>。
docker
假设已经安装好GitLab(不管是什么方式安装,这里假设是使用docker安装的GitLab)
假设已经安装好docker和docker-compose
安装gitlab-runner
$ sudo mkdir /data/gitlab/gitlab-runner # 编写docker-compose.yml $ vim /etc/docker/compose/compose_gitlab/docker-compose.yml version: "3.6" services: gitlab: image: 'gitlab/gitlab-ce:11.4.4-ce.0' restart: always hostname: 'gitlab.XXXXXXX.com' ports: - "9090:9090" - "80:80" - '443:443' - '22:22' volumes: - '/data/gitlab/config:/etc/gitlab' - '/data/gitlab/logs:/var/log/gitlab' - '/data/gitlab/data:/var/opt/gitlab' gitlab-runner: image: 'gitlab/gitlab-runner:v11.5.0' restart: always volumes: - '/srv/gitlab-runner/config:/data/gitlab/gitlab-runner' - '/var/run/docker.sock:/var/run/docker.sock'
修改gitlab配置文件
$ vim /data/gitlab/config/gitlab.rb ... pages_external_url "http://pages.gitlab.XXXXXXX.com/" gitlab_pages['enable'] = true gitlab_pages['inplace_chroot'] = true ... pages_nginx['enable'] = true ... gitlab_rails['pages_path'] = "/var/opt/gitlab/storage_pages" ...
修改完配置需要重新加载配置(如果storage_pages这个目录没有生成可以手动创建)
$ docker exec -it f17fa15169b0 gitlab-ctl reconfigure
GitLab
这里的GitLab的版本是11.4.4
新建一个测试Repository,修改Repository的访问权限为公开
在新建的仓库内添加.gitlab-ci.yml
这里将参考https://gitlab.com/pages里面的 gitbook项目。
在新建的仓库内提交.gitlab-ci.yml,以及其他的md文件
记下token
这个token需要给GitLab Runner注册的时候使用
GitLab Runner
这里的token和URL就是上面
$ sudo docker exec -it 111a15169b0 gitlab-runner register
运行GitLab CI/CD
重新运行之前的pipline或者提交一个commit
如果上面的都成功那么恭喜你,这个时候你可以打开链接查看。