Gitlab:发布HTML报告

时间:2018-02-12 09:25:28

标签: gitlab gitlab-pages

我正在使用gitlab管道来运行一些测试并生成覆盖率报告。

我想要做的是能够将生成的coverage文件夹(包括html页面和src文件夹)发布到某个内部gitlab静态页面,供一些团队成员查看。

我知道gitlab pages概念,但步骤表明我必须为此目的使用静态站点生成器。

我的问题如下:

  • 是仅在官方gitlab网站(gitlab.io)上发布时才可使用的概念,或者我是否可以使用我的on gitlab安装(即我的网页可用于{ {1}})?

  • 我可以上传一个my.local.gitlab.server/mynamespace/thepagesproject文件及其内容的文件夹并使其可以访问吗?

  • 使用 EXISTING 项目的最佳方式是什么,以便只添加一些html页面(理想情况下我想避免为此创建一个新项目目的)

1 个答案:

答案 0 :(得分:8)

我可以在自托管实例上使用GitLab页面吗?

是的,GitLab页面可以在自托管实例上运行。如果仅通过https运行gitlab,则可能需要注册*.pages.<your-gitlab-domain-name>的通配符域名并生成SSL证书。

拥有域后,编辑/etc/gitlab/gitlab.rb并添加其他设置,然后运行gitlab-ctl reconfigure(如果仅通过http运行,请忽略pages_nginx设置:

gitlab_pages['enable'] = true
pages_external_url "https://pages.<your-gitlab-domain-name>"
pages_nginx['redirect_http_to_https'] = true
pages_nginx['ssl_certificate'] = "/etc/gitlab/ssl/pages.<your-gitlab-domain-name>.crt"
pages_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/pages.<your-gitlab-domain-name>.key"

完成后,您将可以通过<group>.pages.<your-gitlab-domain-name>/<project>

访问每个项目的页面

我可以将想要上传的内容上传到页面吗?

是的。每个GitLab CI作业都可以通过将内容写入public文件夹,并将public注册为工件目录来创建要发布在GitLab页面中的内容。最后的pages作业应添加到CI管道,这将导致发布页面内容(覆盖以前的所有内容)。 public目录的所有内容都可以通过<group>.pages.<your-gitlab-domain-name>/<project> URL获得,这意味着您可以完全控制内容。

请注意,CI中的pages作业不需要任何脚本,只需要使用作业名称“ pages”显示即可。这是一个魔术作业名称,可触发页面发布。您可能需要添加作业限制,以使其仅在主分支管道上运行。

我可以添加发布到现有项目的页面吗?

是的。创建您要发布的内容的任何步骤都应将内容写入public子目录,并将public目录注册为工件目录。

my job:
  stage: build
script:
  - echo "Do some things and write them to public directory" > public/index.html
artifacts:
  paths:
  - public
    expire_in: 2 weeks

注意:我喜欢添加expire_in: 2 weeks来限制工件保留的时间长度。页面发布后,就不再需要这些工件了。

最后,您需要添加一个pages作业以触发发布页面:

# This job does nothing but collect artifacts from other jobs and triggers the pages build
# The artifacts are picked up by the pages:deploy job.
pages:
  stage: deploy
  script:
    - ls -l public
  artifacts:
    paths:
      - public
  only:
    - master

通常,您只希望在master分支上发布,但是可以自由选择何时运行页面。重要的是要注意,当页面发布运行时,它将完全替换以前发布的任何内容,因此您不能追加到现有内容上(尽管有些黑客可以使您实现类似的目的)。