在.gitlab-ci.yml中何处指定gitlab-runner executor?未配置为何仍用docker运行
GitLab CI 执行问题解答
你使用的.gitlab-ci.yml配置如下:
build-job: stage: build script: - echo "Hello, $GITLAB_USER_LOGIN!"
未指定executor和镜像仍能在Docker容器运行的原因
这两个配置都不属于用户侧CI文件的必填项,规则如下:
- executor是GitLab Runner自身的部署配置,由共享Runner的管理员在注册Runner时就提前设置完成,你用到的共享Runner已经被管理员配置为docker executor,所有提交到这个Runner的任务默认都会在Docker容器中执行,不需要用户在自己的CI配置里额外声明。
- docker executor支持管理员配置全局默认运行镜像,一般是
alpine、ubuntu这类通用基础镜像,如果你没有在CI配置中显式写image字段指定镜像,Runner会自动用这个默认镜像启动容器执行你的脚本。
executor的声明规则
GitLab 不支持直接在.gitlab-ci.yml文件里指定Runner的executor类型,你可以通过标签匹配的方式选择使用对应executor的Runner:
- 首先确认平台共享Runner的标签规则,通常管理员会给不同executor的Runner打上对应标签,比如docker executor的Runner会打
docker标签,shell executor的Runner会打shell标签 - 在job配置中添加
tags字段,匹配对应标签即可调度到对应executor的Runner,示例配置如下:
build-job: stage: build # 匹配带docker标签的Runner,这类Runner默认使用docker executor tags: - docker script: - echo "Hello, $GITLAB_USER_LOGIN!"
内容的提问来源于stack exchange,提问作者Santhosh
相关产品推荐
相关产品推荐

