From 4652f703b9adf7a132f994884cc32d4b7c1684c5 Mon Sep 17 00:00:00 2001 From: Thomas Boerger Date: Thu, 14 Feb 2019 20:14:07 +0100 Subject: [PATCH 1/6] Drop renovate config, it is simply too noisy --- renovate.json | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 renovate.json diff --git a/renovate.json b/renovate.json deleted file mode 100644 index 9980624..0000000 --- a/renovate.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": [ - "config:base" - ], - "docker": { - "fileMatch": [ - "/docker/Dockerfile" - ] - }, - "labels": [ - "renovate" - ] -} From d0a571de4edeccc1b79ec71615259a980dfbcefa Mon Sep 17 00:00:00 2001 From: Thomas Boerger Date: Fri, 15 Feb 2019 10:29:44 +0100 Subject: [PATCH 2/6] Add a reliable version and integrate libsonnet definition --- .drone.jsonnet | 177 +------------ .drone.windows.jsonnet | 9 + .drone.windows.yml | 234 ++++++++++++++++-- .drone.yml | 88 ++++--- ....windows.amd64 => Dockerfile.windows.1803} | 6 +- docker/Dockerfile.windows.1809 | 10 + docker/manifest.tmpl | 10 +- main.go | 6 +- pipeline.libsonnet | 204 +++++++++++++++ 9 files changed, 519 insertions(+), 225 deletions(-) create mode 100644 .drone.windows.jsonnet rename docker/{Dockerfile.windows.amd64 => Dockerfile.windows.1803} (59%) create mode 100644 docker/Dockerfile.windows.1809 create mode 100644 pipeline.libsonnet diff --git a/.drone.jsonnet b/.drone.jsonnet index 934f9b5..1c7fdc9 100644 --- a/.drone.jsonnet +++ b/.drone.jsonnet @@ -1,169 +1,14 @@ -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-s3-sync", - ], - 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-s3-sync", - ], - when: { - event: [ "tag" ], - }, - }, - { - name: "executable", - image: "golang:1.11", - pull: "always", - commands: [ - "./release/" + os + "/" + arch + "/drone-s3-sync --help", - ], - }, - { - name: "dryrun", - image: "plugins/docker:" + os + "-" + arch, - pull: "always", - settings: { - dry_run: true, - tags: os + "-" + arch, - dockerfile: "docker/Dockerfile." + os + "." + arch, - repo: "plugins/s3-sync", - 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/s3-sync", - 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" ], - }, -}; +local pipeline = import 'pipeline.libsonnet'; +local name = 'drone-s3-sync'; [ - PipelineTesting, - PipelineBuild("linux", "amd64"), - PipelineBuild("linux", "arm64"), - PipelineBuild("linux", "arm"), - PipelineNotifications, + pipeline.test('linux', 'amd64'), + pipeline.build(name, 'linux', 'amd64'), + pipeline.build(name, 'linux', 'arm64'), + pipeline.build(name, 'linux', 'arm'), + pipeline.notifications(depends_on=[ + 'linux-amd64', + 'linux-arm64', + 'linux-arm', + ]), ] diff --git a/.drone.windows.jsonnet b/.drone.windows.jsonnet new file mode 100644 index 0000000..a1606b1 --- /dev/null +++ b/.drone.windows.jsonnet @@ -0,0 +1,9 @@ +local pipeline = import 'pipeline.libsonnet'; +local name = 'drone-s3-sync'; + +[ + pipeline.test('windows', 'amd64', '1803'), + pipeline.build(name, 'windows', 'amd64', '1803'), + pipeline.build(name, 'windows', 'amd64', '1809'), + pipeline.notifications('windows', 'amd64', '1809', ['windows-1803', 'windows-1809']), +] diff --git a/.drone.windows.yml b/.drone.windows.yml index c3a06dc..481a572 100644 --- a/.drone.windows.yml +++ b/.drone.windows.yml @@ -1,30 +1,73 @@ --- kind: pipeline -name: windows-amd64 +name: testing platform: os: windows arch: amd64 + version: 1803 + +steps: +- name: vet + pull: always + image: golang:1.11-windowsservercore-1803 + commands: + - go vet ./... + environment: + GO111MODULE: on + volumes: + - name: gopath + path: C:\\gopath + +- name: test + pull: always + image: golang:1.11-windowsservercore-1803 + commands: + - go test -cover ./... + environment: + GO111MODULE: on + volumes: + - name: gopath + path: C:\\gopath + +volumes: +- name: gopath + temp: {} + +trigger: + ref: + - refs/heads/master + - "refs/tags/**" + - "refs/pull/**" + +--- +kind: pipeline +name: windows-1803 + +platform: + os: windows + arch: amd64 + version: 1803 steps: - name: build-push pull: always - image: golang:1.11 + image: golang:1.11-windowsservercore-1803 commands: - - "go build -v -ldflags \"-X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/windows/amd64/drone-s3-sync" + - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/windows/amd64/drone-s3-sync.exe" environment: CGO_ENABLED: 0 GO111MODULE: on when: event: - - push - - pull_request + exclude: + - tag - name: build-tag pull: always - image: golang:1.11 + image: golang:1.11-windowsservercore-1803 commands: - - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v} -X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/windows/amd64/drone-s3-sync" + - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/windows/amd64/drone-s3-sync.exe" environment: CGO_ENABLED: 0 GO111MODULE: on @@ -34,43 +77,196 @@ steps: - name: executable pull: always - image: golang:1.11 + image: golang:1.11-windowsservercore-1803 commands: - - ./release/windows/amd64/drone-s3-sync --help + - ./release/windows/amd64/drone-s3-sync.exe --help - name: dryrun pull: always - image: plugins/docker:windows-amd64 + image: plugins/docker:windows-1803 settings: - dockerfile: docker/Dockerfile.windows.amd64 + daemon_off: true + dockerfile: docker/Dockerfile.windows.1803 dry_run: true password: from_secret: docker_password repo: plugins/s3-sync - tags: windows-amd64 + tags: windows-1803 username: from_secret: docker_username + volumes: + - name: docker_pipe + path: \\\\.\\pipe\\docker_engine when: event: - pull_request - name: publish pull: always - image: plugins/docker:windows-amd64 + image: plugins/docker:windows-1803 settings: auto_tag: true - auto_tag_suffix: windows-amd64 - dockerfile: docker/Dockerfile.windows.amd64 + auto_tag_suffix: windows-1803 + daemon_off: true + dockerfile: docker/Dockerfile.windows.1803 password: from_secret: docker_password repo: plugins/s3-sync username: from_secret: docker_username + volumes: + - name: docker_pipe + path: \\\\.\\pipe\\docker_engine when: event: - - push - - tag + exclude: + - pull_request + +volumes: +- name: docker_pipe + host: + path: \\\\.\\pipe\\docker_engine trigger: - branch: - - master + ref: + - refs/heads/master + - "refs/tags/**" + - "refs/pull/**" + +depends_on: +- testing + +--- +kind: pipeline +name: windows-1809 + +platform: + os: windows + arch: amd64 + version: 1809 + +steps: +- name: build-push + pull: always + image: golang:1.11-windowsservercore-1809 + commands: + - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/windows/amd64/drone-s3-sync.exe" + environment: + CGO_ENABLED: 0 + GO111MODULE: on + when: + event: + exclude: + - tag + +- name: build-tag + pull: always + image: golang:1.11-windowsservercore-1809 + commands: + - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/windows/amd64/drone-s3-sync.exe" + environment: + CGO_ENABLED: 0 + GO111MODULE: on + when: + event: + - tag + +- name: executable + pull: always + image: golang:1.11-windowsservercore-1809 + commands: + - ./release/windows/amd64/drone-s3-sync.exe --help + +- name: dryrun + pull: always + image: plugins/docker:windows-1809 + settings: + daemon_off: true + dockerfile: docker/Dockerfile.windows.1809 + dry_run: true + password: + from_secret: docker_password + repo: plugins/s3-sync + tags: windows-1809 + username: + from_secret: docker_username + volumes: + - name: docker_pipe + path: \\\\.\\pipe\\docker_engine + when: + event: + - pull_request + +- name: publish + pull: always + image: plugins/docker:windows-1809 + settings: + auto_tag: true + auto_tag_suffix: windows-1809 + daemon_off: true + dockerfile: docker/Dockerfile.windows.1809 + password: + from_secret: docker_password + repo: plugins/s3-sync + username: + from_secret: docker_username + volumes: + - name: docker_pipe + path: \\\\.\\pipe\\docker_engine + when: + event: + exclude: + - pull_request + +volumes: +- name: docker_pipe + host: + path: \\\\.\\pipe\\docker_engine + +trigger: + ref: + - refs/heads/master + - "refs/tags/**" + - "refs/pull/**" + +depends_on: +- testing + +--- +kind: pipeline +name: notifications + +platform: + os: windows + arch: amd64 + version: 1809 + +steps: +- name: manifest + pull: always + image: plugins/manifest + settings: + ignore_missing: true + password: + from_secret: docker_password + spec: docker/manifest.tmpl + username: + from_secret: docker_username + +- name: microbadger + pull: always + image: plugins/webhook + settings: + url: + from_secret: microbadger_url + +trigger: + ref: + - refs/heads/master + - "refs/tags/**" + +depends_on: +- windows-1803 +- windows-1809 + +... diff --git a/.drone.yml b/.drone.yml index a216aa1..632432f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -14,6 +14,9 @@ steps: - go vet ./... environment: GO111MODULE: on + volumes: + - name: gopath + path: /go - name: test pull: always @@ -22,10 +25,19 @@ steps: - go test -cover ./... environment: GO111MODULE: on + volumes: + - name: gopath + path: /go + +volumes: +- name: gopath + temp: {} trigger: - branch: - - master + ref: + - refs/heads/master + - "refs/tags/**" + - "refs/pull/**" --- kind: pipeline @@ -40,20 +52,20 @@ steps: pull: always image: golang:1.11 commands: - - "go build -v -ldflags \"-X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/linux/amd64/drone-s3-sync" + - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/linux/amd64/drone-s3-sync" environment: CGO_ENABLED: 0 GO111MODULE: on when: event: - - push - - pull_request + exclude: + - tag - 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-s3-sync" + - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/linux/amd64/drone-s3-sync" environment: CGO_ENABLED: 0 GO111MODULE: on @@ -71,6 +83,7 @@ steps: pull: always image: plugins/docker:linux-amd64 settings: + daemon_off: false dockerfile: docker/Dockerfile.linux.amd64 dry_run: true password: @@ -89,6 +102,7 @@ steps: settings: auto_tag: true auto_tag_suffix: linux-amd64 + daemon_off: false dockerfile: docker/Dockerfile.linux.amd64 password: from_secret: docker_password @@ -97,12 +111,14 @@ steps: from_secret: docker_username when: event: - - push - - tag + exclude: + - pull_request trigger: - branch: - - master + ref: + - refs/heads/master + - "refs/tags/**" + - "refs/pull/**" depends_on: - testing @@ -120,20 +136,20 @@ steps: pull: always image: golang:1.11 commands: - - "go build -v -ldflags \"-X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/linux/arm64/drone-s3-sync" + - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/linux/arm64/drone-s3-sync" environment: CGO_ENABLED: 0 GO111MODULE: on when: event: - - push - - pull_request + exclude: + - tag - 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-s3-sync" + - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/linux/arm64/drone-s3-sync" environment: CGO_ENABLED: 0 GO111MODULE: on @@ -151,6 +167,7 @@ steps: pull: always image: plugins/docker:linux-arm64 settings: + daemon_off: false dockerfile: docker/Dockerfile.linux.arm64 dry_run: true password: @@ -169,6 +186,7 @@ steps: settings: auto_tag: true auto_tag_suffix: linux-arm64 + daemon_off: false dockerfile: docker/Dockerfile.linux.arm64 password: from_secret: docker_password @@ -177,12 +195,14 @@ steps: from_secret: docker_username when: event: - - push - - tag + exclude: + - pull_request trigger: - branch: - - master + ref: + - refs/heads/master + - "refs/tags/**" + - "refs/pull/**" depends_on: - testing @@ -200,20 +220,20 @@ steps: pull: always image: golang:1.11 commands: - - "go build -v -ldflags \"-X main.build=${DRONE_BUILD_NUMBER}\" -a -o release/linux/arm/drone-s3-sync" + - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/linux/arm/drone-s3-sync" environment: CGO_ENABLED: 0 GO111MODULE: on when: event: - - push - - pull_request + exclude: + - tag - 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-s3-sync" + - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/linux/arm/drone-s3-sync" environment: CGO_ENABLED: 0 GO111MODULE: on @@ -231,6 +251,7 @@ steps: pull: always image: plugins/docker:linux-arm settings: + daemon_off: false dockerfile: docker/Dockerfile.linux.arm dry_run: true password: @@ -249,6 +270,7 @@ steps: settings: auto_tag: true auto_tag_suffix: linux-arm + daemon_off: false dockerfile: docker/Dockerfile.linux.arm password: from_secret: docker_password @@ -257,12 +279,14 @@ steps: from_secret: docker_username when: event: - - push - - tag + exclude: + - pull_request trigger: - branch: - - master + ref: + - refs/heads/master + - "refs/tags/**" + - "refs/pull/**" depends_on: - testing @@ -278,7 +302,7 @@ platform: steps: - name: manifest pull: always - image: plugins/manifest:1 + image: plugins/manifest settings: ignore_missing: true password: @@ -289,17 +313,15 @@ steps: - name: microbadger pull: always - image: plugins/webhook:1 + image: plugins/webhook settings: url: from_secret: microbadger_url trigger: - branch: - - master - event: - - push - - tag + ref: + - refs/heads/master + - "refs/tags/**" depends_on: - linux-amd64 diff --git a/docker/Dockerfile.windows.amd64 b/docker/Dockerfile.windows.1803 similarity index 59% rename from docker/Dockerfile.windows.amd64 rename to docker/Dockerfile.windows.1803 index 4140b58..7d6fdf9 100644 --- a/docker/Dockerfile.windows.amd64 +++ b/docker/Dockerfile.windows.1803 @@ -1,10 +1,10 @@ # escape=` -FROM plugins/base:windows-amd64 +FROM plugins/base:windows-1803 LABEL maintainer="Drone.IO Community " ` org.label-schema.name="Drone S3 Sync" ` org.label-schema.vendor="Drone.IO Community" ` org.label-schema.schema-version="1.0" -ADD release\drone-s3-sync.exe c:\drone-s3-sync.exe -ENTRYPOINT [ "c:\\drone-s3-sync.exe" ] +ADD release/windows/amd64/drone-s3-sync.exe C:/bin/drone-s3-sync.exe +ENTRYPOINT [ "C:\\bin\\drone-s3-sync.exe" ] diff --git a/docker/Dockerfile.windows.1809 b/docker/Dockerfile.windows.1809 new file mode 100644 index 0000000..3bf93bd --- /dev/null +++ b/docker/Dockerfile.windows.1809 @@ -0,0 +1,10 @@ +# escape=` +FROM plugins/base:windows-1809 + +LABEL maintainer="Drone.IO Community " ` + org.label-schema.name="Drone S3 Sync" ` + org.label-schema.vendor="Drone.IO Community" ` + org.label-schema.schema-version="1.0" + +ADD release/windows/amd64/drone-s3-sync.exe C:/bin/drone-s3-sync.exe +ENTRYPOINT [ "C:\\bin\\drone-s3-sync.exe" ] diff --git a/docker/manifest.tmpl b/docker/manifest.tmpl index 120feab..9ed1ae7 100644 --- a/docker/manifest.tmpl +++ b/docker/manifest.tmpl @@ -24,8 +24,14 @@ manifests: os: linux variant: v7 - - image: plugins/s3-sync:{{#if build.tag}}{{trimPrefix build.tag "v"}}-{{/if}}windows-amd64 + image: plugins/s3-sync:{{#if build.tag}}{{trimPrefix build.tag "v"}}-{{/if}}windows-1803 platform: architecture: amd64 os: windows - variant: 1809 + version: 1803 + - + image: plugins/s3-sync:{{#if build.tag}}{{trimPrefix build.tag "v"}}-{{/if}}windows-1809 + platform: + architecture: amd64 + os: windows + version: 1809 diff --git a/main.go b/main.go index c37ce84..c602c50 100644 --- a/main.go +++ b/main.go @@ -9,14 +9,16 @@ import ( "github.com/urfave/cli" ) -var build = "0" // build number set at compile-time +var ( + version = "unknown" +) func main() { app := cli.NewApp() app.Name = "s3 sync plugin" app.Usage = "s3 sync plugin" app.Action = run - app.Version = fmt.Sprintf("1.1.0+%s", build) + app.Version = version app.Flags = []cli.Flag{ cli.StringFlag{ Name: "endpoint", diff --git a/pipeline.libsonnet b/pipeline.libsonnet new file mode 100644 index 0000000..aab20bd --- /dev/null +++ b/pipeline.libsonnet @@ -0,0 +1,204 @@ +local windows_pipe = '\\\\\\\\.\\\\pipe\\\\docker_engine'; +local windows_pipe_volume = 'docker_pipe'; +local test_pipeline_name = 'testing'; + +local windows(os) = os == 'windows'; + +local golang_image(os, version) = + 'golang:' + '1.11' + if windows(os) then '-windowsservercore-' + version else ''; + +{ + test(os='linux', arch='amd64', version=''):: + local is_windows = windows(os); + local golang = golang_image(os, version); + local volumes = if is_windows then [{name: 'gopath', path: 'C:\\\\gopath'}] else [{name: 'gopath', path: '/go',}]; + { + kind: 'pipeline', + name: test_pipeline_name, + platform: { + os: os, + arch: arch, + version: if std.length(version) > 0 then version, + }, + steps: [ + { + name: 'vet', + image: golang, + pull: 'always', + environment: { + GO111MODULE: 'on', + }, + commands: [ + 'go vet ./...', + ], + volumes: volumes, + }, + { + name: 'test', + image: golang, + pull: 'always', + environment: { + GO111MODULE: 'on', + }, + commands: [ + 'go test -cover ./...', + ], + volumes: volumes, + }, + ], + trigger: { + ref: [ + 'refs/heads/master', + 'refs/tags/**', + 'refs/pull/**', + ], + }, + volumes: [{name: 'gopath', temp: {}}] + }, + + build(name, os='linux', arch='amd64', version=''):: + local is_windows = windows(os); + local tag = if is_windows then os + '-' + version else os + '-' + arch; + local file_suffix = std.strReplace(tag, '-', '.'); + local volumes = if is_windows then [{ name: windows_pipe_volume, path: windows_pipe }] else []; + local golang = golang_image(os, version); + local plugin_repo = 'plugins/' + std.splitLimit(name, '-', 1)[1]; + local extension = if is_windows then '.exe' else ''; + { + kind: 'pipeline', + name: tag, + platform: { + os: os, + arch: arch, + version: if std.length(version) > 0 then version, + }, + steps: [ + { + name: 'build-push', + image: golang, + pull: 'always', + environment: { + CGO_ENABLED: '0', + GO111MODULE: 'on', + }, + commands: [ + 'go build -v -ldflags "-X main.version=${DRONE_COMMIT_SHA:0:8}" -a -tags netgo -o release/' + os + '/' + arch + '/' + name + extension, + ], + when: { + event: { + exclude: ['tag'], + }, + }, + }, + { + name: 'build-tag', + image: golang, + pull: 'always', + environment: { + CGO_ENABLED: '0', + GO111MODULE: 'on', + }, + commands: [ + 'go build -v -ldflags "-X main.version=${DRONE_TAG##v}" -a -tags netgo -o release/' + os + '/' + arch + '/' + name + extension, + ], + when: { + event: ['tag'], + }, + }, + { + name: 'executable', + image: golang, + pull: 'always', + commands: [ + './release/' + os + '/' + arch + '/' + name + extension + ' --help', + ], + }, + { + name: 'dryrun', + image: 'plugins/docker:' + tag, + pull: 'always', + settings: { + dry_run: true, + tags: tag, + dockerfile: 'docker/Dockerfile.' + file_suffix, + daemon_off: if is_windows then 'true' else 'false', + repo: plugin_repo, + username: { from_secret: 'docker_username' }, + password: { from_secret: 'docker_password' }, + }, + volumes: if std.length(volumes) > 0 then volumes, + when: { + event: ['pull_request'], + }, + }, + { + name: 'publish', + image: 'plugins/docker:' + tag, + pull: 'always', + settings: { + auto_tag: true, + auto_tag_suffix: tag, + daemon_off: if is_windows then 'true' else 'false', + dockerfile: 'docker/Dockerfile.' + file_suffix, + repo: plugin_repo, + username: { from_secret: 'docker_username' }, + password: { from_secret: 'docker_password' }, + }, + volumes: if std.length(volumes) > 0 then volumes, + when: { + event: { + exclude: ['pull_request'], + }, + }, + }, + ], + trigger: { + ref: [ + 'refs/heads/master', + 'refs/tags/**', + 'refs/pull/**', + ], + }, + depends_on: [test_pipeline_name], + volumes: if is_windows then [{ name: windows_pipe_volume, host: { path: windows_pipe } }], + }, + + notifications(os='linux', arch='amd64', version='', depends_on=[]):: + { + kind: 'pipeline', + name: 'notifications', + platform: { + os: os, + arch: arch, + version: if std.length(version) > 0 then version, + }, + steps: [ + { + name: 'manifest', + image: 'plugins/manifest', + 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', + pull: 'always', + settings: { + url: { from_secret: 'microbadger_url' }, + }, + }, + ], + trigger: { + ref: [ + 'refs/heads/master', + 'refs/tags/**', + ], + }, + depends_on: depends_on, + }, +} From 0b75267c4f9115bbec64ea5c67d8c7e0d98b557b Mon Sep 17 00:00:00 2001 From: Thomas Boerger Date: Fri, 15 Feb 2019 11:58:30 +0100 Subject: [PATCH 3/6] Unified documentation and readme --- README.md | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 7fd0641..3d70cc6 100644 --- a/README.md +++ b/README.md @@ -12,26 +12,31 @@ Drone plugin to synchronize a directory with an Amazon S3 Bucket. For the usage ## Build -Build the binary with the following commands: +Build the binary with the following command: -``` -go build +```console +export GOOS=linux +export GOARCH=amd64 +export CGO_ENABLED=0 +export GO111MODULE=on + +go build -v -a -tags netgo -o release/linux/amd64/drone-s3-sync ``` ## Docker -Build the Docker image with the following commands: +Build the Docker image with the following command: -``` -GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -a -tags netgo -o release/linux/amd64/drone-s3-sync -docker build --rm -t plugins/s3-sync . +```console +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/s3-sync . ``` ## Usage -Execute from the working directory: - -```sh +```console docker run --rm \ -e PLUGIN_SOURCE= \ -e PLUGIN_TARGET= \ From de2823e43900914317b26bca6fea8234705733f2 Mon Sep 17 00:00:00 2001 From: Thomas Boerger Date: Mon, 18 Feb 2019 23:47:42 +0100 Subject: [PATCH 4/6] Drop import of unused fmt package --- main.go | 1 - 1 file changed, 1 deletion(-) diff --git a/main.go b/main.go index c602c50..69995df 100644 --- a/main.go +++ b/main.go @@ -1,7 +1,6 @@ package main import ( - "fmt" "os" "github.com/joho/godotenv" From e9be13eb4a2785f6676e98b651adbfab8c2ce0e0 Mon Sep 17 00:00:00 2001 From: Thomas Boerger Date: Mon, 25 Feb 2019 22:21:07 +0100 Subject: [PATCH 5/6] Fix manifest template helper --- docker/manifest.tmpl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docker/manifest.tmpl b/docker/manifest.tmpl index 9ed1ae7..c204b29 100644 --- a/docker/manifest.tmpl +++ b/docker/manifest.tmpl @@ -1,4 +1,4 @@ -image: plugins/s3-sync:{{#if build.tag}}{{trimPrefix build.tag "v"}}{{else}}latest{{/if}} +image: plugins/s3-sync:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}} {{#if build.tags}} tags: {{#each build.tags}} @@ -7,30 +7,30 @@ tags: {{/if}} manifests: - - image: plugins/s3-sync:{{#if build.tag}}{{trimPrefix build.tag "v"}}-{{/if}}linux-amd64 + image: plugins/s3-sync:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64 platform: architecture: amd64 os: linux - - image: plugins/s3-sync:{{#if build.tag}}{{trimPrefix build.tag "v"}}-{{/if}}linux-arm64 + image: plugins/s3-sync:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64 platform: architecture: arm64 os: linux variant: v8 - - image: plugins/s3-sync:{{#if build.tag}}{{trimPrefix build.tag "v"}}-{{/if}}linux-arm + image: plugins/s3-sync:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm platform: architecture: arm os: linux variant: v7 - - image: plugins/s3-sync:{{#if build.tag}}{{trimPrefix build.tag "v"}}-{{/if}}windows-1803 + image: plugins/s3-sync:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1803 platform: architecture: amd64 os: windows version: 1803 - - image: plugins/s3-sync:{{#if build.tag}}{{trimPrefix build.tag "v"}}-{{/if}}windows-1809 + image: plugins/s3-sync:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1809 platform: architecture: amd64 os: windows From dae2ad062c247b8559817391379be0a8a3efc1fa Mon Sep 17 00:00:00 2001 From: Thomas Boerger Date: Sun, 31 Mar 2019 22:34:07 +0200 Subject: [PATCH 6/6] Fix microbadger settings and enable auto_tag for manifest --- .drone.windows.yml | 3 ++- .drone.yml | 3 ++- pipeline.libsonnet | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.drone.windows.yml b/.drone.windows.yml index 481a572..8e5ead6 100644 --- a/.drone.windows.yml +++ b/.drone.windows.yml @@ -246,6 +246,7 @@ steps: pull: always image: plugins/manifest settings: + auto_tag: true ignore_missing: true password: from_secret: docker_password @@ -257,7 +258,7 @@ steps: pull: always image: plugins/webhook settings: - url: + urls: from_secret: microbadger_url trigger: diff --git a/.drone.yml b/.drone.yml index 632432f..603fc7a 100644 --- a/.drone.yml +++ b/.drone.yml @@ -304,6 +304,7 @@ steps: pull: always image: plugins/manifest settings: + auto_tag: true ignore_missing: true password: from_secret: docker_password @@ -315,7 +316,7 @@ steps: pull: always image: plugins/webhook settings: - url: + urls: from_secret: microbadger_url trigger: diff --git a/pipeline.libsonnet b/pipeline.libsonnet index aab20bd..54a07b2 100644 --- a/pipeline.libsonnet +++ b/pipeline.libsonnet @@ -182,6 +182,7 @@ local golang_image(os, version) = password: { from_secret: 'docker_password' }, spec: 'docker/manifest.tmpl', ignore_missing: true, + auto_tag: true, }, }, { @@ -189,7 +190,7 @@ local golang_image(os, version) = image: 'plugins/webhook', pull: 'always', settings: { - url: { from_secret: 'microbadger_url' }, + urls: { from_secret: 'microbadger_url' }, }, }, ],