можно по ssh без проблем, например так
stages:
- deploy
deploy:
stage: deploy
image: greenatom/ssh-client
when: manual
script:
- |
echo "Init ssh"
eval $(ssh-agent -s)
echo "$STAGE_SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "${STAGE_DEPLOYMENT_SERVER_IP} deployment.server" >> /etc/hosts
ssh-keyscan -p ${STAGE_DEPLOYMENT_SERVER_PORT} deployment.server > ~/.ssh/known_hosts
chmod 644 ~/.ssh/known_hosts
echo "Starting deploy to test ..."
scp -P ${STAGE_DEPLOYMENT_SERVER_PORT} ./docker-compose.yml ./update.sh ${STAGE_DEPLOYMENT_USER}
@deployment.server:~/
ssh -p ${STAGE_DEPLOYMENT_SERVER_PORT} ${STAGE_DEPLOYMENT_USER}
@deployment.server "./update.sh"