Scriptblocks¶
Goal
Learn how to...
- Use
before_script
andafter_script
- Separate preparation and cleanup commands from core functionality
Task: Separate script blocks into preparation and main task¶
Commands are currently specified using the script
directive. These commands consist of preparation, core functionality and (possibly) cleanup.
To improve readability, move the preparation of the execution environment to a before_script
. See the official documentation.
Afterwards check the pipeline in the GitLab UI. You should see a successful pipeline run.
Hint (Click if you are stuck)
Move calls to apk
to the before_script
.
Solution (Click if you are stuck)
.gitlab-ci.yml
:
If you want to jump to the solution, execute the following command:
Cleanup commands can be move to after_script
(official documentation) but we have no use for this in the current example.
Bonus 1: When after_script
is executed¶
Add commands to all three script block before_script
, script
and after_script
. Test two scenarios:
- The pipeline succeeds
- The pipeline failes
What happens to the code in after_script
?
Solution (Click to reveal)
Command in after_script
are always executed even if the job fails.
This can be very useful for cleaning up.
Bonus 2: What happens to environment variables in script blocks?¶
Define environment variables in all three script blocks and display them in the same and in the following script block.
When are environment variables available?
Solution (Click to reveal)
Commands in before_script
and script
share a shell session. Environment variables are available throughout these script blocks.
Commands in after_script
are executed in a new shell session. Environment variables defined in before_script
and script
are gone.