Dies ist eine alte Version des Dokuments!
Wenn in einem Code Repository eine Datei namens .gitlab-ci.yml
existiert, so wird GitLab versuchen mit Hilfe der darin enthaltenen Anweisungen das Software in dem Projekt zu bauen, evtl. zu testen und bei Erfolg in eine Zielumgebung zu deployen. In der GitLab Instanz werden standardmäßig die Build-Processe über Kubernetes in der ICC ausgeführt. Für Spezialfälle können aber auch eigene Build-Runner angebunden werden.
Einen Überblick über die Möglichkeiten des Gitlab-CI bietet https://docs.gitlab.com/ee/ci/README.html
Um ein Projekte für die Ausführung in der ICC vorzubereiten muss der Code als Docker-Image zur Verfügung stehen. Die folgende Vorlage illustriert dies anhand eine Golang-Projektes. Für andere Sprachen müssen die Anweisungen im Abschnitt job_build.script
angepasst werden. Eine vollständige Dokumentation für die Build-Spezifikation findet sich hier: https://docs.gitlab.com/ee/ci/yaml/README.html
Vorlage:
stages: - build before_script: - git config --global http.sslVerify true job_build: stage: build image: nexus.informatik.haw-hamburg.de/golang:1.8.3 variables: CGO_ENABLED: "0" GOOS: "linux" script: - glide install # no tests for now - go test gitlab.informatik.haw-hamburg.de/timadorus/timadorus-monitor/$(glide novendor) - go build -a -installsuffix cgo gitlab.informatik.haw-hamburg.de/timadorus/k8s-job-monitor - mkdir -p /$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/ - mv ./k8s-job-monitor /$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/
Es ist natürlich auch möglich Docker Images in einer Gitlab Pipeline zu bauen. Dazu ist die DOCKER_HOST Variable in der Gitlab Job Beschreibung zu setzen und das stable-dind images als „service“ im Job zu setzen. Beispiel für eine .gitlab-ci.yml aus https://gitlab.informatik.haw-hamburg.de/ail/haw-world/blob/master/.gitlab-ci.yml:
stages: - dockerize variables: DOCKER_HOST: "tcp://localhost:2375" DOCKER_REGISTRY: "nexus.informatik.haw-hamburg.de" SERVICE_NAME: "haw-world" createImage: stage: dockerize image: nexus.informatik.haw-hamburg.de/docker:stable-dind services: - nexus.informatik.haw-hamburg.de/docker:stable-dind script: - docker login -u $NEXUS_USER -p $NEXUS_PW $DOCKER_REGISTRY - docker build -t $DOCKER_REGISTRY/$SERVICE_NAME:$CI_PIPELINE_ID . - docker push $DOCKER_REGISTRY/$SERVICE_NAME:$CI_PIPELINE_ID
den Artikel dazu finden Sie im entsprechenden Abschnitt der Dokumentation für die Informatik Computer Cloud.
Siehe https://docs.gitlab.com/ce/ci/runners/README.html für weitere Details.