Introduction
|
|
Exit (light) Codes
|
|
Being Assertive
|
You can do whatever you like in a test, as long as you return the right exit code
Pytest, and other test utilities, will propagate the exit codes correctly
|
Understanding Yet Another Markup Language
|
YAML is a plain-text format, similar to JSON, useful for configuration
YAML is a superset of JSON, so it contains additional features like comments and anchors, while still supporting JSON.
|
YAML and CI
|
You should bookmark the GitLab reference on CI/CD. You’ll visit that page often.
A job is defined by a name and a script, at minimum.
Other than job names, reserved keywords are the top-level parameters defined in a YAML file.
|
Coffee break!
|
|
Hello CI World
|
Adding a .gitlab-ci.yml is the first step to salvation.
Pipelines are made of stages, stages are made of jobs.
CI Linters are especially useful to check syntax before pushing changes.
|
Handling Your Clones
|
Git cloning strategies are configured with global (or per-job) variables
GIT_STRATEGY=none is useful when you don’t need any information/files from the repository
Submodules can be cloned normally or recursively as needed
|
Adding CI to Your Existing Code
|
Setting up CI/CD shouldn’t be mind-numbing
All defined jobs run in parallel by default
Jobs can be allowed to fail without breaking your CI/CD
|
Coffee break!
|
|
Eins Zwei DRY
|
|
All the World's a Stage
|
|
Run Analysis in CI/CD
|
Making code that is both human-friendly and computer-friendly is not so obvious.
Configurability is the crux of reproducibility.
Sometimes code that we thought was working fine, could use some “freshening” up.
We’re way too naive.
|
Getting into the Spy Game
|
Service accounts provide an extra layer of security between the outside world and your account
Environment variables in GitLab CI/CD allow you to hide protected information from others who can see your code
|
Let's Actually Make A Test (For Real)
|
This kind of test is a regression test, as we’re testing assuming the code up to this point was correct.
This is not a unit test. Unit tests would be testing individual pieces of the atlas/athena code-base, or specific functionality you wrote into your algorithms.
|