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.