最近在公司内部,我负责搭建了GitLab服务,开启了从SVN逐步转到GIT的路程。目前自建的GitLab运行状态良好,非常好用。但是默认的GitLab并没有开启Pages服务,这样的话在编写项目说明文档时,就很不方便了。于是自己试着在本地搭建的GitLab中开启Pages功能,下面把开启过程和遇到的问题记录下来,分享给大家。
1、开启GitLab Pages功能
编辑 /etc/gitlab/gitlab.rb文件,修改如下两行
##! Define to enable GitLab Pages
pages_external_url "http://R7102/"
gitlab_pages['enable'] = true
注意的这里的pages_external_url,配置的是Pages使用的域名。如果你没有域名,就先随便写个主机名什么的。之后我们可能通过配置Nginx来解决。
※注意,最好通过 gitlab-ctl restart 重启GitLab,使得GitLab Pages功能生效。
2、安装配置GitLab Runner
为了能够自动发布Pages,我们需要安装GitLab Runner,然后通过GitLab CI做到Pages内容的自动更新。
由于网络环境不稳定,所以建议不要使用yum方式安装Runner,可以点击下面的链接下载GitLab Runner的安装包。
https://packages.gitlab.com/runner/gitlab-runner
安装好之后,就可以通过命令为我们的项目添加runner了,在命令行中输入以下命令,按照提示一步一步完成即可。
gitlab-runner register
其中需要填写URL和Token,可以在GitLab项目的概览->Runners找到,类似下图:
3、配置Pages服务的CI
在工程根目录下,创建.gitlab-ci.yml文件,文件内容可以通过GitLab内置的模板生产,如下图:
这里选择HTML为例,就生产了以上代码。其中cp -r docs/. .public这句根据需要修改,将docs改为你存放pages页面的路径即可。
这样,当我们每次执行push动作后,就会触发pages的自动部署。将我们的pages页面发布到GitLab Pages服务中。
4、如何访问Pages页面呢?
如果你有在上面配置开启Pages时配置了域名了,那么直接访问:http://你的Git账号.域名/工程名,例如:
http://xiaowang.mypages.com/project01
但是如果你不想那么麻烦还得配置域名的话,这里也有解决方法,由于GitLab Pages服务是部署到Nginx中,我们可以同配置Nginx来通过IP地址访问。
首先要找啊找,找到Pages的发布位置,和GitLab内置Nginx的位置,分别如下:
1、Pages部署目录:/var/opt/gitlab/gitlab-rails/shared/pages
2、内置Nginx目录:/var/opt/gitlab/nginx
然后编辑nginx目录下的conf/gitlab-pages.conf文件,内容如下:
server {
listen 6869; ## 端口根据需要填写
server_name 10.21.100.200; ## IP根据实际情况填写
server_tokens off; ## Don't show the nginx version number, a security best practice
## Disable symlink traversal
disable_symlinks on;
access_log /var/log/gitlab/nginx/gitlab_pages_access.log gitlab_access;
error_log /var/log/gitlab/nginx/gitlab_pages_error.log;
# Pass everything to pages daemon
location / {
# 指向pages的发布目录
root /var/opt/gitlab/gitlab-rails/shared/pages;
index index.html;
}
# Define custom error pages
error_page 403 /403.html;
error_page 404 /404.html;
}
配置好后重启Nginx:gitlab-ctl restart nginx
访问页面:http://IP:端口/gitlab账号/工程名/public/,例如:http://10.21.100.200:6869/xiaowang/project01/public/#/
来源:oschina
链接:https://my.oschina.net/u/102140/blog/3044964