GitLab Integration
General
Tofunix supports GitLab managed Terraform state OOTB.
It's based on the gitlab-terraform
script to automatically configure everything
for you in CI/CD pipelines.
If you're using mkCliAio
like this:
packages = {
tofunix = tofunix-lib.mkCliAio {
plugins = [...];
moduleConfig = {ref, ...}: {
# ...
};
};
}
Then in CI you can simply use .#tofunix.gitlab
to run your commands.
This will automatically set everything up etc.
nix run .#tofunix.gitlab -- init
Note
Do note that the Gitlab script just symlinks the .tf.json to your CWD and deletes it on exit.
The main Tofunix script is a bit more involved to prevent other local files from influencing
the output.
Thus make sure no other .tf
or .tf.json
files exist in the CI CWD / run
it from a tmp dir.
Nix GitLab CI Integration
Because the above simply provides a Terraform/Opentofu wrapper built for GitLab CI, it can also easily be used with Nix GitLab CI.
For this, simply specify the above package (either with rec
and
packages.tofunix.gitlab
or config.packages.tofunix.gitlab
for example) in
nix.deps
of a job. This automatically makes gitlab-tofunix
available in
your job. Running any gitlab-tofunix
command like init
will use the
terraform config from the flake.
# perSystem
rec {
packages.tofunix = tofunix-lib.mkCliAio ...;
ci.jobs."validate" = {
nix.deps = [packages.tofunix.gitlab];
script = [
"gitlab-tofunix validate"
];
};
}