Commit 4a1bee90 authored by Nane Kratzke's avatar Nane Kratzke
Browse files

Merge branch 'testerei' into 'master'

Testerei

See merge request !5
parents bfdeb03b 436ffacf
Pipeline #18706 passed with stages
in 28 seconds
......@@ -2,18 +2,17 @@ variables:
GREET: "Mundo"
stages:
- build
- info
- test
compile:
stage: build
image: openjdk:14.0
docker:
stage: info
script:
- javac src/*.java
- echo $DEPLOYMENT_SECRET
java:
stage: test
image: openjdk:14.0
image: "openjdk:14"
script:
- javac src/*.java
- java -cp src/ Hello $GREET > result.txt
......@@ -22,7 +21,7 @@ java:
python:
stage: test
image: python:3-slim
image: "python:3-slim"
script:
- python src/hello.py $GREET > result.txt
- cat result.txt
......
......@@ -275,7 +275,78 @@ Veranschaulichen Sie sich die Wirkungsweise:
Auf diese Weise lassen sich einzelne Jobs in der Pipeline nur unter Bedingungen ausführen,
die sich über Umgebungsvariablen setzen lassen.
## Übung 4: Nutzung von Images
Bislang haben wir im Wesentlichen nur Kommandozeilen Programme des Linux/UNIX Standardumfangs genutzt.
Wir wollen nun zwei kleine Hello-World Programme in Java und Python bauen, um zu demonstrieren, dass
man in Jobs unterschiedliche Images für Jobs nutzen kann.
__Aufgaben:__
Fügen Sie daher bitte einen Ordner `src` diesem Repository hinzu. In `src` legen Sie dann bite die beiden
folgenden Dateien an:
__`Hello.java`:__
```Java
public class Hello {
public static void main(String[] args) {
System.out.println("Hello " + args[0]);
}
}
```
__`hello.py`:__
```Python
import sys
print(f"Hello {sys.argv[1]}")
```
Passen Sie dann bitte Ihre `.gitlab-ci.yml`-Datei wie folgt an:
```Yaml
variables:
GREET: "Mundo"
stages:
- test
java:
stage: test
script:
- javac src/*.java
- java -cp src/ Hello $GREET > result.txt
- cat result.txt
- cat result.txt | grep "Hello $GREET"
python:
stage: test
script:
- python src/hello.py $GREET > result.txt
- cat result.txt
- cat result.txt | grep "Hello $GREET"
```
Wenn Sie diese Pipeline laufen lassen, werden Sie folgende Fehlermeldungen im Job *java* bzw. *python* bekommen:
```
javac: not found
python: not found
```
Dies hängt damit zusammen, dass das Standard Gitlab Job Image weder das Java JDK noch die Python Laufzeitumgebung beinhaltet.
Sie können Jobs aber auf Basis anderer Images laufen lassen, z.B. mit den Standard Images, die auf DockerHub für die gebräuchlichsten
Programmiersprachen angeboten werden.
Sie können z.B.
- die Angaben `image: "openjdk:14"` im Job *java* hinzufügen, um vorzugeben, dass der *java* Job auf dem openjdk Image für Java 14
- und die Angabe `image: "python:3-slim"` im Job *python* hinzufügen, um vorzugeben, dass der *python* Job auf dem Python 3 slim (besonders kleines Python3 Image)
basieren soll.
Wenn Sie diese Angaben ergänzen, werden Sie sehen, dass die Pipeline nun durchläuft. Auf diese Weise können Sie also an unterschiedlichen Stellen in einer Pipeline unterschiedliche Container Images nutzen. Idealerweise sollten die Images natürlich kompatibel zur beabsichtigten Production Umgebung sein.
Wenn alle (oder viele) Jobs einer Pipeline auf demselben Image basieren sollen, können Sie diese `image` Angabe auch außerhalb der Jobs als Default Job Image der Pipeline angeben. Sie müssen dann nur noch bei den Jobs andere Images angeben, die explizit nicht mit dem Default Job Image der Pipeline laufen sollen.
## Quellen für weitergehende Informationen:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment