From 5626563e841f22bef6e5107c889abcbaab448ccd Mon Sep 17 00:00:00 2001 From: Gurkengewuerz Date: Mon, 8 Aug 2022 23:21:37 +0200 Subject: [PATCH] init repo --- Dockerfile | 5 +++++ README.md | 26 ++++++++++++++++++++++++++ script.sh | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 script.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2325933 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,5 @@ +FROM alpine +ADD script.sh /bin/ +RUN chmod +x /bin/script.sh +RUN apk -Uuv add curl ca-certificates +ENTRYPOINT /bin/script.sh diff --git a/README.md b/README.md new file mode 100644 index 0000000..7c5114c --- /dev/null +++ b/README.md @@ -0,0 +1,26 @@ +# drone-gitea-package + +--- + +A Drone plugin for uploading files as generic package to Gitea package registry. + + +### Example + +```yaml +pipeline: + build: + image: alpine + commands: + - touch example.md + + artifacts: + image: gurken2108/drone-gitea-package + settings: + user: + from_secret: gitea_user + token: + from_secret: gitea_token + file: ./example.md + version: dev +``` diff --git a/script.sh b/script.sh new file mode 100644 index 0000000..0ddc4d8 --- /dev/null +++ b/script.sh @@ -0,0 +1,50 @@ +#!/bin/ash + +if [ -z "$PLUGIN_USER" ]; then + echo "ERR: user variable is empty" + exit 1 +fi + +if [ -z "$PLUGIN_TOKEN" ]; then + echo "ERR: token variable is empty" + exit 1 +fi + +if [ -z "$PLUGIN_FILE" ]; then + echo "ERR: file variable is empty" + exit 1 +fi + +HASH=`echo "$DRONE_COMMIT" | cut -c-10` +if [ -z "$PLUGIN_VERSION" ]; then + echo "INFO: version variable is empty defaulting to $HASH" +fi + +API_URL=`echo "$DRONE_REPO_LINK" | grep -Eo '^http[s]?://[^/]+'` +PACKAGE_SUBPATH=packages/${DRONE_REPO_OWNER}/generic/${DRONE_REPO_NAME}/${PLUGIN_VERSION:-$HASH} +PACKAGE_URL=${API_URL}/api/$PACKAGE_SUBPATH +PACKAGE_API_URL=${API_URL}/api/v1/$PACKAGE_SUBPATH +echo "DEBUG: destination $PACKAGE_URL" + +curl \ + --location \ + --user ${PLUGIN_USER}:${PLUGIN_TOKEN} \ + -X 'DELETE' \ + --silent --output /dev/null \ + $PACKAGE_API_URL + +# requires https://github.com/go-gitea/gitea/pull/20661 +for f in $PLUGIN_FILE; do + BASE_FILENAME=`basename $f` + echo "INFO: uploading $BASE_FILENAME to $API_URL" + status_code=`curl --location --user ${PLUGIN_USER}:${PLUGIN_TOKEN} --upload-file $f --write-out %{http_code} --silent --output /dev/null $PACKAGE_URL/$BASE_FILENAME` + + if [ $status_code -ne 201 ]; then + echo "ERR: failed to upload file ($status_code)" + exit 1 + else + echo "INFO: upload of $BASE_FILENAME successful to $PACKAGE_URL/${BASE_FILENAME}" + fi +done + +exit 0