mirror of
https://gitlab.com/TECHNOFAB/nix-gitlab-ci.git
synced 2025-12-12 02:00:13 +01:00
feat(v2): initial v2 implementation
add multi-arch (arm & x64) image add multiple pipelines (ci now creates the "default" pipeline as a shorthand) simplify devenv flake input merge all cache options together, now $NIX_CI_CACHE_STRATEGY decides how the cache works setup_nix_ci and finalize_nix_ci are now flake packages and work standalone the specific image is not needed anymore, any image with the right dependencies works runner cache is not the default anymore (because it sucked most of the time) the pipeline is selected by $NIX_CI_PIPELINE_NAME or if empty by $CI_PIPELINE_SOURCE, so for the old behaviour $NIX_CI_PIPELINE_NAME=default is needed, future work will be needed to handle this more nicely
This commit is contained in:
parent
016e6c9dc7
commit
586fb88b9d
6 changed files with 409 additions and 412 deletions
16
README.md
16
README.md
|
|
@ -21,6 +21,7 @@ Also makes it possible to split CI parts in a separate module which can be impor
|
|||
...
|
||||
|
||||
perSystem = {pkgs, ...}: {
|
||||
# ci is a shortcut and creates a "default" pipeline
|
||||
ci = {
|
||||
stages = ["test"];
|
||||
jobs = {
|
||||
|
|
@ -33,6 +34,11 @@ Also makes it possible to split CI parts in a separate module which can be impor
|
|||
};
|
||||
};
|
||||
};
|
||||
# runs on a merge request for example
|
||||
pipelines."merge_request_event" = {
|
||||
stages = ["some_stage"];
|
||||
jobs = { ... };
|
||||
};
|
||||
...
|
||||
}
|
||||
}
|
||||
|
|
@ -43,9 +49,6 @@ Also makes it possible to split CI parts in a separate module which can be impor
|
|||
# .gitlab-ci.yml
|
||||
include:
|
||||
- component: gitlab.com/TECHNOFAB/nix-gitlab-ci/nix-gitlab-ci@<version> # recommendation: use the latest version (try not to use latest)
|
||||
inputs:
|
||||
# specify inputs here, for example:
|
||||
image_tag: latest-cachix
|
||||
```
|
||||
|
||||
## Utilities
|
||||
|
|
@ -63,16 +66,15 @@ The `build:nix-ci` job has a different special environment variable `NIX_CI_FORC
|
|||
You can run any job's script (+ before and after) locally with Nix for easier testing:
|
||||
|
||||
```sh
|
||||
nix run .#gitlab-ci-job:<name>
|
||||
# / pipeline name, like "default"
|
||||
nix run .#gitlab-ci:pipeline:<pipeline name>:job:<name>
|
||||
```
|
||||
|
||||
There is also `.#gitlab-ci-job-deps:<name>` which generates and exports the required environment variables for each job:
|
||||
There is also `.#gitlab-ci:pipeline:<pipeline name>:job-deps:<name>` which generates and exports the required environment variables for each job:
|
||||
|
||||
- PATH (with all deps)
|
||||
- any custom env variables which contain store paths to not break stuff when switching archs
|
||||
|
||||
Please see #8 for some issues and further improvements on this.
|
||||
|
||||
## Thanks to
|
||||
|
||||
Some parts of this implementation are adapted/inspired from https://gitlab.com/Cynerd/gitlab-ci-nix
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue