Hello, community!
I've been trying to solve this on my own, but after seeing how responsive and pleasant everybody is on here, I've decided to punt and hope that this is a procedure that somebody has already documented.
I have a few bare metal servers for heavy builds. Kernel compilation, ARM32v7, etc.
Getting the runner up and going is about the easiest thing in the world.
I would like to take full advantage of the resources available and was having trouble grokking the documentation.
My pipeline file is:
```
image: docker.io/xyz/kernel_builder:dev
definitions:
services:
docker:
memory: 2048
options:
docker: true
size: 2x
pipelines:
custom:
kernel_build:
- step:
name: 'Pull and compile'
runs-on:
- self.hosted
- linux
script:
- make kernel
services:
- docker
artifacts:
- artifacts/*
size: 8x
```
This configuration is working, but I arrived at it purely by trial and error. When using a larger size and/or more memory my build would randomly fail with a "docker timeout" error; though it would make it through part of the process, usually dying on a git pull.
My questions are:
How do the various settings interrelate? What affect does changing the "size" of a particular step have on the memory specified in the service definition? If I were to remove these settings and specify resources on the runner instantiation command (docker --whatevs) would that affect the size and memory specifications?
Does the "memory" field in the service definition refer to the amount of RAM available? I have 128GB of RAM and 4 Xeon CPUs available and I'd like to be able to use as much as possible for this part of the build.
The docs have been confusing and I was hoping to get the information I need to wrap my head around this and I think I'm missing a core concept.
If there is documentation over and above what I've found at https://support.atlassian.com/bitbucket-cloud/docs/set-up-runners-for-linux-shell/ (and others) then I'd love to have a link to bookmark.
Thank you all!