Is it possible to run multiple jobs on a single runner without the runner re-initializing each time?

Gitlab Runner Reinitializes for Each Job

Describe your question in as much detail as possible:

  • I am seeing that the runner is re-initialized for each job in a pipeline, when what I would like to see is each job run on the same runner without re-initializing (time consuming - adds > 2 minutes per job). I know that I can simply specify more commands under the script section, but doing it that way makes it more difficult for end-users to follow what step the pipeline is on or failed on at a glance - instead it just shows one job and you have to look at the log. Is it possible to do what I am asking or is the script approach my only option if I want to save time?

I do have exactly the same question at the moment.

For example I use image: node:latest but need to upgrade this image by some linux-packages (like webp, lftp …) which are needed for my stages.

It would als help me to know how to use an own image at my runner. This way I could pre-define the environment and don’t need to do the apt installations for all stages.

Hope somebody can give us a hint on that question.

Hey :slight_smile:

As far as I know you can push your own docker images to the GitLab container registry and then use them in you CI/CD pipelines.

This video gives a nice quick introducktion.

Disclaimer: Never done that myself but I hope it works.

We’re already using our own docker images, that’s not quite the issue. The issue is I can either show a ci/cd pipeline with steps such as:

Lint
Assemble
Unit Test
Deploy

Making it easy to visualize where a failure occurred, or really even just the steps included in a pipeline. But in doing so I have the overhead of reloading the image, executing pre steps, etc. This isn’t so much a functional issue as it is making it easier to the pipeline audience to interpret results without bloating build time.