Sign inSign up

yingce/drone-oss-cache

By yingce

•Updated almost 7 years ago

Caches build artifacts to S3 and OSS compatible storage backends. Forked from plugins/drone-s3-cache

Image
0

1.7K

yingce/drone-oss-cache repository overview

⁠drone-s3-cache

Build Status Gitter chat Join the discussion at https://discourse.drone.io Drone questions at https://stackoverflow.com Go Doc Go Report

Drone plugin that allows you to cache directories within the build workspace, this plugin is backed by S3 compatible storages. For the usage information and a listing of the available options please take a look at the docs⁠.

⁠Build

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-oss-cache

⁠Docker

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 yingce/drone-oss-cache .

⁠Usage

Support providers: S3[default], OSS
Support checksum function on PLUGIN_PATH and PLUGIN_FILENAME
Support checksumLines function on PLUGIN_PATH and PLUGIN_FILENAME

checksum(file_path string) retrun -> "32bit MD5 string"
checksumLines(file_path string, startLine, endLine int) retrun -> "32bit MD5 string"

write yaml with Drone

default:
  - &cache_setting
    provider: oss # default s3 proto
    endpoint: http://oss-cn-beijing-internal.aliyuncs.com
    access_key:
      from_secret: cache_key
    secret_key:
      from_secret: cache_secret
    path: k8s-build-cache/sso-front #also support checksum function 
    filename: '{{ checksum "package.json" }}.tar.gz' # call checksum function
    #OR filename: '{{ checksumLines "package.json" 3 10 }}.tar.gz' # call checksumLines function    

steps:
  - name: restore-cache
    image: yingce/drone-oss-cache
    settings:
      <<: *cache_setting
      restore: true

  - name: install
    image: node
    commands:
      - npm install

  - name: build
    image: node
    commands:
      - npm run build

  - name: rebuild-cache
    image: yingce/drone-oss-cache
    settings:
      <<: *cache_setting
      rebuild: true
      mount:
        - node_modules
docker run --rm \
  -e PLUGIN_FLUSH=true \
  -e PLUGIN_ENDPOINT="http://minio.company.com" \
  -e PLUGIN_ACCESS_KEY="myaccesskey" \
  -e PLUGIN_SECRET_KEY="mysecretKey" \
  -e PLUGIN_FILENAME="{{checksum \"go.mod\"}}" \
  -v $(pwd):$(pwd) \
  -w $(pwd) \
  yingce/drone-oss-cache

Aliyun OSS provider
docker run --rm \
  -e PLUGIN_PROVIDER=OSS \
  -e PLUGIN_RESTORE=true \
  -e PLUGIN_ENDPOINT="https://oss-cn-beijing.aliyuncs.com" \
  -e PLUGIN_ACCESS_KEY="myaccesskey" \
  -e PLUGIN_SECRET_KEY="mysecretKey" \
  -v $(pwd):$(pwd) \
  -w $(pwd) \
  yingce/drone-oss-cache

docker run --rm \
  -e PLUGIN_RESTORE=true \
  -e PLUGIN_ENDPOINT="http://minio.company.com" \
  -e PLUGIN_ACCESS_KEY="myaccesskey" \
  -e PLUGIN_SECRET_KEY="mysecretKey" \
  -e DRONE_REPO_OWNER="foo" \
  -e DRONE_REPO_NAME="bar" \
  -e DRONE_COMMIT_BRANCH="test" \
  -v $(pwd):$(pwd) \
  -w $(pwd) \
  yingce/drone-oss-cache

docker run -it --rm \
  -v $(pwd):$(pwd) \
  -w $(pwd) \
  alpine:latest sh -c "mkdir -p cache && echo 'testing cache' >> cache/test && cat cache/test"

docker run --rm \
  -e PLUGIN_REBUILD=true \
  -e PLUGIN_MOUNT=".bundler" \
  -e PLUGIN_ENDPOINT="http://minio.company.com" \
  -e PLUGIN_ACCESS_KEY="myaccesskey" \
  -e PLUGIN_SECRET_KEY="mysecretKey" \
  -e DRONE_REPO_OWNER="foo" \
  -e DRONE_REPO_NAME="bar" \
  -e DRONE_COMMIT_BRANCH="test" \
  -v $(pwd):$(pwd) \
  -w $(pwd) \
  yingce/drone-oss-cache

Tag summary

Content type

Image

Digest

Size

9.1 MB

Last updated

almost 7 years ago

docker pull yingce/drone-oss-cache