The main “plugin” system for GitLab CI is the use of Docker images combined with the
include feature that makes it easy to use the same pipelines for many different projects.
GitLab’s CI is quite different in that respect, and I’d argue more it’s more powerful and the better for it. But it does also mean that it’s definitely in the low-code model, not no-code. There isn’t a gui to fill in the blanks.
Now, for just executing something on a remote system, you do have options. If you want to ssh directly in, all you need is a docker image with ssh-agent and ssh installed, load put the private key into a CI variable, and in your job fire up agent, load your key into agent, then ssh away.
Something like this:
mkdir -p ~/.ssh && echo "$GITLAB_KNOWN_HOSTS" >> ~/.ssh/known_hosts && chmod 600 ~/.ssh/known_hosts
eval $(ssh-agent -s)
echo "$SSH_DEPLOY_KEY" | tr -d '\r' | ssh-add -
ssh my-host echo hello world
Alternatively, you can install the gitlab agent on your destination machine and let gitlab itself do the plumbing to allow the script section of your job to run directly on your deployment host.