Docker Images von privater Registry im Buildprozess von Drone.io

Lokales Docker Repository verwenden

Möchte man Docker Images zum Bauen einer Anwendung in Drone verwenden, dann muss i.d.R. Credentials für Basic Auth am Nexus Docker Repository übergeben werden. Dazu muss den Inhalt der config.json in ein neues Secret in Drone schreiben.

Dazu muss man sich an der Konsole einmal an dem Repository docker login anmelden.

docker login docker.XXXX.org

Das JSON der config Datei sieht in etwa dann so aus:

        "auths": {
                "docker.XXXX.org": {
                        "auth": "VXXXXXXX="
                }
        },

Den Inhalt kopieren sie bitte in ein neues Secret mit dem Key dockerconfigjson. Aus diesem wird Drone die Informationen für die Basic Authentication an dem Docker Repository extrahieren. In der .drone.yml muss nur noch image_pull_secrets eingefügt werden.

kind: pipeline
name: default

steps:
- name: setup
  image: docker.XXXX.org/edvpfau/archlinux-base-image:latest
  environment:
    NEXUS_URL:
      from_secret: NEXUS_URL
    NEXUS_USERNAME:
      from_secret: NEXUS_USERNAME
    NEXUS_PASSWORD:
      from_secret: NEXUS_PASSWORD
    NEXUS_REPOSITORY:
      from_secret: NEXUS_REPOSITORY
    SONAR_HOST:
      from_secret: SONAR_HOST
    SONAR_TOKEN:
      from_secret: SONAR_TOKEN
  commands:
    - JAVA_HOME=/usr/lib/jvm/default ./gradlew -Dsonar.host.url=$SONAR_HOST -Dsonar.login=$SONAR_TOKEN clean build test sonarqube

image_pull_secrets:
- dockerconfigjson

Nun steht der Nutzung eigener privater Images zum Bauen der Software nichts mehr im Wege. Das Image kann dann speziell an die Verwendete Software angepasst werden. Hier in dem Beispiel verwende ich ein Image, welches den Gradle Wrapper vorinstalliert hat und somit in jedem Durchgang nicht nur Zeit sondern auch Netzwerktraffic eingesparrt werden.