drone-cache

command module
v0.9.0-beta Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 15, 2019 License: Apache-2.0 Imports: 4 Imported by: 0

README

drone-cache

Maintenance Drone Go Doc Go Report Card

Drone plugin for caching artifacts to a S3 bucket (or soon to a mounted volume). Use this plugin for caching build artifacts to speed up your build times. This plugin can create and restore caches of any folders.

For the usage information and a listing of the available options please take a look at usage and examples.

Usage

Using executable (with CLI args)
NAME:
   Drone cache plugin - Drone cache plugin

USAGE:
   drone-cache [global options] command [command options] [arguments...]

VERSION:
   0.9.0

COMMANDS:
     help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --repo.fullname value, --rf value         repository full name [$DRONE_REPO]
   --repo.owner value, --ro value            repository owner [$DRONE_REPO_OWNER]
   --repo.name value, --rn value             repository name [$DRONE_REPO_NAME]
   --repo.link value, --rl value             repository link [$DRONE_REPO_LINK]
   --repo.avatar value, --ra value           repository avatar [$DRONE_REPO_AVATAR]
   --repo.branch value, --rb value           repository default branch [$DRONE_REPO_BRANCH]
   --repo.private, --rp                      repository is private [$DRONE_REPO_PRIVATE]
   --repo.trusted, --rt                      repository is trusted [$DRONE_REPO_TRUSTED]
   --remote.url value, --remu value          git remote url [$DRONE_REMOTE_URL]
   --commit.sha value, --cs value            git commit sha [$DRONE_COMMIT_SHA]
   --commit.ref value, --cr value            git commit ref (default: "refs/heads/master") [$DRONE_COMMIT_REF]
   --commit.branch value, --cb value         git commit branch (default: "master") [$DRONE_COMMIT_BRANCH]
   --commit.message value, --cm value        git commit message [$DRONE_COMMIT_MESSAGE]
   --commit.link value, --cl value           git commit link [$DRONE_COMMIT_LINK]
   --commit.author.name value, --an value    git author name [$DRONE_COMMIT_AUTHOR]
   --commit.author.email value, --ae value   git author email [$DRONE_COMMIT_AUTHOR_EMAIL]
   --commit.author.avatar value, --aa value  git author avatar [$DRONE_COMMIT_AUTHOR_AVATAR]
   --build.event value, --be value           build event (default: "push") [$DRONE_BUILD_EVENT]
   --build.number value, --bn value          build number (default: 0) [$DRONE_BUILD_NUMBER]
   --build.created value, --bc value         build created (default: 0) [$DRONE_BUILD_CREATED]
   --build.started value, --bs value         build started (default: 0) [$DRONE_BUILD_STARTED]
   --build.finished value, --bf value        build finished (default: 0) [$DRONE_BUILD_FINISHED]
   --build.status value, --bstat value       build status (default: "success") [$DRONE_BUILD_STATUS]
   --build.link value, --bl value            build link [$DRONE_BUILD_LINK]
   --build.deploy value, --db value          build deployment target [$DRONE_DEPLOY_TO]
   --yaml.verified, --yv                     build yaml is verified [$DRONE_YAML_VERIFIED]
   --yaml.signed, --ys                       build yaml is signed [$DRONE_YAML_SIGNED]
   --prev.build.number value, --pbn value    previous build number (default: 0) [$DRONE_PREV_BUILD_NUMBER]
   --prev.build.status value, --pbst value   previous build status [$DRONE_PREV_BUILD_STATUS]
   --prev.commit.sha value, --pcs value      previous build sha [$DRONE_PREV_COMMIT_SHA]
   --mount value, -m value                   cache directories, an array of folders to cache [$PLUGIN_MOUNT]
   --rebuild, --reb                          rebuild the cache directories [$PLUGIN_REBUILD]
   --restore, --res                          restore the cache directories [$PLUGIN_RESTORE]
   --cache-key value, --chk value            cache key to use for the cache directories [$PLUGIN_CACHE_KEY]
   --archive-format value, --arcfmt value    archive format to use to store the cache directories. (tar, gzip) (default: "tar") [$PLUGIN_ARCHIVE_FORMAT]
   --endpoint value, -e value                endpoint for the s3 connection [$PLUGIN_ENDPOINT, $S3_ENDPOINT]
   --access-key value, --akey value          AWS access key [$PLUGIN_ACCESS_KEY, $AWS_ACCESS_KEY_ID, $CACHE_AWS_ACCESS_KEY_ID]
   --secret-key value, --skey value          AWS secret key [$PLUGIN_SECRET_KEY, $AWS_SECRET_ACCESS_KEY, $CACHE_AWS_SECRET_ACCESS_KEY]
   --bucket value, --bckt value              AWS bucket name [$PLUGIN_BUCKET, $S3_BUCKET]
   --region value, --reg value               AWS bucket region. (us-east-1, eu-west-1, ...) [$PLUGIN_REGION, $S3_REGION]
   --path-style, --ps                        use path style for bucket paths. (true for minio, false for aws) [$PLUGIN_PATH_STYLE]
   --acl value                               upload files with acl (private, public-read, ...) (default: "private") [$PLUGIN_ACL]
   --encryption value, --enc value           server-side encryption algorithm, defaults to none. (AES256, aws:kms) [$PLUGIN_ENCRYPTION]
   --help, -h                                show help
   --version, -v                             print the version

Using Docker (with Environment variables)
$ docker run --rm \
      -e DRONE_REPO=octocat/hello-world \
      -e DRONE_REPO_BRANCH=master \
      -e DRONE_COMMIT_BRANCH=master \
      -e PLUGIN_MOUNT=node_modules \
      -e PLUGIN_RESTORE=false \
      -e PLUGIN_REBUILD=true \
      -e PLUGIN_BUCKET=<bucket> \
      -e AWS_ACCESS_KEY_ID=<token> \
      -e AWS_SECRET_ACCESS_KEY=<secret> \
      meltwater/drone-cache

Examples

Drone Config examples

The following is a sample configuration in your .drone.yml file:

Simple
pipeline:
  restore-cache:
    image: meltwater/drone-cache
    pull: true
    restore: true
    bucket: drone-cache-bucket
    region: eu-west-1
    secrets: [aws_access_key_id, aws_secret_access_key]
    mount:
      - 'deps'
      - '_dialyzer'

  build:
    image: node:latest
    commands:
      - npm install

rebuild-deps-cache:
    image: meltwater/drone-cache
    pull: true
    rebuild: true
    bucket: drone-cache-bucket
    region: eu-west-1
    secrets: [aws_access_key_id, aws_secret_access_key]
    mount:
      - 'deps'
With custom cache key prefix template
pipeline:
  restore-cache:
    image: meltwater/drone-cache
    pull: true
    restore: true
    cache_key: "{{ .Repo.Name }}_{{ .Commit.Branch }}_{{ .Build.Number }}"
    bucket: drone-cache-bucket
    region: eu-west-1
    secrets: [aws_access_key_id, aws_secret_access_key]
    mount:
      - 'deps'
      - '_dialyzer'

  build:
    image: node:latest
    commands:
      - npm install

rebuild-deps-cache:
    image: meltwater/drone-cache
    pull: true
    rebuild: true
    cache_key: "{{ .Repo.Name }}_{{ .Commit.Branch }}_{{ .Build.Number }}"
    bucket: drone-cache-bucket
    region: eu-west-1
    secrets: [aws_access_key_id, aws_secret_access_key]
    mount:
      - 'deps'
With gzip compression
pipeline:
  restore-cache:
    image: meltwater/drone-cache
    pull: true
    restore: true
    cache_key: "{{ .Repo.Name }}_{{ .Commit.Branch }}_{{ .Build.Number }}"
    archive_format: "gzip"
    bucket: drone-cache-bucket
    region: eu-west-1
    secrets: [aws_access_key_id, aws_secret_access_key]
    mount:
      - 'deps'
      - '_dialyzer'

  build:
    image: node:latest
    commands:
      - npm install

rebuild-deps-cache:
    image: meltwater/drone-cache
    pull: true
    rebuild: true
    cache_key: "{{ .Repo.Name }}_{{ .Commit.Branch }}_{{ .Build.Number }}"
    archive_format: "gzip"
    bucket: drone-cache-bucket
    region: eu-west-1
    secrets: [aws_access_key_id, aws_secret_access_key]
    mount:
      - 'deps'
Debug
pipeline:
  restore-cache:
    image: meltwater/drone-cache
    pull: true
    restore: true
    debug: true
    bucket: drone-cache-bucket
    region: eu-west-1
    secrets: [aws_access_key_id, aws_secret_access_key]
    mount:
      - 'deps'
      - '_dialyzer'

  build:
    image: node:latest
    commands:
      - npm install

rebuild-deps-cache:
    image: meltwater/drone-cache
    pull: true
    rebuild: true
    debug: true
    bucket: drone-cache-bucket
    region: eu-west-1
    secrets: [aws_access_key_id, aws_secret_access_key]
    mount:
      - 'deps'

Development

Local setup
$ ./scripts/setup_dev_environment.sh
> Done.
Tests
$ ./test
> ...

OR

$ docker-compose up -d
> ...
$ go test ./..
> ...
Build Binary

Build the binary with the following commands:

$ make build
> ...
$ go build .
> ...
Build Docker

Build the docker image with the following commands:

$ make docker-build
> ...

Contributing

Pull requests are welcome.

Authors

See LICENSE document

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package cache provides functionality for cache storage
Package cache provides functionality for cache storage
Package plugin for caching directories using given backends
Package plugin for caching directories using given backends

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL