muuvmuuv
muuvmuuv

Reputation: 953

How to setup GitLab CE CI to user docker images for runners

I've now tried for several days to get a runner working on a docker container. I have a Debian running system with GitLab, gitlab-runner and docker installed. I want to use docker as a container for my runners, because shell executors are installing all things on my CI maschine...

What I have done until now: I installed docker like it is described in the GitLab CE docs and run this command:

gitlab-runner register -n \
  --url DOMAIN \
  --registration-token TOKEN \
  --executor docker \
  --description "docker-builder" \
  --docker-image "gliderlabs/alpine" \
  --docker-privileged

then I created a test repo to look if it is working, with this .gitlab-ci-yml

variables:
  # GIT_STRATEGY: fetch # re-uses the project workspace
  GIT_CHECKOUT: "false" # don't checkout the working copy to a revision related to the CI pipeline
  GIT_DEPTH: "3"

cache:
  paths:
    - node_modules/

stages:
  - deploy

before_script:
  - apt-get update
  - apt-get install -y -qq sshpass
  - ls -la

# ======================= Jobs=======================
# Teporaly disable jobs by adding a . (dot) before the job name

ftp-upload:
  stage: deploy
  # environment: Production
  except: 
    - testing
  script:
    - rm ./package-lock.json
    - npm install
    - ls -la
    - sshpass -V
    - export SSHPASS=$PASSWORD
    - sshpass -e scp -o stricthostkeychecking=no -r . $USERNAME@$HOST:/Test
  only:
    - master

# ===================== ./Jobs ======================

but I get an error in the GitLab CI console:

Running with gitlab-runner 11.1.0 (081978aa)
  on docker-builder 5ce3c211
Using Docker executor with image gliderlabs/alpine ...
Pulling docker image gliderlabs/alpine ...
Using docker image sha256:74a78e860d7b39aa694197a70d4467019b611b80c21d886fcd1bfc04d2e767d4 for gliderlabs/alpine ...
Running on runner-5ce3c211-project-3-concurrent-0 via srvvgit001...
Cloning repository for master with git depth set to 3...
Cloning into '/builds/additive/test'...
Skipping Git checkout
Skipping Git submodules setup
Checking cache for default...
Successfully extracted cache
/bin/sh: eval: line 64: apt-get: not found
$ apt-get update
ERROR: Job failed: exit code 127

I don't know much about those docker containers but them seems good for reuse without modifying my CI system. It looks here that it is installing another alpine image/container, but have I not said GitLab runner to use an existing one?

Hopefully, there is someone that can easier explain to me how this works... I really have tried anything google gave me.

Upvotes: 0

Views: 1825

Answers (1)

UnlikePluto
UnlikePluto

Reputation: 3414

The Docker image you are using is a Alpine image, which is a minimal Linux distribution.
Alpine Linux is not using apt for package management but apk.

The problem is in your .gitlab-ci-yml's before_script section where you are trying to run apt.

To solve your issue, replace the use of apt by apk:

before_script:
  - apk update
  - apk add sshpass
...

Read more about the Alpine Linux package management here.

Upvotes: 2

Related Questions