#!/bin/sh if [[ -n "${DRONE_WORKSPACE}" ]]; then echo "[DEBUG] creating drone workspace" # 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 < ${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 case $CLONE_TYPE in pull_request) clone-pull-request ;; tag) clone-tag ;; *) clone-commit ;; esac