找不到Gitlab CI页面

找不到Gitlab CI页面,gitlab,gitlab-ci,gitlab-ci-runner,Gitlab,Gitlab Ci,Gitlab Ci Runner,我正在使用GitlabCI和我自己的基于docker的Gitlab Runner,并已正确注册 这就是我使用docker和docker compose运行runner的方式 version: "3" services: gitlab_runner: image: gitlab/gitlab-runner:alpine-v11.3.1 restart: always container_name: gitlab_runner_my_project enviro

我正在使用GitlabCI和我自己的基于docker的Gitlab Runner,并已正确注册

这就是我使用docker和docker compose运行runner的方式

version: "3"
services: 
  gitlab_runner:
    image: gitlab/gitlab-runner:alpine-v11.3.1
    restart: always
    container_name: gitlab_runner_my_project
    environment:
      - CI_SERVER_URL=https://gitlab.com/
    volumes:
      - ./volumes/runner:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock:rw
这是我的跑步者配置

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "runner for my project"
  url = "https://gitlab.com/"
  token = "my-token"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "docker:stable-dind"
    privileged = true
    disable_cache = true
    pull_policy = "if-not-present"
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
    shm_size = 0
    run_untagged = true
  [runners.cache]
    Type = "s3"
    Path = "cache"
    Shared = true
    [runners.cache.s3]
      ServerAddress = "s3.amazonaws.com"
      AccessKey = "AWSkey"
      SecretKey = "AWSsecret"
      BucketName = "grcache"
      Insecure = false
使用下面的代码,我可以运行测试、覆盖、部署并发布包含覆盖率报告的页面

stages:
  - test
  - deploy

test:
  image: ruby:2.5.1
  tags:
    - my_tag
  stage: test
  services:
    - mongo:3.6.3
  variables:
    RAILS_ENV: test
    MONGODB_URI: ...
  before_script:
    - bundle install
  script:
    - bundle exec rspec spec/
  artifacts:
    paths:
      - coverage/*

staging_deploy:
    .
    .
    .

pages:
  image: alpine:latest
  tags:
    - my_tag
  stage: deploy
  dependencies:
    - test
  script:
    - cp -r coverage/ public/
  artifacts:
    paths:
      - public
    expire_in: 30 days
  only:
    - test-coverage
测试运行得很好,覆盖率、部署和假定发布页面都很好。下图显示了作业页面的日志

这些是管道中显示的工作

当我访问项目的Pages部分时,一切看起来都很好

但是当我想访问该页面时。博姆


为什么在
覆盖范围的末尾添加星号?我猜可能部分文件或整个目录
覆盖范围
未被git跟踪。在这种情况下,从测试阶段更改存储的工件路径有助于:

artifacts:
  untracked: true
  paths:
    - coverage/
仅为了快速脏调试,您始终可以向.gitlab-ci.yml添加一些脚本,以查看复制操作前后相关dir中的内容:

script:
  - ls -al
  - ls -al coverage
  - ls -al public
  - cp -r coverage/ public/
  - ls -al coverage
  - ls -al public
也许这会让我们对这个问题有所了解。你的.gitlab-ci.yml看起来不错

编辑:正如你所说,这可能是一个权限问题。我怀疑这是否有帮助,因为这个
public
dir是一个工件,权限对它不重要。但只需检查一下,您就可以修改它的权限:

script:
  - chmod -R 755 public

您可以通过检查环境变量来检查实际页面URL:

pages:
  ...
  script:
    - ... others scripts
    - echo $CI_PAGES_URL
  artifacts:
    paths:
      - public

我尝试了你的建议,以便于调试,而且还提供了公共/覆盖,一切看起来都很好。所有文件都已复制。可能有趣的是,所有权限都以root:root的方式存在,因为我使用的是基于docker的运行程序。到目前为止,结果是一样的。我会选择另一个运行程序来检查它(这些臭名昭著的权限,我也使用docker executors,这有点混乱,因为CI上有一个gitlab runner用户),如果这是一个选项,请在gitlab提供的共享运行程序上只尝试.gitlab-CI.yml中最小的页面部署位。我已经用权限建议更新了我的答案。Gitlab是否为您创建了另一个名为
pages:deploy
的作业?是的,Gasol。我编辑了显示管道中作业的问题。您的覆盖率文件夹是否包括一个名为index.html的文件?是的,Philipp Ludwig,它包括。它位于coverage文件夹中。我还尝试过公开复制那个文件夹的内容,而不是复制它自己的文件夹,结果是一样的。