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.