Sending kill signal using a setuid process results in Operation not permitted
Solution 1:
Linux ignores setuid bit on scripts/interpreted executables (the ones that start with #!) for the reasons of security.
As a kind of hacky solution you can try to compile a simple binary out of your script using https://github.com/neurobin/shc and setuid it:
sudo add-apt-repository ppa:neurobin/ppa
sudo apt-get install shc
shc -f my_promhup_script -o promhup
sudo mv promhup /usr/bin/
Although I'd rather go for the sudo option - that's what it was designed for.
Update:
For the sudo option, you can add something like this to your sudoers:
gitlab-runner ALL = (ALL) ALL
gitlab-runner ALL = (root) NOPASSWD: /usr/bin/promhup
this will make your sudo not ask password only for your script, while asking it for the others
source: https://unix.stackexchange.com/questions/18830/how-to-run-a-specific-program-as-root-without-a-password-prompt