2016-04-12 13 views
0

Nach einer kürzlichen 8.x-Aktualisierung kann ich keine GitLab CI-Tests ausführen, die auch ein anderes Repository abrufen. Während alles vorher funktioniert hat, bekomme ich jetzt die berühmte Host Key Verifikation fehlgeschlagen. Fehlermeldung von ssh. Was könnte die Ursache dafür sein?GitLab CI-Runner - kann nicht auf ein anderes Repository zugreifen

/etc/gitlab-runner/config.toml:

concurrent = 1 

[[runners]] 
    name = "[email protected]" 
    # ... 
    executor = "docker" 
    [runners.docker] 
    image = "edoburu/python-runner" 
    privileged = false 
    cap_drop = ["DAC_OVERRIDE"] 
    volumes = [ 
     "/cache", 
     "/home/deploy/.ssh:/root/.ssh:ro" 
    ] 
    # ... 

Wie Sie sehen können, die .ssh Ordner freigelegt ist, wobei der Behälter eine Liste aller bekannten Hosts (/home/deploy/.ssh/known_hosts) zu geben. Dies gibt dem Container auch einen bekannten SSH-Schlüssel, den ich als Deployment-Key im Repository aktiviert habe.

schlägt jedoch fehl, die Build heute, die es nicht tun, bevor:

Obtaining python-extra from [email protected]:myproject/[email protected]#egg=python-extra (from -r src/requirements.txt (line 63)) 
    Cloning [email protected]:myproject/python-extra.git (to 889f8fa0fe485d246d106ccee47aa60b2dd2523e) to /builds/myproject/env/src/python-extra 
Host key verification failed. 
fatal: Could not read from remote repository. 

Please make sure you have the correct access rights 
and the repository exists. 
Command "git clone -q [email protected]:myproject/python-extra.git /builds/project/env/src/python-extra" failed with error code 128 in None 

Die .gitlab-ci.yml Datei enthält:

test: 
    image: edoburu/python-runner:base 
    stage: test 
    script: 
    - virtualenv --no-site-packages ../env 
    - source ../env/bin/activate 
    - pip install --exists-action=w -r src/requirements.txt 
    - pip install coverage 
    - coverage run --source=src --omit='*/migrations/*' ./src/runtests.py -v2 
    - coverage report -m 

Wenn ich den Behälter manuell jedoch eingeben, funktioniert alles einwandfrei:

[email protected] ~ $ docker run -it --volume="/home/deploy/.ssh:/root/.ssh:ro" edoburu/python-runner:base /bin/bash 
[email protected]:/# ssh [email protected] 
PTY allocation request failed on channel 0 
Welcome to GitLab, Anonymous! 
Connection to git.example.org closed. 
[email protected]:/# git clone [email protected]:myproject/python-extra.git 
Cloning into 'python-extra'... 
remote: Counting objects: 387, done. 
remote: Compressing objects: 100% (176/176), done. 
remote: Total 387 (delta 215), reused 374 (delta 208) 
Receiving objects: 100% (387/387), 5.97 MiB | 0 bytes/s, done. 
Resolving deltas: 100% (215/215), done. 
Checking connectivity... done. 
[email protected]:/# exit 
[email protected] ~ $ 

Gibt es irgendetwas, was GitLab anders macht? Vielleicht vergeben Sie IP-Adressen oder etwas anderes, das meine Builds zum Scheitern bringt?

Antwort

0

Gelöst, es stellt sich heraus, dass --cap-drop=DAC_OVERRIDE verhindert, auf das Volumen zuzugreifen. Das Ändern des Besitzers in root löste es.

Gefunden einige Debug-Code in die .gitlab-ci.yml-Datei hinzufügen:

script: 
    - ping -c 1 git.edoburu.nl 
    - ssh-keyscan git.edoburu.nl 
    - ls -la ~/.ssh/ 
    - cat ~/.ssh/known_hosts