84 lines
1.9 KiB
Bash
84 lines
1.9 KiB
Bash
#!/bin/sh
|
|
|
|
# exit on error
|
|
set -e
|
|
|
|
if [ -z "$GIT_SSH_KEY" ]; then
|
|
echo "No GIT_SSH_KEY variable found"
|
|
exit 1
|
|
fi
|
|
|
|
GIT_COMMITTER_EMAIL=${GIT_COMMITTER_EMAIL:-$GITLAB_USER_EMAIL}
|
|
GIT_COMMITTER_NAME=${GIT_COMMITTER_NAME:-$GITLAB_USER_NAME}
|
|
|
|
if [ -z "$GIT_COMMITTER_EMAIL" ]; then
|
|
echo "No GIT_COMMITTER_EMAIL variable found"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$GIT_COMMITTER_NAME" ]; then
|
|
echo "No GIT_COMMITTER_NAME variable found"
|
|
exit 1
|
|
fi
|
|
|
|
echo "GIT_COMMITTER_EMAIL: $GIT_COMMITTER_EMAIL"
|
|
echo "GIT_COMMITTER_NAME: $GIT_COMMITTER_NAME"
|
|
|
|
mkdir -p ~/.ssh
|
|
|
|
echo "
|
|
Host $CI_SERVER_SHELL_SSH_HOST
|
|
HostName $CI_SERVER_SHELL_SSH_HOST
|
|
User git
|
|
Port $CI_SERVER_SHELL_SSH_PORT
|
|
IdentityFile $GIT_SSH_KEY
|
|
IdentitiesOnly yes
|
|
" > ~/.ssh/config
|
|
|
|
chmod 600 ~/.ssh/config
|
|
chmod 600 "$GIT_SSH_KEY"
|
|
|
|
echo "SSH configuration: ~/.ssh/config"
|
|
cat ~/.ssh/config
|
|
|
|
echo "Adding the ssh key to the known hosts"
|
|
ssh-keyscan -H "$CI_SERVER_SHELL_SSH_HOST" >> ~/.ssh/known_hosts
|
|
|
|
echo "Connecting to the ssh server"
|
|
ssh git@$CI_SERVER_SHELL_SSH_HOST
|
|
|
|
echo "Current git version: $(git --version)"
|
|
|
|
echo "Setting up the git configuration"
|
|
git config --global core.sshCommand "ssh -F ~/.ssh/config"
|
|
git config --global user.email "$GIT_COMMITTER_EMAIL"
|
|
git config --global user.name "$GIT_COMMITTER_NAME"
|
|
|
|
git remote add ssh git@$CI_SERVER_SHELL_SSH_HOST:$CI_PROJECT_PATH.git
|
|
|
|
echo "Checking out the branch $CI_COMMIT_BRANCH"
|
|
git checkout "$CI_COMMIT_BRANCH"
|
|
|
|
echo "Pulling the latest changes from the branch $CI_COMMIT_BRANCH"
|
|
git pull origin "$CI_COMMIT_BRANCH"
|
|
|
|
echo "Fetch the remote branch"
|
|
git fetch --depth 1 ssh "$CI_COMMIT_BRANCH"
|
|
|
|
echo "Set the upstream to ssh"
|
|
git branch --set-upstream-to="ssh/$CI_COMMIT_BRANCH" "$CI_COMMIT_BRANCH"
|
|
|
|
echo "verifying the changes"
|
|
git branch -vv
|
|
|
|
echo "current git status"
|
|
git status
|
|
|
|
echo "current git branch"
|
|
git branch
|
|
|
|
echo "current head commit"
|
|
git rev-parse HEAD
|
|
|
|
echo "Done"
|