Drone plugin to publish files and artifacts to Google Cloud Storage. For the usage information and a listing of the available options please take a look at the docs.
Run the following script to install git-leaks support to this repo.
chmod +x ./git-hooks/install.sh
./git-hooks/install.sh
Build the binary with the following command:
export GOOS=linux
export GOARCH=amd64
export CGO_ENABLED=0
export GO111MODULE=on
go build -v -a -tags netgo -o release/linux/amd64/drone-gcs
Build the Docker image with the following command:
docker build \
--label org.label-schema.build-date=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
--label org.label-schema.vcs-ref=$(git rev-parse --short HEAD) \
--file docker/Dockerfile.linux.amd64 --tag plugins/gcs .
- For upload
docker run --rm \
-e PLUGIN_SOURCE="dist" \
-e PLUGIN_TARGET="bucket/dir/" \
-e PLUGIN_IGNORE="bin/*" \
-e PLUGIN_ACL="allUsers:READER,[email protected]:OWNER" \
-e PLUGIN_GZIP="js,css,html" \
-e PLUGIN_CACHE_CONTROL="public,max-age=3600" \
-e PLUGIN_METADATA='{"x-goog-meta-foo":"bar"}' \
-v $(pwd):$(pwd) \
-w $(pwd) \
plugins/gcs
The plugin now supports glob patterns for the PLUGIN_SOURCE
parameter, enabling flexible file selection:
*
- matches any sequence of characters (except path separators)?
- matches any single character[]
- matches any character within brackets**
- recursive directory matching
# Upload all JavaScript files from any subdirectory
PLUGIN_SOURCE="src/**/*.js"
# Upload specific file types from multiple directories
PLUGIN_SOURCE="dist/*.html,assets/*.css,build/*.js"
# Upload all files from specific directories
PLUGIN_SOURCE="public/**,static/**"
# Mixed patterns - directories and globs
PLUGIN_SOURCE="./dist,./assets/*.png,docs/**/*.md"
You can specify multiple patterns separated by commas:
docker run --rm \
-e PLUGIN_SOURCE="dist/*.html,assets/**/*.{css,js},docs/*.md" \
-e PLUGIN_TARGET="bucket/website/" \
-e PLUGIN_IGNORE="**/*.tmp,**/*.log" \
plugins/gcs
The PLUGIN_IGNORE
parameter also supports multiple patterns:
# Ignore multiple file types and directories
PLUGIN_IGNORE="*.log,*.tmp,node_modules/**,**/.git/**"
All existing functionality remains unchanged:
- Single directory paths work exactly as before
- Existing ignore patterns continue to function
- No configuration changes required for current deployments
- For download
docker run --rm \
-e PLUGIN_TOKEN="<YOUR_GCP_SERVICE_ACCOUNT_TOKEN>" \
-e PLUGIN_SOURCE="bucket/dir/" \
-e PLUGIN_DOWNLOAD="true" \
-v $(pwd):$(pwd) \
-w $(pwd) \
plugins/gcs