[gitlab-ci] Execute a single task on another runner, keeping artifacts

Hello there.
I’ve set up my gitlab-ci so that the software gets compiled via “ssh” executor on mac machine.

Now, to package my app, I need to execute a single command on a linux machine, because the software I’m using only works on this platform (it’s AppImageTool).

So I’ve set up another linux-based runner, loaded AppImageTool on it but then… how can I execute the command using the artifacts built in the previous step? As far as I understand, each phase start with a checkout of the commit, erasing additional files created before.

I thought about running the command in a linux-based Docker container but AppImageTool does not play well in this scenario because it requires fuse, and that’s a problem inside Docker.

Another (expensive) solution I thought is to create an HTTP api which provides transport & packaging using AppImageTool, so that I can call it using curl in my current gitlab-ci setup. But, as I was saying, that’s a lot of work.

Any ideas on how to solve this problem?

Thanks a lot.


Use artifacts to upload the app in GitLab, and then specify in the next job a dependency so that the artifacts will be downloaded https://docs.gitlab.com/ee/ci/yaml/#dependencies

thanks a lot! That’s exactly what I was looking for