找不到Gitlab CI页面
我正在使用GitlabCI和我自己的基于docker的Gitlab Runner,并已正确注册 这就是我使用docker和docker compose运行runner的方式找不到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
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文件夹中。我还尝试过公开复制那个文件夹的内容,而不是复制它自己的文件夹,结果是一样的。