Gitlab-ci.yml Docker执行器无法运行Shell命令

时间:2019-03-15 08:16:21

标签: node.js gitlab-ci gitlab-ci-runner

我在其中安装了ubuntu 18.04服务器Gitlab-EE。我可以访问跑步者和许多其他东西。我想使用GitLab设置CI / CD。 因此,让我们开始吧:

错误:

enter image description here

我的gitlab-ci.yml

image: docker:latest

services:
- docker:dind

stages:
  - build
  - deploy


build:
  image: node:latest
  stage: build
  tags:
  - api
  before_script:
  - apt-get update -qq
  - apt-get install -y
  script:
    - npm install


deploy:
  services:
    - node:latest
  image: node:latest
  stage: deploy
  tags:
    - api
  script:
    - sudo apt install python-pip
    - sudo pip install docker-compose
    - npm run dc:up ( this makes docker-composer build )

构建阶段成功完成 部署阶段出错。

我的Gitlab Runner:

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "Api-Runner"
  url = "XX"
  token = "XXX"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "node:latest"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]

我想安装docker-composer来运行我的项目。 如果删除“ sudo”命令,输出将如下所示

enter image description here

1 个答案:

答案 0 :(得分:0)

看起来您正在使用的图像(node:latest)不包含命令sudo。看起来它也默认为root用户,因此也许您可以完全避免使用sudo

您可以通过从以下图像启动自己的容器来探索将在其中运行作业的环境/容器:docker run --rm -ti node:latest bash

如果您可以使用类似的容器手动进行处理,则可以在gitlab-ci.yml文件中使用该配方。

但是,请特别注意,gitlab将为每个作业启动一个新容器,因此您可能还希望将apt-get update -qq添加到您的deploy作业中。