gitlab-- pages 功能实战

发布时间 2023-09-06 11:43:22作者: 邹邹很busy。

pages 介绍

在我们日常使用 gitlab 的过程中,会产生一些产物,自己做的一些小网站,小页面之类,一般都是在本地调试访问,一旦我们想让其他朋友也可以随时访问,就需要单独在公有云上买一个服务器去部署,一是需要付费,二是我们调试页面访问量不多,单独搞个服务器部署有点浪费。

使用 GitLab Pages,可以直接从 GitLab 的存储库中发布静态网站。

  • 用于任何个人或商业网站。
  • 使用任何静态站点生成器 (SSG) 或纯 HTML。
  • 为您的项目、组或用户帐户创建网站。
  • 在您自己的 GitLab 实例或 GitLab.com 上免费托管您的网站。
  • 连接您的自定义域和 TLS 证书。
  • 将任何许可归于您的内容。
  • Pages 支持的 SSG 示例

开启 gitlab 的 pages

默认 gitlab 的 pages 是关闭的,我们需要开启,我的 gitlab 是使用 docker 搭建的,进入到 docker 里面进行更改

# 进入到 gitlab 容器里
[root@dce88 ~]# docker exec -it gitlab-dev /bin/bash

编辑 gitlab.rb 文件

vi /etc/gitlab/gitlab.rb

加入下面的代码,保存

pages_external_url "http://pages.zouzou.com/"
gitlab_pages['enable'] = true
gitlab_pages['inplace_chroot'] = true

重新加载配置

# 在容器里加载配置
gitlab-ctl reconfigure

加载完配置之后在 gitlab 上查看

pages 功能实战

需求是这样的,我公司每天晚上都会对接口进行一次压测,将压测的结果保存在仓库里的 docs/ 目录下。文件如下

每个文件内容如下

这样看起来不直观,我们可以使用 gitlab 的 pages 功能,将所有的文件生成一个网站,在里面显示。

仓库目录如下

mkdocs.yml 文件内容如下,这个文件是必现有的,只有 site_name 是必现的,其他参数都是可选的

site_name: test report
site_url: http://pages.zouzou.com
site_dir: public
theme:
  name: material
  features:
    - toc.integrate
    #- navigation.expand

docs 目录下如下,index.md 文件必须有,我只写了一行注释,如下。还有两个压测报告文件

这样我们就配置好了仓库,接下来在 .gitlab-ci.yml 文件里写如下代码

default:
  tags:
    - docker 
    
stages:
  - build
  - deploy


build:
  stage: build
  script:
    - echo "我是 build"
  


pages: # job 的名称必须要是 pages
  stage: deploy
  retry:
    max: 2
  image: python:3.9.13-alpine3.16 # 使用一个 python 的镜像
  tags:
    - docker
  before_script: # 安装两个库 mkdocs 和 mkdocs-material
    - pip install mkdocs mkdocs-material --index-url http://mirrors.aliyun.com/pypi/simple/  --trusted-host mirrors.aliyun.com
  script: # 生成站点
    - mkdocs build --strict --verbose
  artifacts: # 制品
    paths:
      - public

mkdocs build --strict --verbose 命令执行完成之后,会生成一个 pubilc 的目录,gitlab 的 pages 也是根据 public 目录进行生成的

这样我们就写好了流水线,接下来运行流水线查看

点击 pages 的 job,查看日志

点击制品浏览

在查看设置下的 pages 页面,可以看到多了一个链接

在本地改一下 hosts 文件,将你 gitlab 服务器的地址添加到 hosts 文件里

10.6.215.70 root.pages.zouzou.com

点击上面的链接,看到下面的页面则成功。我们也可以写文档,然后部署在页面上