Adding options for customization. (#5)

* First changes.

* Fixing typo.

* Making improvments.

* Removing unnecessary code.

* Improvements and code formatting

* Additional formatting.

* Minor improvements.

* RM else

Co-authored-by: 6543 <6543@obermui.de>
This commit is contained in:
opyale 2020-05-18 04:53:22 +02:00 committed by GitHub
parent 8a22e80d99
commit b61f16a120
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 64 additions and 5 deletions

View File

@ -1,7 +1,7 @@
# drone-webdav
*A WebDAV plugin for the drone.io project*
A WebDAV plugin, for the drone.io project, which allows you to push build artifacts to any WebDAV server, including Nextcloud or ownCloud.
The WebDAV plugin will allow pushing build artifacts to any WebDAV server, including Nextcloud or ownCloud.
## Examples
An example configuration would be as follows:
@ -29,3 +29,14 @@ pipeline:
- source: WEBDAV_PASSWORD
target: PLUGIN_PASSWORD
```
## Customization
The following environment variables can be used for further cutomization:
| Variable | Description |
|-----------------------------|----------------------------------------------------------------------------------------------------------|
| ``PLUGIN_PROXY_URL`` | May be used to specify a proxy (e.g. ``socks5://{ip_address}:{port}``) |
| ``PLUGIN_TIMEOUT`` | Defines a timeout (in seconds) to stop the upload after a certain time. |
| ``PLUGIN_ATTEMPTS`` | Defines how often a failed upload should be retried. Normally there is only one upload attempt. |
| ``PLUGIN_CUSTOM_ARGUMENTS`` | Allows for adding custom arguments. |

54
push.sh
View File

@ -1,16 +1,64 @@
#! /bin/sh
# Use WEBDAV_USERNAME or WEBDAV_PASSWORD as default, if provided
# Use WEBDAV_USERNAME as default, if provided.
if [ -z "$PLUGIN_USERNAME" ] && [ ! -z "$WEBDAV_USERNAME" ]; then
PLUGIN_USERNAME="$WEBDAV_USERNAME"
fi
# Use WEBDAV_PASSWORD as default, if provided.
if [ -z "$PLUGIN_PASSWORD" ] && [ ! -z "$WEBDAV_PASSWORD" ]; then
PLUGIN_PASSWORD="$WEBDAV_PASSWORD"
fi
# If username and password are provided, add auth
if [ ! -z "$PLUGIN_USERNAME" ] && [ ! -z "$PLUGIN_PASSWORD" ]; then
AUTH="-u ${PLUGIN_USERNAME}:${PLUGIN_PASSWORD}"
AUTH="--user '${PLUGIN_USERNAME}':'${PLUGIN_PASSWORD}'"
fi
curl -T $PLUGIN_FILE $AUTH $PLUGIN_DESTINATION
# Use a proxy, if one is specified
if [ ! -z "$PLUGIN_PROXY_URL" ]; then
PLUGIN_PROXY_URL="--proxy '${PLUGIN_PROXY_URL}'"
fi
# If a timeout is specified, make use of it.
if [ ! -z "$PLUGIN_TIMEOUT" ]; then
PLUGIN_TIMEOUT="--max-time '${PLUGIN_TIMEOUT}'"
fi
# Set PLUGIN_ATTEMPTS to one if nothing else is specified
if [ -z "$PLUGIN_ATTEMPTS" ]; then
PLUGIN_ATTEMPTS=1
fi
# Repeat the upload as long as specified.
while [ "${PLUGIN_ATTEMPTS}" -gt 0 ]; do
# Uploading the file
curl $PLUGIN_PROXY_URL $PLUGIN_TIMEOUT $PLUGIN_CUSTOM_ARGUMENTS --upload-file $PLUGIN_FILE $AUTH $PLUGIN_DESTINATION && {
# Terminate the script as soon as the upload is successful
echo "[INFO] Upload was successful."
exit 0
}
# Show messages in case uploads have failed
[ "$PLUGIN_ATTEMPTS" -gt 1 ] && {
echo "[INFO] Upload failed. Attempting a new upload, if possible."
}
PLUGIN_ATTEMPTS=$((PLUGIN_ATTEMPTS-1))
done
# Returns an error because the upload was not successful
echo "[ERROR] All upload attempts have failed."
exit 1