diff --git a/slides/2023-11-30/160_gitlab_ci/040_image/slides.md b/slides/2023-11-30/160_gitlab_ci/040_image/slides.md
index 7fb97c28..5abbc2f7 100644
--- a/slides/2023-11-30/160_gitlab_ci/040_image/slides.md
+++ b/slides/2023-11-30/160_gitlab_ci/040_image/slides.md
@@ -8,10 +8,14 @@
## Image
-Choose which container image [](https://docs.gitlab.com/ee/ci/yaml/#image) is used for your job
+Without `image` you rely on the default container image
Our runner configuration defaults to `alpine` [](https://hub.docker.com/_/alpine) [](https://alpinelinux.org/)
+Choose which container `image` [](https://docs.gitlab.com/ee/ci/yaml/#image) is used for your jobs
+
+Each job can have its own container image
+
Use official images [](https://hub.docker.com/search?q=&image_filter=official)
Do not use community images
diff --git a/slides/2023-11-30/160_gitlab_ci/050_defaults/slides.md b/slides/2023-11-30/160_gitlab_ci/050_defaults/slides.md
index d78b641b..ff814bff 100644
--- a/slides/2023-11-30/160_gitlab_ci/050_defaults/slides.md
+++ b/slides/2023-11-30/160_gitlab_ci/050_defaults/slides.md
@@ -17,6 +17,16 @@ Apply settings to all jobs using `default` [](https://docs.gitlab.com/ee/ci/yaml
- `after_script`
- and some more we will explore later
+### Example
+
+```yaml
+default:
+ image: alpine
+ before_script: echo "Welcome to this job"
+job_name:
+ #...
+```
+
### Hands-On
See chapter [Variables](/hands-on/20231130/050_defaults/exercise/)
diff --git a/slides/2023-11-30/160_gitlab_ci/060_artifacts/slides.md b/slides/2023-11-30/160_gitlab_ci/060_artifacts/slides.md
index 3bf096ae..332da797 100644
--- a/slides/2023-11-30/160_gitlab_ci/060_artifacts/slides.md
+++ b/slides/2023-11-30/160_gitlab_ci/060_artifacts/slides.md
@@ -30,12 +30,6 @@ Add untracked files
---
-## Hands-On
-
-See chapter [Artifacts](/hands-on/20231130/060_artifacts/exercise/)
-
----
-
## Dependencies
Jobs can restrict which job artifacts to receive
@@ -85,3 +79,9 @@ job_name2:
```
`dependencies` as well as `needs` limit from which jobs they are consumed
+
+---
+
+## Hands-On
+
+See chapter [Artifacts](/hands-on/20231130/060_artifacts/exercise/)
diff --git a/slides/2023-11-30/160_gitlab_ci/090_unit_tests/slides.md b/slides/2023-11-30/160_gitlab_ci/090_unit_tests/slides.md
index 47787899..e0e8bc4b 100644
--- a/slides/2023-11-30/160_gitlab_ci/090_unit_tests/slides.md
+++ b/slides/2023-11-30/160_gitlab_ci/090_unit_tests/slides.md
@@ -8,13 +8,13 @@
## Unit Tests
-GitLab is able to consume JUnit formatted reports [](https://docs.gitlab.com/ee/ci/testing/unit_test_reports.html)
+GitLab is able to consume JUnit XML formatted reports [](https://docs.gitlab.com/ee/ci/testing/unit_test_reports.html)
-Reports must be prepared and defined as a special type of artifact
+Reports must be defined as a special type of artifact
Reports will be displayed in the summary view of a pipeline
-The following example is based on [this one](https://docs.gitlab.com/ee/ci/testing/unit_test_report_examples.html#go):
+The following example was taken from the [official one](https://docs.gitlab.com/ee/ci/testing/unit_test_report_examples.html#go):
```yaml
golang:
diff --git a/slides/2023-11-30/160_gitlab_ci/100_environments/slides.md b/slides/2023-11-30/160_gitlab_ci/100_environments/slides.md
index d71e0adf..e38ddba1 100644
--- a/slides/2023-11-30/160_gitlab_ci/100_environments/slides.md
+++ b/slides/2023-11-30/160_gitlab_ci/100_environments/slides.md
@@ -14,6 +14,8 @@ CI variables can be scoped to environments
Environments are auto-created by the first job using them
+### Our environments
+
Your demo environment has hidden services
![](160_gitlab_ci/100_environments/webdav.drawio.svg)
@@ -22,7 +24,7 @@ WebDAV endpoints emulate deployment targets
---
-## Hands-On (1/2)
+## Hands-On
See chapter [Environments](/hands-on/20231130/100_environments/exercise/)
@@ -35,10 +37,6 @@ Branches can be used to represent target environments:
- `dev` for development branch
- `live` for production code
-### Hands-On (2/2)
-
-See chapter [Environments](/hands-on/20231130/100_environments/exercise/)
-
---
## Pro tip: Disposable environments
@@ -70,4 +68,4 @@ vscode-cleanup:
script: echo DESTROY
```
-
\ No newline at end of file
+
diff --git a/slides/2023-11-30/160_gitlab_ci/110_triggers/slides.md b/slides/2023-11-30/160_gitlab_ci/110_triggers/slides.md
index d4ac7a34..d1390c7f 100644
--- a/slides/2023-11-30/160_gitlab_ci/110_triggers/slides.md
+++ b/slides/2023-11-30/160_gitlab_ci/110_triggers/slides.md
@@ -36,10 +36,6 @@ The following pipeline is downstream
![](160_gitlab_ci/110_triggers/upstream_downstream.drawio.svg)
-### Hands-On: Trigger tokens
-
-See chapter [Triggers](/hands-on/20231130/110_triggers/exercise/)
-
---
## Heads-up for trigger tokens
@@ -61,19 +57,26 @@ Trigger owner must be able to either...
## Multi-project pipelines
+Modern alternative to trigger tokens
+
Launch pipeline in separate project [](https://docs.gitlab.com/ee/ci/pipelines/multi_project_pipelines.html)
Use the `trigger` keyword [](https://docs.gitlab.com/ee/ci/yaml/index.html#trigger)
-### Hands-On
+### Example
-See chapter [Triggers](/hands-on/20231130/110_triggers/exercise/)
+```yaml
+job_name:
+ trigger:
+ project:
+ branch: main
+```
+
+`trigger.branch` is optional
---
-## Hands-On: Parent-child pipelines
-
-See chapter [Triggers](/hands-on/20231130/110_triggers/exercise/)
+## Parent-child pipelines
Child pipeline can be made from multiple files
@@ -81,7 +84,26 @@ Child pipeline can be made from multiple files
Use `project`/`ref`/`file` for files in other repositories
-Included file can also be generated before job start [](https://docs.gitlab.com/ee/ci/pipelines/downstream_pipelines.html#dynamic-child-pipelines)
+### Example
+
+```yaml
+job_name:
+ trigger:
+ include:
+
+job_name2:
+ trigger:
+ include:
+ - project:
+ ref: main
+ file:
+```
+
+---
+
+## Hands-On
+
+See chapter [Triggers](/hands-on/20231130/110_triggers/exercise/)
---
@@ -128,7 +150,7 @@ job_name:
## Dynamic includes
-Include can be generated on-demand:
+Included file can also be generated before job start [](https://docs.gitlab.com/ee/ci/pipelines/downstream_pipelines.html#dynamic-child-pipelines)
```yaml
generate:
diff --git a/slides/2023-11-30/160_gitlab_ci/120_templates/slides.md b/slides/2023-11-30/160_gitlab_ci/120_templates/slides.md
index acbc8687..c19908f9 100644
--- a/slides/2023-11-30/160_gitlab_ci/120_templates/slides.md
+++ b/slides/2023-11-30/160_gitlab_ci/120_templates/slides.md
@@ -26,9 +26,34 @@ See also the official development guide for templates [](https://docs.gitlab.com
---
-## Templates
+## Templates 1/
+
+The following pipeline...
+
+```yaml
+.template:
+ image: alpine
+ script: pwd
+
+job_name:
+ extends: .template
+```
+
+...result in the following job:
+
+```yaml
+job_name:
+ image: alpine
+ script: pwd
+```
-Example:
+Keywords from `job_name` are applied after keywords from `.template`
+
+---
+
+## Templates 2/
+
+The following pipeline...
```yaml
.template:
@@ -37,11 +62,54 @@ Example:
job_name:
extends: .template
+ script: ls -l
+```
+
+...result in the following job:
+
+```yaml
+job_name:
+ image: alpine
+ script: ls -l
```
Keywords from `job_name` are applied after keywords from `.template`
-### Hands-On
+---
+
+## Templates 3/3
+
+The following pipeline...
+
+```yaml
+.template:
+ image: alpine
+ variables:
+ foo: bar
+ script: pwd
+
+job_name:
+ extends: .template
+ variables:
+ bar: baz
+```
+
+...result in the following job:
+
+```yaml
+job_name:
+ image: alpine
+ variables:
+ foo: bar
+ bar: baz
+ script: pwd
+```
+
+Variables are merged!
+
+---
+
+## Hands-On
See chapter [Templates](/hands-on/20231130/120_templates/exercise/)