You've already forked git-docker
							
							
		
			
				
	
	
		
			124 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| if [[ -n "${DRONE_WORKSPACE}" ]]; then
 | |
|   # ensure the unprivileged drone user can write
 | |
|   # to the workspace. This is required because
 | |
|   # the workspace is a docker volume and is owned
 | |
|   # by root.
 | |
|   # sudo mkdir -p ${DRONE_WORKSPACE}
 | |
|   # sudo chown drone:drone ${DRONE_WORKSPACE}
 | |
| 
 | |
|   # ensure the workspace is the current working
 | |
|   # directory. This should already be the case,
 | |
|   # but we cd just to be safe.
 | |
|   cd "${DRONE_WORKSPACE}" || exit 1
 | |
| fi
 | |
| 
 | |
| # force the home directory path.
 | |
| 
 | |
| # if [ "$HOME" != "/home/drone" ]; then
 | |
| # 	echo "[DEBUG] setting default home directory"
 | |
| # 	export HOME=/home/drone
 | |
| # fi
 | |
| 
 | |
| # if the netrc enviornment variables exist, write
 | |
| # the netrc file.
 | |
| 
 | |
| if [[ -n "${DRONE_NETRC_MACHINE}" ]]; then
 | |
|   cat <<EOF > "${HOME}/.netrc"
 | |
| machine ${DRONE_NETRC_MACHINE}
 | |
| login ${DRONE_NETRC_USERNAME}
 | |
| password ${DRONE_NETRC_PASSWORD}
 | |
| EOF
 | |
| fi
 | |
| 
 | |
| # if the ssh_key environment variable exists, write
 | |
| # the ssh key and add the netrc machine to the
 | |
| # known hosts file.
 | |
| if [[ -n "${DRONE_SSH_KEY}" ]]; then
 | |
|   mkdir "${HOME}/.ssh"
 | |
|   echo -n "${DRONE_SSH_KEY}" > "${HOME}/.ssh/id_rsa"
 | |
|   chmod 600 "${HOME}/.ssh/id_rsa"
 | |
| 
 | |
|   touch "${HOME}/.ssh/known_hosts"
 | |
|   chmod 600 "${HOME}/.ssh/known_hosts"
 | |
|   ssh-keyscan -H "${DRONE_NETRC_MACHINE}" > /etc/ssh/ssh_known_hosts 2> /dev/null
 | |
| fi
 | |
| 
 | |
| # # AWS codecommit support using AWS access key & secret key
 | |
| # # Refer: https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-unixes.html
 | |
| 
 | |
| # if [[ -n "${DRONE_AWS_ACCESS_KEY}" ]]; then
 | |
| # 	aws configure set aws_access_key_id "${DRONE_AWS_ACCESS_KEY}"
 | |
| # 	aws configure set aws_secret_access_key "${DRONE_AWS_SECRET_KEY}"
 | |
| # 	aws configure set default.region "${DRONE_AWS_REGION}"
 | |
| 
 | |
| # 	git config --global credential.helper '!aws codecommit credential-helper $@'
 | |
| # 	git config --global credential.UseHttpPath true
 | |
| # fi
 | |
| 
 | |
| # configure git global behavior and parameters via the
 | |
| # following environment variables:
 | |
| 
 | |
| 
 | |
| if [[ -z "${DRONE_COMMIT_AUTHOR_NAME}" ]]; then
 | |
|   export DRONE_COMMIT_AUTHOR_NAME=drone
 | |
| fi
 | |
| 
 | |
| if [[ -z "${DRONE_COMMIT_AUTHOR_EMAIL}" ]]; then
 | |
|   export DRONE_COMMIT_AUTHOR_EMAIL=drone@localhost
 | |
| fi
 | |
| 
 | |
| export GIT_AUTHOR_NAME=${DRONE_COMMIT_AUTHOR_NAME}
 | |
| export GIT_AUTHOR_EMAIL=${DRONE_COMMIT_AUTHOR_EMAIL}
 | |
| export GIT_COMMITTER_NAME=${DRONE_COMMIT_AUTHOR_NAME}
 | |
| export GIT_COMMITTER_EMAIL=${DRONE_COMMIT_AUTHOR_EMAIL}
 | |
| 
 | |
| # invoke the sub-script based on the drone event type.
 | |
| # TODO we should ultimately look at the ref, since
 | |
| # we need something compatible with deployment events.
 | |
| 
 | |
| CLONE_TYPE=${DRONE_BUILD_EVENT}
 | |
| case ${DRONE_COMMIT_REF} in
 | |
|   refs/tags/*)
 | |
|     CLONE_TYPE=tag
 | |
|   ;;
 | |
|   refs/pull/*)
 | |
|     CLONE_TYPE=pull_request
 | |
|   ;;
 | |
|   refs/pull-request/*)
 | |
|     CLONE_TYPE=pull_request
 | |
|   ;;
 | |
|   refs/merge-requests/*)
 | |
|     CLONE_TYPE=pull_request
 | |
|   ;;
 | |
| esac
 | |
| 
 | |
| git_clone_retry(){
 | |
|   retries="${PLUGIN_RETRIES:-0}"
 | |
|   if [ -n "${retries##*[0-9]*}" ] || [ "${retries}" -lt 0 ]; then
 | |
|     echo "PLUGIN_RETRIES defined but is not a number: ${retries}" >&2
 | |
|     exit 1
 | |
|   fi
 | |
| 
 | |
|   echo "Cloning with ${retries} retries"
 | |
|   n=0
 | |
|   until [ "$n" -gt "${retries}" ]; do
 | |
|     $1 && return
 | |
|     n=$((n+1))
 | |
|   done
 | |
| 
 | |
|   exit 1
 | |
| }
 | |
| 
 | |
| case ${CLONE_TYPE} in
 | |
| pull_request)
 | |
|   git_clone_retry clone-pull-request
 | |
|   ;;
 | |
| tag)
 | |
|   git_clone_retry clone-tag
 | |
|   ;;
 | |
| *)
 | |
|   git_clone_retry clone-commit
 | |
|   ;;
 | |
| esac |