10 Commits

Author SHA1 Message Date
Ian 133bfd843d Merge pull request #21 from ViViDboarder/fix-custom-args
Add unquoted custom args back in
2023-07-25 20:24:32 -07:00
ViViDboarder c61ba9725f New cosign requires --yes flag 2023-07-25 15:16:12 -07:00
ViViDboarder e1aadcea34 Update cosign to hopefully fix build 2023-07-25 15:13:08 -07:00
ViViDboarder 48079a250f Update versions and get build working 2023-07-25 15:06:04 -07:00
ViViDboarder 71e9fdd0f3 Add unquoted custom args back in
This requires disabling shellcheck for the whole line. I haven't yet been
able to find a way to let the shell parse out args into an array with
quotes.
2023-07-25 15:04:19 -07:00
Ian 95b0ef6abf Merge pull request #19 from tomix1024/patch/username
Fix user->username in Readme.md examples
2023-06-29 12:13:42 -07:00
Tom Kneiphof 5d84b40f1c Fix user->username in Readme.md examples 2023-06-29 19:54:28 +02:00
Florian Maurer b7a984ed39 Fix documentation (#18)
needed to show correct docs on Woodpecker plugin page
2023-05-20 10:43:57 -07:00
6543 d9d0424b9f Update readme & Add docs.md (#16)
* docs: use "from_secret"

- https://docs.drone.io/secret/repository/
- https://woodpecker-ci.org/docs/usage/secrets

* Update Readme.md

* Add docs.md to add it to the WoodpeckerCI-Plugin index

https://woodpecker-ci.org/plugins
2022-12-28 15:20:17 -08:00
ViViDboarder 5f3f05247a Fail build when upload fails
Also updates test to catch this issue
2022-08-10 15:25:05 -07:00
7 changed files with 83 additions and 24 deletions
+4 -4
View File
@@ -40,9 +40,9 @@ jobs:
# https://github.com/sigstore/cosign-installer
- name: Install cosign
if: github.event_name != 'pull_request'
uses: sigstore/cosign-installer@7e0881f8fe90b25e305bbf0309761e9314607e25
uses: sigstore/cosign-installer@6e04d228eb30da1757ee4e1dd75a0ec73a653e06
with:
cosign-release: 'v1.9.0'
cosign-release: 'v2.1.1'
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
@@ -51,7 +51,7 @@ jobs:
- name: Setup Docker buildx
id: buildx
uses: docker/setup-buildx-action@79abd3f86f79a9d68a23c75a09a9a85889262adf
- name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }}
@@ -101,4 +101,4 @@ jobs:
COSIGN_EXPERIMENTAL: "true"
# This step uses the identity token to provision an ephemeral certificate
# against the sigstore community Fulcio instance.
run: echo "${{ steps.meta.outputs.tags }}" | xargs -I {} cosign sign {}@${{ steps.build-and-push.outputs.digest }}
run: echo "${{ steps.meta.outputs.tags }}" | xargs -I {} cosign sign --yes {}@${{ steps.build-and-push.outputs.digest }}
+2 -2
View File
@@ -1,6 +1,6 @@
FROM alpine:3.16
FROM alpine:3.17
RUN apk --no-cache add bash=~5.1 curl=~7.83 ca-certificates=~20220614
RUN apk --no-cache add bash=~5 curl=~8 ca-certificates=~20230506
COPY push.sh /bin/
RUN chmod +x /bin/push.sh
+14 -12
View File
@@ -1,5 +1,6 @@
# drone-webdav
A WebDAV plugin, for the drone.io project, which allows you to push build artifacts to any WebDAV server, including Nextcloud or ownCloud.
A [Drone CI](https://www.drone.io/) / [Woodpecker CI](https://woodpecker-ci.org/) plugin, that will allow pushing build artifacts to any WebDAV server, including Nextcloud or ownCloud.
## Examples
@@ -12,7 +13,7 @@ pipeline:
settings:
file: com.vividboarder.otbeta/build/outputs/apk/com.vividboarder.otbeta-debug.apk
destination: https://my.nextcloud.com/remote.php/dav/files/vividboarder/Android/Apks/
user: myusername
username: myusername
password: mypassword
```
@@ -25,18 +26,18 @@ pipeline:
settings:
file: com.vividboarder.otbeta/build/outputs/apk/com.vividboarder.otbeta-debug.apk
destination: https://my.nextcloud.com/remote.php/dav/files/vividboarder/Android/Apks/
secrets:
- source: WEBDAV_USER
target: PLUGIN_USERNAME
- source: WEBDAV_PASSWORD
target: PLUGIN_PASSWORD
username:
from_secret: WEBDAV_USER
password:
from_secret: WEBDAV_PASSWORD
```
## FAQ
#### How do I upload multiple files at once?
Since this script uses **curl** to upload your files, you can use it's corresponding syntax.<br>
An example, taken from the official [documentation](https://curl.haxx.se/docs/manpage.html#-T), would be to pass ``{dogs.png,cats.jpg}`` to ``PLUGIN_FILE``.
### How do I upload multiple files at once?
Since this script uses **curl** to upload your files, you can use it's corresponding syntax.
An example, taken from the official [documentation](https://curl.se/docs/manpage.html#-T), would be to pass ``{dogs.png,cats.jpg}`` to ``PLUGIN_FILE``.
## Customization
@@ -49,11 +50,12 @@ The following environment variables can be used for further cutomization:
| ``PLUGIN_ATTEMPTS`` | Defines how often a failed upload should be retried. Normally there is only one upload attempt. |
| ``PLUGIN_CUSTOM_ARGUMENTS`` | Additional arguments to be passed to `curl`. |
## Development
There are only two tests right now and they are configured using Docker Compose. To run them, just use
make test
```sh
make test
```
If someone wants to make this better (or add a Drone file) I'd gladly accept the patch.
+47
View File
@@ -0,0 +1,47 @@
---
name: WebDAV
description: plugin to publish any artifacts to any WebDAV server
authors: vividboarder
tags: [deploy, publish]
containerImage: vividboarder/drone-webdav
containerImageUrl: https://hub.docker.com/r/vividboarder/drone-webdav
url: https://github.com/vividboarder/drone-webdav
---
A [Drone CI](https://www.drone.io/) / [Woodpecker CI](https://woodpecker-ci.org/) plugin,
that will allow pushing build artifacts to any [WebDAV](http://www.webdav.org/) server, including Nextcloud or ownCloud.
## Features
- Upload multiple files
- Use a proxy
- Retry on fail
## Settings
| Settings Name | Required | Description
| ------------------ |--------- | --------------------------------------------
| `file` | **✓** | File(s) to upload. Use [curl syntax](https://curl.se/docs/manpage.html#-T) for multiple (e.g. `{dogs.png,cats.jpg}`)
| `destination` | **✓** | The WebDav **folder** url
| `username` | **✓** | The WebDav-**User** to use
| `password` | | The **Password** for the WebDav-User
| `proxy_url` | | May be used to specify a proxy (e.g. `socks5://{ip_address}:{port}`
| `timeout` | | Defines a timeout (in seconds) to stop the upload after a certain time
| `attempts` | | Defines how often a failed upload should be retried. Normally there is only one upload attempt
| `custom_arguments` | | Additional arguments to be passed to [`curl`](https://curl.se/)
## Example
```yaml
pipeline:
upload_debug:
image: vividboarder/drone-webdav
settings:
file: com.vividboarder.otbeta/build/outputs/apk/com.vividboarder.otbeta-debug.apk
destination: https://my.nextcloud.com/remote.php/dav/files/vividboarder/Android/Apks/
username:
from_secret: WEBDAV_USER
password:
from_secret: WEBDAV_PASSWORD
```
+10 -2
View File
@@ -36,8 +36,16 @@ fi
# Repeat the upload as long as specified.
while [ "${PLUGIN_ATTEMPTS}" -gt 0 ]; do
# Uploading the file
curl "${ARGS[@]}" --upload-file "$PLUGIN_FILE" "$PLUGIN_DESTINATION" && {
# Uploading the file
# shellcheck disable=SC2086
curl \
$PLUGIN_CUSTOM_ARGUMENTS \
--fail-with-body \
--show-error \
--silent \
"${ARGS[@]}" \
--upload-file "$PLUGIN_FILE" \
"$PLUGIN_DESTINATION" && {
# Terminate the script as soon as the upload is successful
echo "[INFO] Upload was successful."
exit 0
+2 -2
View File
@@ -1,8 +1,8 @@
---
version: '2.4'
version: '3'
services:
webdav:
image: sashgorokhov/webdav
image: bytemark/webdav
environment:
USERNAME: jdoe
PASSWORD: hunter2
+4 -2
View File
@@ -1,8 +1,10 @@
---
version: '2.4'
version: '3'
services:
webdav:
image: sashgorokhov/webdav
image: bytemark/webdav
environment:
ANONYMOUS_METHODS: ALL
plugin:
build: