Each machine needed a script this specified that machine's arch
and OS type. Also added a rule on the cache and test jobs to not
run if the dry run trigger is present. [ci dryrun]
The previous trigger condition wasn't liked by Gitlab's
yaml parser. I'm switching to trying a commit message
based regex trigger. This message does not contain the
trigger and so should not fire the dry run.
The dry run should now be configured if changes to .gitlab-ci.yml,
Earthfile, contents of scripts/cicd, or contents of package arrive
as the result of a push OR merge but NOT when a tag is present. I
think that will prevent the dry run executing alongside the actual
release process when a new release tag is pushed but that also
contains changes to the above mentioned files. <fingers crossed emoji>
Dry run will now trigger for Earthfile changes. I also reordered the
changelog in veilid-server.spec to descending to correct that error.
Commented out the crates.io publishing dry run. This branch does not
have access to the protected variables.
This is the first attempt at setting up a dry run pipeline
to test changes to the CICD config without actually publishing
the compiled binaries and packages built by the process.
The dry run should be triggered by any changes to .gitlab-ci.yml
or changes to any of the scripts under scripts/cicd/.
The paths work now, but the scripts are not set with execute permission.
I don't know if that permission will survive the transfer from my machine
across the git and runner stuff so I added an explicit call for bash instead.
The runner ID CI variable resolved to the runners' numeric ID whereas
the project path uses the runners' alpha-numeric formatted ID. Both
IDs show in Gitlab's settings->cicd->runners. For the time being, I've
hardcoded the alpha-numeric ID into the script paths in the CI config.
If we have to retate runners, we will need to update these entries.
I thought CICD's working directory was in the project root but the release
failed to find the scripts. I've changed the script executions to absolute
paths. There's a directory is named for the runner's ID, is different on
each machine, and changes if the runner is replaced. There's a variable
that should overcome this, CI_RUNNER_ID, which I've used in the asbolute
paths. Fingers crossed, let's try it again.
Copied CICD scripts into the repository so that the community can make
contributions to the build system. Wrote a brief description of the
build and distribute process. Modified the CICD config to use the repo
hosted scripts. [ci skip]
GitLab will return an error if you have an upper case letter at the
start of your username.
```
invalid reference format: repository name must be lowercase
```
The built-in `$CI_REGISTRY_IMAGE` variable does the right thing.
Closes https://gitlab.com/veilid/veilid/-/issues/352
Targets have been parallelized so that initial push of the container cache should build the whole build a little quicker, plus the container should now use the cache for more of the build and so speed up normal builds to just the compilation and test of the code that has changed
The `build_cache` target now builds a `build-cache:latest` container that is stored in the GitLab project Container Registry, and then used (if it exists) by the `test_build` target. The `build_cache` task runs under 3 conditions, 1. the container does not exist, 2. if scheduled, 3. if run manually from the Pipelines page in the GitLab interface.
It is recommended that the build is set up to run on a weekly schedule via the `Pipeline schedules` page in GitLab with the schedule of `0 2 * * 6`.
Changed the name of the unit tests CI job to accuratly reflect
that both AMD64 and ARM64 tests are executed.
Modified the contribution guide to specify that contributors
should work inside their own fork of the project.