Benutzer-Werkzeuge

Webseiten-Werkzeuge


docu:gitlab-ci

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
docu:gitlab-ci [2017/11/23 07:35]
sage
docu:gitlab-ci [2020/05/19 12:35] (aktuell)
abq319 [Docker Images in Gitlab Build bauen]
Zeile 9: Zeile 9:
 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|https://​docs.gitlab.com/​ee/​ci/​yaml/​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|https://​docs.gitlab.com/​ee/​ci/​yaml/​README.html]]
  
-Vorlage:+Vorlage:<​code>​
  
-<​code>​ 
 stages: stages:
   - build   - build
Zeile 20: Zeile 19:
 job_build: job_build:
   stage: build   stage: build
-  image: ​nexus.informatik.haw-hamburg.de/​golang:​1.8.3+  image: golang:​1.8.3
   variables:   variables:
     CGO_ENABLED:​ "​0"​     CGO_ENABLED:​ "​0"​
Zeile 30: Zeile 29:
     - mkdir -p /​$CI_PROJECT_NAMESPACE/​$CI_PROJECT_NAME/​     - mkdir -p /​$CI_PROJECT_NAMESPACE/​$CI_PROJECT_NAME/​
     - mv ./​k8s-job-monitor /​$CI_PROJECT_NAMESPACE/​$CI_PROJECT_NAME/​     - mv ./​k8s-job-monitor /​$CI_PROJECT_NAMESPACE/​$CI_PROJECT_NAME/​
 +
 </​code>​ </​code>​
 +
  
 ===== Während des Build-Prozesses Zugriff auf anderes Gitlab-Repo gewähren ===== ===== Während des Build-Prozesses Zugriff auf anderes Gitlab-Repo gewähren =====
Zeile 46: Zeile 47:
 before_script:​ before_script:​
   # setup SSH if on ubuntu   # setup SSH if on ubuntu
-  - eval $(bash ./​scripts/​setup-ssh-on-ubuntu.sh "​$SSH_PRIVATE_KEY"​)+  - eval $(bash ./​scripts/​setup-ssh.sh "​$SSH_PRIVATE_KEY"​)
 </​code>​ </​code>​
  
Zeile 87: Zeile 88:
     mkdir -p ~/.ssh     mkdir -p ~/.ssh
  
-    [[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n">​ ~/​.ssh/​config+    [[ -f /​.dockerenv ​|]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n">​ ~/​.ssh/​config
   ;;   ;;
   *)   *)
Zeile 95: Zeile 96:
 </​code>​ </​code>​
  
-===== Docker Images in Gitlab Build bauen ===== 
  
-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|https://​gitlab.informatik.haw-hamburg.de/​ail/​haw-world/​blob/​master/​.gitlab-ci.yml]]:​+===== Docker Images in Gitlab ​Build bauen =====
  
 +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://​git.haw-hamburg.de/​icc/​haw-world/​-/​blob/​master/​.gitlab-ci.yml|https://​git.haw-hamburg.de/​icc/​haw-world/​-/​blob/​master/​.gitlab-ci.yml]]:​
 <​code>​ <​code>​
 +
 stages: stages:
     - dockerize     - dockerize
  
 variables: variables:
- DOCKER_HOST:​ "​tcp://​localhost:​2375"​ + ​DOCKER_REGISTRY:​ "git.haw-hamburg.de:5005"
- DOCKER_REGISTRY:​ "nexus.informatik.haw-hamburg.de"​+
  ​SERVICE_NAME:​ "​haw-world"​  ​SERVICE_NAME:​ "​haw-world"​
 + ​DOCKER_TLS_CERTDIR:​ "/​certs"​
  
-createImage:+create_image:
  ​stage:​ dockerize  ​stage:​ dockerize
- ​image: ​nexus.informatik.haw-hamburg.de/​docker:​stable-dind+ ​image: ​docker:19.03.3
  ​services:​  ​services:​
-   ​- ​nexus.informatik.haw-hamburg.de/​docker:stable-dind+   ​- ​docker:19.03.3-dind 
 + tags: 
 +   - dind 
 +   - docker
  ​script:​  ​script:​
-   - docker login -u $NEXUS_USER ​-p $NEXUS_PW ​$DOCKER_REGISTRY +   - docker login -u gitlab-ci-token ​-p $CI_JOB_TOKEN ​$DOCKER_REGISTRY 
-   - docker build -t $DOCKER_REGISTRY/​$SERVICE_NAME:​$CI_PIPELINE_ID . +   - docker build -t $SERVICE_NAME:​latest . 
-   - docker push $DOCKER_REGISTRY/​$SERVICE_NAME:​$CI_PIPELINE_ID+   - docker tag $SERVICE_NAME:​latest ​$DOCKER_REGISTRY/​$CI_PROJECT_NAMESPACE/​$SERVICE_NAME:​latest 
 +   - docker push $DOCKER_REGISTRY/​$CI_PROJECT_NAMESPACE/​$SERVICE_NAME:​latest 
 </​code>​ </​code>​
 +
  
 ===== Deployment einer Applikation aus Gitlab in die ICC ===== ===== Deployment einer Applikation aus Gitlab in die ICC =====
docu/gitlab-ci.1511418908.txt.gz · Zuletzt geändert: 2017/11/23 07:35 von sage