在 Windows 10 上的 gitlab-ci shell 上找不到 Docker

问题描述 投票:0回答:1

我正在使用 Docker 在 Windows 10 上开发 API。我已经将我的代码托管在 gitlab 免费计划上,并且我正在尝试设置 gitlab-ci 管道。

我已经在我的机器上安装了 powershell 和 gitlab-runner,并且我设置了一个运行程序以在我的本地机器上运行(config.toml):

concurrent = 1
check_interval = 0
connection_max_age = "15m0s"
shutdown_timeout = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "my-runner"
  url = "https://gitlab.com"
  id = [redacted]
  token = "[redacted]"
  token_obtained_at = 2024-09-27T11:22:39Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "shell"
  shell = "pwsh"
  [runners.custom_build_dir]
  [runners.cache]
    MaxUploadedArchiveSize = 0
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]

我了解到运行程序将由 gitlab 触发,并在我的本地计算机上运行 gitlab-ci 步骤。

我尝试运行 示例配置并且它有效。

但是当我创建自己的配置(使用验证工具进行验证)时,出现错误。

这是我的配置的一部分(.gitlab-ci.yml):

php-cs-fixer:
  stage: build
  script:
    - docker compose run --file C:\path\to\docker-compose.yml --rm php tools/php-cs-fixer/vendor/bin/php-cs-fixer check

这是一个我可以在我的机器上的任何目录中运行的命令,它会成功。但在管道上,我遇到了这个错误:

Running with gitlab-runner 17.4.0~pre.110.g27400594 (27400594)
  on [redacted].gitlab.com/default [redacted], system ID: [redacted]
Preparing the "docker+machine" executor 00:21
Using Docker executor with image ruby:3.1 ...
Pulling docker image ruby:3.1 ...
Using docker image sha256:12bc18a740469918b597219b1033d2fd4a60594a8ada2ec29383f64e39e8df0b for ruby:3.1 with digest ruby@sha256:0a169917faf10879c7c02685b5034f7ae8da08191580ab8f15f2bb346ee87ec9 ...
Preparing environment 00:04
Running on runner-[redacted]-concurrent-0 via runner-zxwgkjap-s-l-s-amd64-1727439752-32adb9d7...
Getting source from Git repository 00:02
Fetching changes with git depth set to 20...
Initialized empty Git repository in /builds/[repository_name]/.git/
Created fresh repository.
Checking out d47fc44d as detached HEAD (ref is cicd)...
Skipping Git submodules setup
$ git remote set-url origin "${CI_REPOSITORY_URL}"
Executing "step_script" stage of the job script 00:00
Using docker image sha256:12bc18a740469918b597219b1033d2fd4a60594a8ada2ec29383f64e39e8df0b for ruby:3.1 with digest ruby@sha256:0a169917faf10879c7c02685b5034f7ae8da08191580ab8f15f2bb346ee87ec9 ...
$ docker compose --file C:\path\to\docker-compose.yml run --rm php tools/php-cs-fixer/vendor/bin/php-cs-fixer check
/usr/bin/bash: line 147: docker: command not found
Cleaning up project directory and file based variables 00:01
ERROR: Job failed: exit code 1

docker 命令似乎触发了在运行器上安装 docker 镜像?

我是否配置错误?还是有什么误解?

如何通过管道在我的机器上执行 docker 命令?

docker gitlab gitlab-ci gitlab-ci-runner
1个回答
0
投票

GitLab CI 运行程序存在不同类型的执行器

从您的日志中准备“docker+machine”执行器看来您的运行程序已配置为“docker machine”执行器。这会产生一个特定的隔离环境,而不是直接在您的笔记本电脑上生成 shell。

如果我们进一步查看日志,我很确定您笔记本电脑上的运行程序根本没有被使用。 在 [redacted].gitlab.com/default 上运行 (...)。您应该在此处看到您的跑步者主机/名称,而不是来自

gitlab.com

您应该在 GitLab UI 中检查哪些运行器可用于您的项目。如果需要,您可以 使用

tags
来限制您的作业在特定的运行器上运行。

© www.soinside.com 2019 - 2024. All rights reserved.