diff --git a/.appveyor.yml b/.appveyor.yml deleted file mode 100644 index 1830ef4..0000000 --- a/.appveyor.yml +++ /dev/null @@ -1,66 +0,0 @@ -version: '{build}' -image: 'Visual Studio 2017' -platform: 'x64' - -clone_folder: 'c:\gopath\src\github.com\drone-plugins\drone-volume-cache' -max_jobs: 1 - -environment: - GOPATH: c:\gopath - DOCKER_USERNAME: - secure: '4YzzahbEiMZQJpOCOd1LAw==' - DOCKER_PASSWORD: - secure: 'VqO/G3Zfslu6zSLdwHKO+Q==' - GO111MODULE: on - -install: - - ps: | - docker version - go version - - ps: | - $env:Path = "c:\gopath\bin;$env:Path" - -build_script: - - ps: | - if ( $env:APPVEYOR_REPO_TAG -eq 'false' ) { - go build -ldflags "-X main.build=$env:APPVEYOR_BUILD_VERSION" -a -o release/drone-volume-cache.exe - } else { - $version = $env:APPVEYOR_REPO_TAG_NAME.substring(1) - go build -ldflags "-X main.version=$version -X main.build=$env:APPVEYOR_BUILD_VERSION" -a -o release/drone-volume-cache.exe - } - - docker pull microsoft/nanoserver:10.0.14393.1593 - docker build -f Dockerfile.windows -t plugins/volume-cache:windows-amd64 . - -test_script: - - ps: | - docker run --rm plugins/volume-cache:windows-amd64 --version - -deploy_script: - - ps: | - $ErrorActionPreference = 'Stop'; - - if ( $env:APPVEYOR_PULL_REQUEST_NUMBER ) { - Write-Host Nothing to deploy. - } else { - echo $env:DOCKER_PASSWORD | docker login --username $env:DOCKER_USERNAME --password-stdin - - if ( $env:APPVEYOR_REPO_TAG -eq 'true' ) { - $major,$minor,$patch = $env:APPVEYOR_REPO_TAG_NAME.substring(1).split('.') - - docker push plugins/volume-cache:windows-amd64 - - docker tag plugins/volume-cache:windows-amd64 plugins/volume-cache:$major.$minor.$patch-windows-amd64 - docker push plugins/volume-cache:$major.$minor.$patch-windows-amd64 - - docker tag plugins/volume-cache:windows-amd64 plugins/volume-cache:$major.$minor-windows-amd64 - docker push plugins/volume-cache:$major.$minor-windows-amd64 - - docker tag plugins/volume-cache:windows-amd64 plugins/volume-cache:$major-windows-amd64 - docker push plugins/volume-cache:$major-windows-amd64 - } else { - if ( $env:APPVEYOR_REPO_BRANCH -eq 'master' ) { - docker push plugins/volume-cache:windows-amd64 - } - } - } diff --git a/.drone.jsonnet b/.drone.jsonnet new file mode 100644 index 0000000..5e2d808 --- /dev/null +++ b/.drone.jsonnet @@ -0,0 +1,169 @@ +local PipelineTesting = { + kind: "pipeline", + name: "testing", + platform: { + os: "linux", + arch: "amd64", + }, + steps: [ + { + name: "vet", + image: "golang:1.11", + pull: "always", + environment: { + GO111MODULE: "on", + }, + commands: [ + "go vet ./...", + ], + }, + { + name: "test", + image: "golang:1.11", + pull: "always", + environment: { + GO111MODULE: "on", + }, + commands: [ + "go test -cover ./...", + ], + }, + ], + trigger: { + branch: [ "master" ], + }, +}; + +local PipelineBuild(os="linux", arch="amd64") = { + kind: "pipeline", + name: os + "-" + arch, + platform: { + os: os, + arch: arch, + }, + steps: [ + { + name: "build-push", + image: "golang:1.11", + pull: "always", + environment: { + CGO_ENABLED: "0", + GO111MODULE: "on", + }, + commands: [ + "go build -v -ldflags \"-X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/" + os + "/" + arch + "/drone-volume-cache", + ], + when: { + event: [ "push", "pull_request" ], + }, + }, + { + name: "build-tag", + image: "golang:1.11", + pull: "always", + environment: { + CGO_ENABLED: "0", + GO111MODULE: "on", + }, + commands: [ + "go build -v -ldflags \"-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/" + os + "/" + arch + "/drone-volume-cache", + ], + when: { + event: [ "tag" ], + }, + }, + { + name: "executable", + image: "golang:1.11", + pull: "always", + commands: [ + "./release/" + os + "/" + arch + "/drone-volume-cache --help", + ], + }, + { + name: "dryrun", + image: "plugins/docker:" + os + "-" + arch, + pull: "always", + settings: { + dry_run: true, + tags: os + "-" + arch, + dockerfile: "docker/Dockerfile." + os + "." + arch, + repo: "plugins/volume-cache", + username: { "from_secret": "docker_username" }, + password: { "from_secret": "docker_password" }, + }, + when: { + event: [ "pull_request" ], + }, + }, + { + name: "publish", + image: "plugins/docker:" + os + "-" + arch, + pull: "always", + settings: { + auto_tag: true, + auto_tag_suffix: os + "-" + arch, + dockerfile: "docker/Dockerfile." + os + "." + arch, + repo: "plugins/volume-cache", + username: { "from_secret": "docker_username" }, + password: { "from_secret": "docker_password" }, + }, + when: { + event: [ "push", "tag" ], + }, + }, + ], + depends_on: [ + "testing", + ], + trigger: { + branch: [ "master" ], + }, +}; + +local PipelineNotifications = { + kind: "pipeline", + name: "notifications", + platform: { + os: "linux", + arch: "amd64", + }, + steps: [ + { + name: "manifest", + image: "plugins/manifest:1", + pull: "always", + settings: { + username: { "from_secret": "docker_username" }, + password: { "from_secret": "docker_password" }, + spec: "docker/manifest.tmpl", + ignore_missing: true, + }, + }, + { + name: "microbadger", + image: "plugins/webhook:1", + pull: "always", + settings: { + url: { "from_secret": "microbadger_url" }, + }, + }, + ], + depends_on: [ + "linux-amd64", + "linux-arm64", + "linux-arm", + ], + trigger: { + branch: [ "master" ], + event: [ "push", "tag" ], + }, +}; + +[ + PipelineTesting, + PipelineBuild("linux", "amd64"), + PipelineBuild("linux", "arm64"), + PipelineBuild("linux", "arm"), + PipelineNotifications, +] diff --git a/.drone.windows.yml b/.drone.windows.yml new file mode 100644 index 0000000..835f05d --- /dev/null +++ b/.drone.windows.yml @@ -0,0 +1,76 @@ +--- +kind: pipeline +name: windows-amd64 + +platform: + os: windows + arch: amd64 + +steps: +- name: build-push + pull: always + image: golang:1.11 + commands: + - "go build -v -ldflags \"-X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/windows/amd64/drone-volume-cache" + environment: + CGO_ENABLED: 0 + GO111MODULE: on + when: + event: + - push + - pull_request + +- name: build-tag + pull: always + image: golang:1.11 + commands: + - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/windows/amd64/drone-volume-cache" + environment: + CGO_ENABLED: 0 + GO111MODULE: on + when: + event: + - tag + +- name: executable + pull: always + image: golang:1.11 + commands: + - ./release/windows/amd64/drone-volume-cache --help + +- name: dryrun + pull: always + image: plugins/docker:windows-amd64 + settings: + dockerfile: docker/Dockerfile.windows.amd64 + dry_run: true + password: + from_secret: docker_password + repo: plugins/volume-cache + tags: windows-amd64 + username: + from_secret: docker_username + when: + event: + - pull_request + +- name: publish + pull: always + image: plugins/docker:windows-amd64 + settings: + auto_tag: true + auto_tag_suffix: windows-amd64 + dockerfile: docker/Dockerfile.windows.amd64 + password: + from_secret: docker_password + repo: plugins/volume-cache + username: + from_secret: docker_username + when: + event: + - push + - tag + +trigger: + branch: + - master diff --git a/.drone.yml b/.drone.yml index 1520ed4..19638a6 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,147 +1,309 @@ -workspace: - base: /go - path: src/github.com/drone-plugins/drone-volume-cache - -pipeline: - test: - image: golang:1.11 - pull: true - environment: - - GO111MODULE=on - commands: - - go vet ./... - - go test -cover ./... - - build_linux_amd64: - image: golang:1.11 - pull: true - group: build - environment: - - GOOS=linux - - GOARCH=amd64 - - CGO_ENABLED=0 - - GO111MODULE=on - commands: - - | - if test "${DRONE_TAG}" = ""; then - go build -v -ldflags "-X main.build=${DRONE_BUILD_NUMBER}" -a -o release/linux/amd64/drone-volume-cache - else - go build -v -ldflags "-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}" -a -o release/linux/amd64/drone-volume-cache - fi - - build_linux_i386: - image: golang:1.11 - pull: true - group: build - environment: - - GOOS=linux - - GOARCH=386 - - CGO_ENABLED=0 - - GO111MODULE=on - commands: - - | - if test "${DRONE_TAG}" = ""; then - go build -v -ldflags "-X main.build=${DRONE_BUILD_NUMBER}" -a -o release/linux/i386/drone-volume-cache - else - go build -v -ldflags "-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}" -a -o release/linux/i386/drone-volume-cache - fi - - build_linux_arm64: - image: golang:1.11 - pull: true - group: build - environment: - - GOOS=linux - - GOARCH=arm64 - - CGO_ENABLED=0 - - GO111MODULE=on - commands: - - | - if test "${DRONE_TAG}" = ""; then - go build -v -ldflags "-X main.build=${DRONE_BUILD_NUMBER}" -a -o release/linux/arm64/drone-volume-cache - else - go build -v -ldflags "-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}" -a -o release/linux/arm64/drone-volume-cache - fi - - build_linux_arm: - image: golang:1.11 - pull: true - group: build - environment: - - GOOS=linux - - GOARCH=arm - - CGO_ENABLED=0 - - GOARM=7 - - GO111MODULE=on - commands: - - | - if test "${DRONE_TAG}" = ""; then - go build -v -ldflags "-X main.build=${DRONE_BUILD_NUMBER}" -a -o release/linux/arm/drone-volume-cache - else - go build -v -ldflags "-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}" -a -o release/linux/arm/drone-volume-cache - fi - - publish_linux_amd64: - image: plugins/docker:17.12 - pull: true - secrets: [ docker_username, docker_password ] - group: docker +--- +kind: pipeline +name: testing + +platform: + os: linux + arch: amd64 + +steps: +- name: vet + pull: always + image: golang:1.11 + commands: + - go vet ./... + environment: + GO111MODULE: on + +- name: test + pull: always + image: golang:1.11 + commands: + - go test -cover ./... + environment: + GO111MODULE: on + +trigger: + branch: + - master + +--- +kind: pipeline +name: linux-amd64 + +platform: + os: linux + arch: amd64 + +steps: +- name: build-push + pull: always + image: golang:1.11 + commands: + - "go build -v -ldflags \"-X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/linux/amd64/drone-volume-cache" + environment: + CGO_ENABLED: 0 + GO111MODULE: on + when: + event: + - push + - pull_request + +- name: build-tag + pull: always + image: golang:1.11 + commands: + - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/linux/amd64/drone-volume-cache" + environment: + CGO_ENABLED: 0 + GO111MODULE: on + when: + event: + - tag + +- name: executable + pull: always + image: golang:1.11 + commands: + - ./release/linux/amd64/drone-volume-cache --help + +- name: dryrun + pull: always + image: plugins/docker:linux-amd64 + settings: + dockerfile: docker/Dockerfile.linux.amd64 + dry_run: true + password: + from_secret: docker_password repo: plugins/volume-cache + tags: linux-amd64 + username: + from_secret: docker_username + when: + event: + - pull_request + +- name: publish + pull: always + image: plugins/docker:linux-amd64 + settings: auto_tag: true auto_tag_suffix: linux-amd64 - dockerfile: Dockerfile - when: - event: [ push, tag ] - - publish_linux_i386: - image: plugins/docker:17.12 - pull: true - secrets: [ docker_username, docker_password ] - group: docker + dockerfile: docker/Dockerfile.linux.amd64 + password: + from_secret: docker_password repo: plugins/volume-cache - auto_tag: true - auto_tag_suffix: linux-i386 - dockerfile: Dockerfile.i386 - when: - event: [ push, tag ] - - publish_linux_arm64: - image: plugins/docker:17.12 - pull: true - secrets: [ docker_username, docker_password ] - group: docker + username: + from_secret: docker_username + when: + event: + - push + - tag + +trigger: + branch: + - master + +depends_on: +- testing + +--- +kind: pipeline +name: linux-arm64 + +platform: + os: linux + arch: arm64 + +steps: +- name: build-push + pull: always + image: golang:1.11 + commands: + - "go build -v -ldflags \"-X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/linux/arm64/drone-volume-cache" + environment: + CGO_ENABLED: 0 + GO111MODULE: on + when: + event: + - push + - pull_request + +- name: build-tag + pull: always + image: golang:1.11 + commands: + - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/linux/arm64/drone-volume-cache" + environment: + CGO_ENABLED: 0 + GO111MODULE: on + when: + event: + - tag + +- name: executable + pull: always + image: golang:1.11 + commands: + - ./release/linux/arm64/drone-volume-cache --help + +- name: dryrun + pull: always + image: plugins/docker:linux-arm64 + settings: + dockerfile: docker/Dockerfile.linux.arm64 + dry_run: true + password: + from_secret: docker_password repo: plugins/volume-cache + tags: linux-arm64 + username: + from_secret: docker_username + when: + event: + - pull_request + +- name: publish + pull: always + image: plugins/docker:linux-arm64 + settings: auto_tag: true auto_tag_suffix: linux-arm64 - dockerfile: Dockerfile.arm64 - when: - event: [ push, tag ] - - publish_linux_arm: - image: plugins/docker:17.12 - pull: true - secrets: [ docker_username, docker_password ] - group: docker + dockerfile: docker/Dockerfile.linux.arm64 + password: + from_secret: docker_password repo: plugins/volume-cache + username: + from_secret: docker_username + when: + event: + - push + - tag + +trigger: + branch: + - master + +depends_on: +- testing + +--- +kind: pipeline +name: linux-arm + +platform: + os: linux + arch: arm + +steps: +- name: build-push + pull: always + image: golang:1.11 + commands: + - "go build -v -ldflags \"-X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/linux/arm/drone-volume-cache" + environment: + CGO_ENABLED: 0 + GO111MODULE: on + when: + event: + - push + - pull_request + +- name: build-tag + pull: always + image: golang:1.11 + commands: + - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/linux/arm/drone-volume-cache" + environment: + CGO_ENABLED: 0 + GO111MODULE: on + when: + event: + - tag + +- name: executable + pull: always + image: golang:1.11 + commands: + - ./release/linux/arm/drone-volume-cache --help + +- name: dryrun + pull: always + image: plugins/docker:linux-arm + settings: + dockerfile: docker/Dockerfile.linux.arm + dry_run: true + password: + from_secret: docker_password + repo: plugins/volume-cache + tags: linux-arm + username: + from_secret: docker_username + when: + event: + - pull_request + +- name: publish + pull: always + image: plugins/docker:linux-arm + settings: auto_tag: true auto_tag_suffix: linux-arm - dockerfile: Dockerfile.arm - when: - event: [ push, tag ] - - manifests: - image: plugins/manifest:1 - pull: true - secrets: [ docker_username, docker_password ] - spec: manifest.tmpl - auto_tag: true + dockerfile: docker/Dockerfile.linux.arm + password: + from_secret: docker_password + repo: plugins/volume-cache + username: + from_secret: docker_username + when: + event: + - push + - tag + +trigger: + branch: + - master + +depends_on: +- testing + +--- +kind: pipeline +name: notifications + +platform: + os: linux + arch: amd64 + +steps: +- name: manifest + pull: always + image: plugins/manifest:1 + settings: ignore_missing: true - when: - event: [ push, tag ] - - microbadger: - image: plugins/webhook:1 - pull: true - secrets: [ webhook_url ] - when: - status: [ success ] + password: + from_secret: docker_password + spec: docker/manifest.tmpl + username: + from_secret: docker_username + +- name: microbadger + pull: always + image: plugins/webhook:1 + settings: + url: + from_secret: microbadger_url + +trigger: + branch: + - master + event: + - push + - tag + +depends_on: +- linux-amd64 +- linux-arm64 +- linux-arm + +... diff --git a/.github/issue_template.md b/.github/issue_template.md index e69de29..3f95605 100644 --- a/.github/issue_template.md +++ b/.github/issue_template.md @@ -0,0 +1,9 @@ + diff --git a/.github/settings.yml b/.github/settings.yml new file mode 100644 index 0000000..8ed9027 --- /dev/null +++ b/.github/settings.yml @@ -0,0 +1,73 @@ +repository: + name: drone-volume-cache + description: Drone plugin to cache directories within the build workspace + homepage: http://plugins.drone.io/drone-plugins/drone-volume-cache + topics: drone, drone-plugin + + private: false + has_issues: true + has_wiki: false + has_downloads: false + + default_branch: master + + allow_squash_merge: true + allow_merge_commit: true + allow_rebase_merge: true + +labels: + - name: bug + color: d73a4a + description: Something isn't working + - name: duplicate + color: cfd3d7 + description: This issue or pull request already exists + - name: enhancement + color: a2eeef + description: New feature or request + - name: good first issue + color: 7057ff + description: Good for newcomers + - name: help wanted + color: 008672 + description: Extra attention is needed + - name: invalid + color: e4e669 + description: This doesn't seem right + - name: question + color: d876e3 + description: Further information is requested + - name: renovate + color: e99695 + description: Automated action from Renovate + - name: wontfix + color: ffffff + description: This will not be worked on + +teams: + - name: Admins + permission: admin + - name: Captain + permission: admin + - name: Maintainers + permission: push + +branches: + - name: master + protection: + required_pull_request_reviews: + required_approving_review_count: 1 + dismiss_stale_reviews: false + require_code_owner_reviews: false + dismissal_restrictions: + teams: + - Admins + - Captain + required_status_checks: + strict: true + contexts: + - continuous-integration/drone/pr + enforce_admins: false + restrictions: + users: [] + teams: [] diff --git a/Dockerfile.i386 b/Dockerfile.i386 deleted file mode 100644 index 74d7c0f..0000000 --- a/Dockerfile.i386 +++ /dev/null @@ -1,9 +0,0 @@ -FROM plugins/base:multiarch - -LABEL maintainer="Drone.IO Community " \ - org.label-schema.name="Drone Volume Cache" \ - org.label-schema.vendor="Drone.IO Community" \ - org.label-schema.schema-version="1.0" - -ADD release/linux/i386/drone-volume-cache /bin/ -ENTRYPOINT ["/bin/drone-volume-cache"] diff --git a/README.md b/README.md index 865abfb..9701f90 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,12 @@ # drone-volume-cache -[![Build Status](http://beta.drone.io/api/badges/drone-plugins/drone-volume-cache/status.svg)](http://beta.drone.io/drone-plugins/drone-volume-cache) +[![Build Status](http://cloud.drone.io/api/badges/drone-plugins/drone-volume-cache/status.svg)](http://cloud.drone.io/drone-plugins/drone-volume-cache) +[![Gitter chat](https://badges.gitter.im/drone/drone.png)](https://gitter.im/drone/drone) [![Join the discussion at https://discourse.drone.io](https://img.shields.io/badge/discourse-forum-orange.svg)](https://discourse.drone.io) [![Drone questions at https://stackoverflow.com](https://img.shields.io/badge/drone-stackoverflow-orange.svg)](https://stackoverflow.com/questions/tagged/drone.io) +[![](https://images.microbadger.com/badges/image/plugins/volume-cache.svg)](https://microbadger.com/images/plugins/volume-cache "Get your own image badge on microbadger.com") [![Go Doc](https://godoc.org/github.com/drone-plugins/drone-volume-cache?status.svg)](http://godoc.org/github.com/drone-plugins/drone-volume-cache) [![Go Report](https://goreportcard.com/badge/github.com/drone-plugins/drone-volume-cache)](https://goreportcard.com/report/github.com/drone-plugins/drone-volume-cache) -[![](https://images.microbadger.com/badges/image/plugins/volume-cache.svg)](https://microbadger.com/images/plugins/volume-cache "Get your own image badge on microbadger.com") Drone plugin that allows you to cache directories within the build workspace, this plugin is backed by Docker volumes. For the usage information and a listing of the available options please take a look at [the docs](http://plugins.drone.io/drone-plugins/drone-volume-cache/). diff --git a/Dockerfile b/docker/Dockerfile.linux.amd64 similarity index 100% rename from Dockerfile rename to docker/Dockerfile.linux.amd64 diff --git a/Dockerfile.arm b/docker/Dockerfile.linux.arm similarity index 100% rename from Dockerfile.arm rename to docker/Dockerfile.linux.arm diff --git a/Dockerfile.arm64 b/docker/Dockerfile.linux.arm64 similarity index 100% rename from Dockerfile.arm64 rename to docker/Dockerfile.linux.arm64 diff --git a/Dockerfile.windows b/docker/Dockerfile.windows.amd64 similarity index 67% rename from Dockerfile.windows rename to docker/Dockerfile.windows.amd64 index 782271c..59e3bf0 100644 --- a/Dockerfile.windows +++ b/docker/Dockerfile.windows.amd64 @@ -1,12 +1,10 @@ # escape=` -FROM microsoft/nanoserver:10.0.14393.1593 +FROM plugins/base:windows-amd64 LABEL maintainer="Drone.IO Community " ` org.label-schema.name="Drone Volume Cache" ` org.label-schema.vendor="Drone.IO Community" ` org.label-schema.schema-version="1.0" -SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] - ADD release\drone-volume-cache.exe c:\drone-volume-cache.exe ENTRYPOINT [ "c:\\drone-volume-cache.exe" ] diff --git a/manifest.tmpl b/docker/manifest.tmpl similarity index 84% rename from manifest.tmpl rename to docker/manifest.tmpl index bcf3433..d7f84fa 100644 --- a/manifest.tmpl +++ b/docker/manifest.tmpl @@ -11,23 +11,21 @@ manifests: platform: architecture: amd64 os: linux - - - image: plugins/volume-cache:{{#if build.tag}}{{trimPrefix build.tag "v"}}-{{/if}}linux-i386 - platform: - architecture: 386 - os: linux - image: plugins/volume-cache:{{#if build.tag}}{{trimPrefix build.tag "v"}}-{{/if}}linux-arm64 platform: architecture: arm64 os: linux + variant: v8 - image: plugins/volume-cache:{{#if build.tag}}{{trimPrefix build.tag "v"}}-{{/if}}linux-arm platform: architecture: arm os: linux + variant: v7 - image: plugins/volume-cache:{{#if build.tag}}{{trimPrefix build.tag "v"}}-{{/if}}windows-amd64 platform: architecture: amd64 os: windows + variant: 1809