- 私有项目可用的 Runner 类型(x86-64)
- 消耗系数
- 极狐GitLab SaaS Runner 消耗系数
- 为作业打标签示例
- Linux 设置上的 SaaS Runner
- 预克隆脚本(已废弃)
config.toml
极狐GitLab SaaS Runner(Linux)
当您在 Linux 的 SaaS Runner 上运行作业时,Runner 位于弹性伸缩的临时虚拟机实例上。
虚拟机的默认区域是 ap-shanghai
,并且多可用区实现高可用。
私有项目可用的 Runner 类型(x86-64)
对于 Linux 上的 SaaS Runner,极狐GitLab 提供了一系列用于私有项目的 Runner 类型。 对于基础版、专业版和旗舰版的用户,这些实例上的作业会消耗分配给您的命名空间的 CI/CD 分钟数。
小型 Runner | 中型 Runner | 大型 Runner | |
---|---|---|---|
规格 | 2 VCPU,4 GB RAM | 2 VCPU,8 GB RAM | 4 VCPU,16 GB RAM |
极狐GitLab CI/CD 标签 | saas-linux-small-amd64
| saas-linux-medium-amd64
| saas-linux-large-amd64
|
订阅版本 | 基础版、专业版和旗舰版 | 基础版、专业版和旗舰版 | 专业版和旗舰版 |
如果您在 .gitlab-ci.yml
中未指定 tags: 关键字,则默认使用 small
Runner 类型。
在中型和大型 Runner 上运行的 CI/CD 作业所消耗的 CI 分钟数会多于小型 Runner 上运行的 CI/CD 作业所消耗的 CI 分钟数。
有关不同类型的 Runner 所使用的消耗系数,请参阅极狐GitLab SaaS Runner 消耗系数。
消耗系数
默认情况下,单个作业的一分钟执行时间使用 1 CI/CD 分钟。流水线使用的 CI/CD 分钟总数是所有作业持续时间的总和。
公开项目和私有项目都启用了 CI/CD 分钟数配额。命名空间中每个月的基本 CI/CD 分钟数配额由许可证级别确定。
在 JihuLab.com 的共享 Runner 上运行作业的默认消耗系数为:
-
1
:内部、私有和公开项目。
极狐GitLab SaaS Runner 消耗系数
在上述消耗系数的基础上,使用不同类型的 Runner 还需要计算额外的消耗系数。有关 CI/CD 分钟数的更多内容,请参见如何计算 CI/CD 分钟数。
saas-linux-small-amd64
| saas-linux-medium-amd64
| saas-linux-large-amd64
| |
---|---|---|---|
CI/CD 分钟数消耗系数 | 1 | 2 | 3 |
为作业打标签示例
如果您想使用 small
之外的其他 Runner 类型,您可以在作业中添加 tags:
关键字。
例如:
stages:
- Prebuild
- Build
- Unit Test
job_001:
stage: Prebuild
script:
- echo "this job runs on the default (small) instance"
job_002:
tags: [ saas-linux-medium-amd64 ]
stage: Build
script:
- echo "this job runs on the medium instance"
job_003:
tags: [ saas-linux-large-amd64 ]
stage: Unit Test
script:
- echo "this job runs on the large instance"
Linux 设置上的 SaaS Runner
以下是 Linux 上的 SaaS Runner 的设置:
设置 | JihuLab.com | 默认 |
---|---|---|
执行器 | docker+machine
| - |
默认 Docker 镜像 | ruby:3.1
| - |
privileged (运行 Docker in Docker)
| true
| false
|
-
缓存:这些 Runner 共享一个存储在 Tencent Cloud Object Storage(COS)存储桶中的分布式缓存。 14 天内未更新的缓存内容会基于对象生命周期管理策略进行自动删除。
-
超时设置:无论在项目中配置的超时时间是多少,由 Linux 上的 SaaS Runner 处理的作业都会在 3 小时后超时。
预克隆脚本(已废弃)
pre_get_sources_script
代替。此变更是一个突破性的变化。使用 Linux 上的 SaaS runner,您可以在 runner 上尝试运行 git init
和 git fetch
,下载极狐GitLab 仓库之前在 CI/CD 作业中运行命令。pre_clone_script
可用于:- 使用代码库数据播种构建目录
- 向服务器发送请求
- 从 CDN 下载 assets
- 任何其他必须在
git init
之前运行的命令
要使用此功能,请定义一个名为 CI_PRE_CLONE_SCRIPT
的 CI/CD 变量,其中包含一个 bash 脚本。
CI_PRE_CLONE_SCRIPT
变量在极狐GitLab SaaS Windows 或 macOS runner 上无效。
config.toml
config.toml
的完整内容为:
X
。Google Cloud Platform
concurrent = X
check_interval = 1
metrics_server = "X"
sentry_dsn = "X"
[[runners]]
name = "docker-auto-scale"
request_concurrency = X
url = "https://gitlab.com/"
token = "SHARED_RUNNER_TOKEN"
pre_clone_script = "eval \"$CI_PRE_CLONE_SCRIPT\""
executor = "docker+machine"
environment = [
"DOCKER_DRIVER=overlay2",
"DOCKER_TLS_CERTDIR="
]
limit = X
[runners.docker]
image = "ruby:3.1"
privileged = true
volumes = [
"/certs/client",
"/dummy-sys-class-dmi-id:/sys/class/dmi/id:ro" # Make kaniko builds work on GCP.
]
[runners.machine]
IdleCount = 50
IdleTime = 3600
MaxBuilds = 1 # For security reasons we delete the VM after job has finished so it's not reused.
MachineName = "srm-%s"
MachineDriver = "google"
MachineOptions = [
"google-project=PROJECT",
"google-disk-size=25",
"google-machine-type=n1-standard-1",
"google-username=core",
"google-tags=gitlab-com,srm",
"google-use-internal-ip",
"google-zone=us-east1-d",
"engine-opt=mtu=1460", # Set MTU for container interface, for more information check https://gitlab.com/gitlab-org/gitlab-runner/-/issues/3214#note_82892928
"google-machine-image=PROJECT/global/images/IMAGE",
"engine-opt=ipv6", # This will create IPv6 interfaces in the containers.
"engine-opt=fixed-cidr-v6=fc00::/7",
"google-operation-backoff-initial-interval=2" # Custom flag from forked docker-machine, for more information check https://github.com/docker/machine/pull/4600
]
[[runners.machine.autoscaling]]
Periods = ["* * * * * sat,sun *"]
Timezone = "UTC"
IdleCount = 70
IdleTime = 3600
[[runners.machine.autoscaling]]
Periods = ["* 30-59 3 * * * *", "* 0-30 4 * * * *"]
Timezone = "UTC"
IdleCount = 700
IdleTime = 3600
[runners.cache]
Type = "gcs"
Shared = true
[runners.cache.gcs]
CredentialsFile = "/path/to/file"
BucketName = "bucket-name"