Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
drone-git/posix/clone
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
executable file
117 lines (94 sloc)
3.06 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/sh | |
| 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} | |
| 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 [[ ! -z "${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 [[ ! -z "${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 [[ ! -z "$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 |