From 89b0b6823aeb5ecbfffc948077dcf5641b709af7 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Sun, 10 Jan 2021 23:47:55 +0100 Subject: [PATCH] fork: initial release --- .drone.jsonnet | 362 +++++- .drone.yml | 1603 ++++--------------------- .github/issue_template.md | 9 - .github/pull_request_template.md | 1 - .github/settings.yml | 32 +- .gitignore | 5 +- LICENSE | 6 +- README.md | 76 +- cmd/drone-acr/main.go | 60 - cmd/drone-docker/main.go | 317 ----- cmd/drone-ecr/main.go | 203 ---- cmd/drone-ecr/main_test.go | 20 - cmd/drone-gcr/main.go | 74 -- cmd/drone-heroku/main.go | 53 - daemon_win.go | 11 - docker.go | 68 +- docker/Dockerfile.amd64 | 26 + docker/Dockerfile.arm | 26 + docker/Dockerfile.arm64 | 26 + docker/acr/Dockerfile.linux.amd64 | 4 - docker/acr/Dockerfile.linux.arm | 4 - docker/acr/Dockerfile.linux.arm64 | 4 - docker/acr/Dockerfile.windows.1803 | 10 - docker/acr/Dockerfile.windows.1809 | 10 - docker/acr/manifest.tmpl | 37 - docker/docker/Dockerfile.linux.amd64 | 6 - docker/docker/Dockerfile.linux.arm | 6 - docker/docker/Dockerfile.linux.arm64 | 6 - docker/docker/Dockerfile.windows.1803 | 26 - docker/docker/Dockerfile.windows.1809 | 27 - docker/docker/Dockerfile.windows.1903 | 28 - docker/docker/Dockerfile.windows.1909 | 28 - docker/docker/manifest.tmpl | 49 - docker/ecr/Dockerfile.linux.amd64 | 4 - docker/ecr/Dockerfile.linux.arm | 4 - docker/ecr/Dockerfile.linux.arm64 | 4 - docker/ecr/Dockerfile.windows.1803 | 10 - docker/ecr/Dockerfile.windows.1809 | 10 - docker/ecr/manifest.tmpl | 37 - docker/gcr/Dockerfile.linux.amd64 | 4 - docker/gcr/Dockerfile.linux.arm | 4 - docker/gcr/Dockerfile.linux.arm64 | 4 - docker/gcr/Dockerfile.windows.1803 | 10 - docker/gcr/Dockerfile.windows.1809 | 10 - docker/gcr/manifest.tmpl | 37 - docker/heroku/Dockerfile.linux.amd64 | 4 - docker/heroku/Dockerfile.linux.arm | 4 - docker/heroku/Dockerfile.linux.arm64 | 4 - docker/heroku/manifest.tmpl | 25 - go.mod | 13 +- go.sum | 19 + pipeline.libsonnet | 206 ---- renovate.json | 4 + 53 files changed, 770 insertions(+), 2870 deletions(-) delete mode 100644 .github/issue_template.md delete mode 100644 .github/pull_request_template.md delete mode 100644 cmd/drone-acr/main.go delete mode 100644 cmd/drone-docker/main.go delete mode 100644 cmd/drone-ecr/main.go delete mode 100644 cmd/drone-ecr/main_test.go delete mode 100644 cmd/drone-gcr/main.go delete mode 100644 cmd/drone-heroku/main.go delete mode 100644 daemon_win.go create mode 100644 docker/Dockerfile.amd64 create mode 100644 docker/Dockerfile.arm create mode 100644 docker/Dockerfile.arm64 delete mode 100644 docker/acr/Dockerfile.linux.amd64 delete mode 100644 docker/acr/Dockerfile.linux.arm delete mode 100644 docker/acr/Dockerfile.linux.arm64 delete mode 100644 docker/acr/Dockerfile.windows.1803 delete mode 100644 docker/acr/Dockerfile.windows.1809 delete mode 100644 docker/acr/manifest.tmpl delete mode 100644 docker/docker/Dockerfile.linux.amd64 delete mode 100644 docker/docker/Dockerfile.linux.arm delete mode 100644 docker/docker/Dockerfile.linux.arm64 delete mode 100644 docker/docker/Dockerfile.windows.1803 delete mode 100644 docker/docker/Dockerfile.windows.1809 delete mode 100644 docker/docker/Dockerfile.windows.1903 delete mode 100644 docker/docker/Dockerfile.windows.1909 delete mode 100644 docker/docker/manifest.tmpl delete mode 100644 docker/ecr/Dockerfile.linux.amd64 delete mode 100644 docker/ecr/Dockerfile.linux.arm delete mode 100644 docker/ecr/Dockerfile.linux.arm64 delete mode 100644 docker/ecr/Dockerfile.windows.1803 delete mode 100644 docker/ecr/Dockerfile.windows.1809 delete mode 100644 docker/ecr/manifest.tmpl delete mode 100644 docker/gcr/Dockerfile.linux.amd64 delete mode 100644 docker/gcr/Dockerfile.linux.arm delete mode 100644 docker/gcr/Dockerfile.linux.arm64 delete mode 100644 docker/gcr/Dockerfile.windows.1803 delete mode 100644 docker/gcr/Dockerfile.windows.1809 delete mode 100644 docker/gcr/manifest.tmpl delete mode 100644 docker/heroku/Dockerfile.linux.amd64 delete mode 100644 docker/heroku/Dockerfile.linux.arm delete mode 100644 docker/heroku/Dockerfile.linux.arm64 delete mode 100644 docker/heroku/manifest.tmpl delete mode 100644 pipeline.libsonnet create mode 100644 renovate.json diff --git a/.drone.jsonnet b/.drone.jsonnet index 99832f4..1a0f351 100644 --- a/.drone.jsonnet +++ b/.drone.jsonnet @@ -1,50 +1,324 @@ -local pipeline = import 'pipeline.libsonnet'; +local PipelineTest = { + kind: 'pipeline', + image_pull_secrets: ['docker_config'], + name: 'test', + platform: { + os: 'linux', + arch: 'amd64', + }, + steps: [ + { + name: 'staticcheck', + image: 'golang:1.15', + commands: [ + 'go run honnef.co/go/tools/cmd/staticcheck ./...', + ], + volumes: [ + { + name: 'gopath', + path: '/go', + }, + ], + }, + { + name: 'lint', + image: 'golang:1.15', + commands: [ + 'go run golang.org/x/lint/golint -set_exit_status ./...', + ], + volumes: [ + { + name: 'gopath', + path: '/go', + }, + ], + }, + { + name: 'vet', + image: 'golang:1.15', + commands: [ + 'go vet ./...', + ], + volumes: [ + { + name: 'gopath', + path: '/go', + }, + ], + }, + { + name: 'test', + image: 'golang:1.15', + commands: [ + 'go test -cover ./...', + ], + volumes: [ + { + name: 'gopath', + path: '/go', + }, + ], + }, + ], + volumes: [ + { + name: 'gopath', + temp: {}, + }, + ], + trigger: { + ref: ['refs/heads/master', 'refs/tags/**', 'refs/pull/**'], + }, +}; -[ - pipeline.test('linux', 'amd64'), - - pipeline.build('docker', 'linux', 'amd64'), - pipeline.build('docker', 'linux', 'arm64'), - pipeline.build('docker', 'linux', 'arm'), - pipeline.notifications('docker', depends_on=[ - 'linux-amd64', - 'linux-arm64', - 'linux-arm', - ]), - pipeline.build('gcr', 'linux', 'amd64'), - pipeline.build('gcr', 'linux', 'arm64'), - pipeline.build('gcr', 'linux', 'arm'), - pipeline.notifications('gcr', depends_on=[ - 'linux-amd64', - 'linux-arm64', - 'linux-arm', - ]), +local PipelineBuildBinaries = { + kind: 'pipeline', + image_pull_secrets: ['docker_config'], + name: 'build-binaries', + platform: { + os: 'linux', + arch: 'amd64', + }, + steps: [ + { + name: 'build', + image: 'techknowlogick/xgo:go-1.15.x', + commands: [ + '[ -z "${DRONE_TAG}" ] && BUILD_VERSION=${DRONE_COMMIT_SHA:0:8} || BUILD_VERSION=${DRONE_TAG##v}', + 'mkdir -p release/', + "cd cmd/drone-docker-buildx && xgo -ldflags \"-s -w -X main.version=$BUILD_VERSION\" -tags netgo -targets 'linux/amd64,linux/arm-6,linux/arm64' -out drone-docker-buildx .", + 'mv /build/* /drone/src/release/', + ], + }, + { + name: 'executable', + image: 'alpine', + commands: [ + '$(find release/ -executable -type f | grep drone-docker-buildx-linux-amd64) --help', + ], + }, + { + name: 'compress', + image: 'alpine', + commands: [ + 'apk add upx', + 'find release/ -maxdepth 1 -executable -type f -exec upx {} \\;', + 'ls -lh release/', + ], + }, + { + name: 'checksum', + image: 'alpine', + commands: [ + 'cd release/ && sha256sum * > sha256sum.txt', + ], + }, + { + name: 'publish', + image: 'plugins/github-release', + settings: { + overwrite: true, + api_key: { + from_secret: 'github_token', + }, + files: ['release/*'], + title: '${DRONE_TAG}', + note: 'CHANGELOG.md', + }, + when: { + ref: [ + 'refs/tags/**', + ], + }, + }, + ], + depends_on: [ + 'test', + ], + trigger: { + ref: ['refs/heads/master', 'refs/tags/**', 'refs/pull/**'], + }, +}; - pipeline.build('acr', 'linux', 'amd64'), - pipeline.build('acr', 'linux', 'arm64'), - pipeline.build('acr', 'linux', 'arm'), - pipeline.notifications('acr', depends_on=[ - 'linux-amd64', - 'linux-arm64', - 'linux-arm', - ]), +local PipelineBuildContainer(arch='amd64') = { + kind: 'pipeline', + image_pull_secrets: ['docker_config'], + name: 'build-container-' + arch, + platform: { + os: 'linux', + arch: arch, + }, + steps: [ + { + name: 'build', + image: 'golang:1.15', + commands: [ + '[ -z "${DRONE_TAG}" ] && BUILD_VERSION=${DRONE_COMMIT_SHA:0:8} || BUILD_VERSION=${DRONE_TAG##v}', + 'go build -v -ldflags "-X main.version=$BUILD_VERSION" -a -tags netgo -o release/' + arch + '/drone-docker-buildx ./cmd/drone-docker-buildx', + ], + }, + { + name: 'dryrun', + image: 'plugins/docker:19', + settings: { + config: { from_secret: 'docker_config' }, + dry_run: true, + dockerfile: 'docker/Dockerfile.' + arch, + repo: 'thegeeklab/${DRONE_REPO_NAME}', + username: { from_secret: 'docker_username' }, + password: { from_secret: 'docker_password' }, + }, + depends_on: ['build'], + when: { + ref: ['refs/pull/**'], + }, + }, + { + name: 'publish-dockerhub', + image: 'plugins/docker:19', + settings: { + config: { from_secret: 'docker_config' }, + auto_tag: true, + auto_tag_suffix: arch, + dockerfile: 'docker/Dockerfile.' + arch, + repo: 'thegeeklab/${DRONE_REPO_NAME}', + username: { from_secret: 'docker_username' }, + password: { from_secret: 'docker_password' }, + }, + when: { + ref: ['refs/heads/master', 'refs/tags/**'], + }, + depends_on: ['dryrun'], + }, + { + name: 'publish-quay', + image: 'plugins/docker:19', + settings: { + config: { from_secret: 'docker_config' }, + auto_tag: true, + auto_tag_suffix: arch, + dockerfile: 'docker/Dockerfile.' + arch, + registry: 'quay.io', + repo: 'quay.io/thegeeklab/${DRONE_REPO_NAME}', + username: { from_secret: 'quay_username' }, + password: { from_secret: 'quay_password' }, + }, + when: { + ref: ['refs/heads/master', 'refs/tags/**'], + }, + depends_on: ['dryrun'], + }, + ], + depends_on: [ + 'test', + ], + trigger: { + ref: ['refs/heads/master', 'refs/tags/**', 'refs/pull/**'], + }, +}; - pipeline.build('ecr', 'linux', 'amd64'), - pipeline.build('ecr', 'linux', 'arm64'), - pipeline.build('ecr', 'linux', 'arm'), - pipeline.notifications('ecr', depends_on=[ - 'linux-amd64', - 'linux-arm64', - 'linux-arm', - ]), +local PipelineNotifications = { + kind: 'pipeline', + image_pull_secrets: ['docker_config'], + name: 'notifications', + platform: { + os: 'linux', + arch: 'amd64', + }, + steps: [ + { + image: 'plugins/manifest', + name: 'manifest-dockerhub', + settings: { + ignore_missing: true, + auto_tag: true, + username: { from_secret: 'docker_username' }, + password: { from_secret: 'docker_password' }, + spec: 'docker/manifest.tmpl', + }, + when: { + status: ['success'], + }, + }, + { + image: 'plugins/manifest', + name: 'manifest-quay', + settings: { + ignore_missing: true, + auto_tag: true, + username: { from_secret: 'quay_username' }, + password: { from_secret: 'quay_password' }, + spec: 'docker/manifest-quay.tmpl', + }, + when: { + status: ['success'], + }, + }, + { + name: 'pushrm-dockerhub', + image: 'chko/docker-pushrm:1', + environment: { + DOCKER_PASS: { + from_secret: 'docker_password', + }, + DOCKER_USER: { + from_secret: 'docker_username', + }, + PUSHRM_FILE: 'README.md', + PUSHRM_SHORT: 'Drone plugin to build multiarch Docker images with buildx', + PUSHRM_TARGET: 'thegeeklab/${DRONE_REPO_NAME}', + }, + when: { + status: ['success'], + }, + }, + { + name: 'pushrm-quay', + image: 'chko/docker-pushrm:1', + environment: { + APIKEY__QUAY_IO: { + from_secret: 'quay_token', + }, + PUSHRM_FILE: 'README.md', + PUSHRM_TARGET: 'quay.io/thegeeklab/${DRONE_REPO_NAME}', + }, + when: { + status: ['success'], + }, + }, + { + name: 'matrix', + image: 'plugins/matrix', + settings: { + homeserver: { from_secret: 'matrix_homeserver' }, + roomid: { from_secret: 'matrix_roomid' }, + template: 'Status: **{{ build.status }}**
Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.link }}) ({{ build.branch }}) by {{ build.author }}
Message: {{ build.message }}', + username: { from_secret: 'matrix_username' }, + password: { from_secret: 'matrix_password' }, + }, + when: { + status: ['success', 'failure'], + }, + }, + ], + depends_on: [ + 'build-binaries', + 'build-container-amd64', + 'build-container-arm', + 'build-container-arm64', + ], + trigger: { + ref: ['refs/heads/master', 'refs/tags/**'], + status: ['success', 'failure'], + }, +}; - pipeline.build('heroku', 'linux', 'amd64'), - pipeline.build('heroku', 'linux', 'arm64'), - pipeline.build('heroku', 'linux', 'arm'), - pipeline.notifications('heroku', depends_on=[ - 'linux-amd64', - 'linux-arm64', - 'linux-arm', - ]), +[ + PipelineTest, + PipelineBuildBinaries, + PipelineBuildContainer(arch='amd64'), + PipelineBuildContainer(arch='arm64'), + PipelineBuildContainer(arch='arm'), + PipelineNotifications, ] diff --git a/.drone.yml b/.drone.yml index f520bb8..dc91b3a 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,30 +1,40 @@ --- kind: pipeline -name: testing +name: test platform: os: linux arch: amd64 steps: +- name: staticcheck + image: golang:1.15 + commands: + - go run honnef.co/go/tools/cmd/staticcheck ./... + volumes: + - name: gopath + path: /go + +- name: lint + image: golang:1.15 + commands: + - go run golang.org/x/lint/golint -set_exit_status ./... + volumes: + - name: gopath + path: /go + - name: vet - pull: always - image: golang:1.11 + image: golang:1.15 commands: - go vet ./... - environment: - GO111MODULE: on volumes: - name: gopath path: /go - name: test - pull: always - image: golang:1.11 + image: golang:1.15 commands: - go test -cover ./... - environment: - GO111MODULE: on volumes: - name: gopath path: /go @@ -33,1510 +43,431 @@ volumes: - name: gopath temp: {} +image_pull_secrets: +- docker_config + trigger: ref: - refs/heads/master - - "refs/tags/**" - - "refs/pull/**" + - refs/tags/** + - refs/pull/** --- kind: pipeline -type: ssh -name: windows-1809-amd64-docker +name: build-binaries platform: - os: windows - -server: - host: windows.1809.amd64.plugins.drone.ci - password: - from_secret: windows_password - user: - from_secret: windows_username + os: linux + arch: amd64 steps: - name: build + image: techknowlogick/xgo:go-1.15.x commands: - # TODO use the new DRONE_SEMVER_SHORT environment variables to - # publish docker images for tag events. - - go build -o release/windows/amd64/drone-docker.exe ./cmd/drone-docker - - docker login -u $env:USERNAME -p $env:PASSWORD - - docker build -f docker/docker/Dockerfile.windows.1809 -t plugins/docker:windows-1809-amd64 . - - docker push plugins/docker:windows-1809-amd64 - environment: - CGO_ENABLED: "0" - USERNAME: - from_secret: docker_username - PASSWORD: - from_secret: docker_password - -trigger: - event: - - push - -depends_on: -- testing - ---- -kind: pipeline -type: ssh -name: windows-1903-amd64-docker - -platform: - os: windows + - "[ -z \"${DRONE_TAG}\" ] && BUILD_VERSION=${DRONE_COMMIT_SHA:0:8} || BUILD_VERSION=${DRONE_TAG##v}" + - mkdir -p release/ + - cd cmd/drone-docker-buildx && xgo -ldflags "-s -w -X main.version=$BUILD_VERSION" -tags netgo -targets 'linux/amd64,linux/arm-6,linux/arm64' -out drone-docker-buildx . + - mv /build/* /drone/src/release/ -server: - host: windows.1903.amd64.plugins.drone.ci - password: - from_secret: windows_password - user: - from_secret: windows_username - -steps: -- name: build +- name: executable + image: alpine commands: - # TODO use the new DRONE_SEMVER_SHORT environment variables to - # publish docker images for tag events. - - go build -o release/windows/amd64/drone-docker.exe ./cmd/drone-docker - - docker login -u $env:USERNAME -p $env:PASSWORD - - docker build -f docker/docker/Dockerfile.windows.1903 -t plugins/docker:windows-1903-amd64 . - - docker push plugins/docker:windows-1903-amd64 - environment: - CGO_ENABLED: "0" - USERNAME: - from_secret: docker_username - PASSWORD: - from_secret: docker_password - -trigger: - event: - - push - -depends_on: -- testing + - $(find release/ -executable -type f | grep drone-docker-buildx-linux-amd64) --help ---- -kind: pipeline -type: ssh -name: windows-1909-amd64-docker +- name: compress + image: alpine + commands: + - apk add upx + - find release/ -maxdepth 1 -executable -type f -exec upx {} \; + - ls -lh release/ -platform: - os: windows +- name: checksum + image: alpine + commands: + - cd release/ && sha256sum * > sha256sum.txt -server: - host: windows.1909.amd64.plugins.drone.ci - password: - from_secret: windows_password - user: - from_secret: windows_username +- name: publish + image: plugins/github-release + settings: + api_key: + from_secret: github_token + files: + - release/* + note: CHANGELOG.md + overwrite: true + title: ${DRONE_TAG} + when: + ref: + - refs/tags/** -steps: - - name: build - commands: - # TODO use the new DRONE_SEMVER_SHORT environment variables to - # publish docker images for tag events. - - go build -o release/windows/amd64/drone-docker.exe ./cmd/drone-docker - - docker login -u $env:USERNAME -p $env:PASSWORD - - docker build -f docker/docker/Dockerfile.windows.1909 -t plugins/docker:windows-1909-amd64 . - - docker push plugins/docker:windows-1909-amd64 - environment: - CGO_ENABLED: "0" - USERNAME: - from_secret: docker_username - PASSWORD: - from_secret: docker_password +image_pull_secrets: +- docker_config trigger: - event: - - push + ref: + - refs/heads/master + - refs/tags/** + - refs/pull/** depends_on: - - testing +- test --- kind: pipeline -name: linux-amd64-docker +name: build-container-amd64 platform: os: linux arch: amd64 steps: -- name: build-push - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/linux/amd64/drone-docker ./cmd/drone-docker" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - exclude: - - tag - -- name: build-tag - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/linux/amd64/drone-docker ./cmd/drone-docker" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - - tag - -- name: executable - pull: always - image: golang:1.11 +- name: build + image: golang:1.15 commands: - - ./release/linux/amd64/drone-docker --help + - "[ -z \"${DRONE_TAG}\" ] && BUILD_VERSION=${DRONE_COMMIT_SHA:0:8} || BUILD_VERSION=${DRONE_TAG##v}" + - go build -v -ldflags "-X main.version=$BUILD_VERSION" -a -tags netgo -o release/amd64/drone-docker-buildx ./cmd/drone-docker-buildx - name: dryrun - pull: always - image: plugins/docker:18 + image: plugins/docker:19 settings: - daemon_off: false - dockerfile: docker/docker/Dockerfile.linux.amd64 + config: + from_secret: docker_config + dockerfile: docker/Dockerfile.amd64 dry_run: true password: from_secret: docker_password - repo: plugins/docker - tags: linux-amd64 + repo: thegeeklab/${DRONE_REPO_NAME} username: from_secret: docker_username when: - event: - - pull_request + ref: + - refs/pull/** + depends_on: + - build -- name: publish - pull: always - image: plugins/docker:18 +- name: publish-dockerhub + image: plugins/docker:19 settings: auto_tag: true - auto_tag_suffix: linux-amd64 - daemon_off: false - dockerfile: docker/docker/Dockerfile.linux.amd64 - password: - from_secret: docker_password - repo: plugins/docker - username: - from_secret: docker_username - when: - event: - exclude: - - pull_request - -trigger: - ref: - - refs/heads/master - - "refs/tags/**" - - "refs/pull/**" - -depends_on: -- testing - ---- -kind: pipeline -name: linux-arm64-docker - -platform: - os: linux - arch: arm64 - -steps: -- name: build-push - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/linux/arm64/drone-docker ./cmd/drone-docker" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - exclude: - - tag - -- name: build-tag - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/linux/arm64/drone-docker ./cmd/drone-docker" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - - tag - -- name: executable - pull: always - image: golang:1.11 - commands: - - ./release/linux/arm64/drone-docker --help - -- name: dryrun - pull: always - image: plugins/docker:18 - settings: - daemon_off: false - dockerfile: docker/docker/Dockerfile.linux.arm64 - dry_run: true + auto_tag_suffix: amd64 + config: + from_secret: docker_config + dockerfile: docker/Dockerfile.amd64 password: from_secret: docker_password - repo: plugins/docker - tags: linux-arm64 + repo: thegeeklab/${DRONE_REPO_NAME} username: from_secret: docker_username when: - event: - - pull_request + ref: + - refs/heads/master + - refs/tags/** + depends_on: + - dryrun -- name: publish - pull: always - image: plugins/docker:18 +- name: publish-quay + image: plugins/docker:19 settings: auto_tag: true - auto_tag_suffix: linux-arm64 - daemon_off: false - dockerfile: docker/docker/Dockerfile.linux.arm64 + auto_tag_suffix: amd64 + config: + from_secret: docker_config + dockerfile: docker/Dockerfile.amd64 password: - from_secret: docker_password - repo: plugins/docker + from_secret: quay_password + registry: quay.io + repo: quay.io/thegeeklab/${DRONE_REPO_NAME} username: - from_secret: docker_username + from_secret: quay_username when: - event: - exclude: - - pull_request + ref: + - refs/heads/master + - refs/tags/** + depends_on: + - dryrun + +image_pull_secrets: +- docker_config trigger: ref: - refs/heads/master - - "refs/tags/**" - - "refs/pull/**" + - refs/tags/** + - refs/pull/** depends_on: -- testing +- test --- kind: pipeline -name: linux-arm-docker +name: build-container-arm64 platform: os: linux - arch: arm + arch: arm64 steps: -- name: build-push - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/linux/arm/drone-docker ./cmd/drone-docker" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - exclude: - - tag - -- name: build-tag - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/linux/arm/drone-docker ./cmd/drone-docker" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - - tag - -- name: executable - pull: always - image: golang:1.11 +- name: build + image: golang:1.15 commands: - - ./release/linux/arm/drone-docker --help + - "[ -z \"${DRONE_TAG}\" ] && BUILD_VERSION=${DRONE_COMMIT_SHA:0:8} || BUILD_VERSION=${DRONE_TAG##v}" + - go build -v -ldflags "-X main.version=$BUILD_VERSION" -a -tags netgo -o release/arm64/drone-docker-buildx ./cmd/drone-docker-buildx - name: dryrun - pull: always - image: plugins/docker:18 + image: plugins/docker:19 settings: - daemon_off: false - dockerfile: docker/docker/Dockerfile.linux.arm + config: + from_secret: docker_config + dockerfile: docker/Dockerfile.arm64 dry_run: true password: from_secret: docker_password - repo: plugins/docker - tags: linux-arm + repo: thegeeklab/${DRONE_REPO_NAME} username: from_secret: docker_username when: - event: - - pull_request + ref: + - refs/pull/** + depends_on: + - build -- name: publish - pull: always - image: plugins/docker:18 +- name: publish-dockerhub + image: plugins/docker:19 settings: auto_tag: true - auto_tag_suffix: linux-arm - daemon_off: false - dockerfile: docker/docker/Dockerfile.linux.arm + auto_tag_suffix: arm64 + config: + from_secret: docker_config + dockerfile: docker/Dockerfile.arm64 password: from_secret: docker_password - repo: plugins/docker + repo: thegeeklab/${DRONE_REPO_NAME} username: from_secret: docker_username when: - event: - exclude: - - pull_request + ref: + - refs/heads/master + - refs/tags/** + depends_on: + - dryrun -trigger: - ref: - - refs/heads/master - - "refs/tags/**" - - "refs/pull/**" - -depends_on: -- testing - ---- -kind: pipeline -name: notifications-docker - -platform: - os: linux - arch: amd64 - -steps: -- name: manifest - pull: always - image: plugins/manifest +- name: publish-quay + image: plugins/docker:19 settings: auto_tag: true - ignore_missing: true + auto_tag_suffix: arm64 + config: + from_secret: docker_config + dockerfile: docker/Dockerfile.arm64 password: - from_secret: docker_password - spec: docker/docker/manifest.tmpl + from_secret: quay_password + registry: quay.io + repo: quay.io/thegeeklab/${DRONE_REPO_NAME} username: - from_secret: docker_username + from_secret: quay_username + when: + ref: + - refs/heads/master + - refs/tags/** + depends_on: + - dryrun -- name: microbadger - pull: always - image: plugins/webhook - failure: ignore - settings: - urls: - from_secret: microbadger_docker +image_pull_secrets: +- docker_config trigger: ref: - refs/heads/master - - "refs/tags/**" + - refs/tags/** + - refs/pull/** depends_on: -- windows-1809-amd64-docker -- windows-1903-amd64-docker -- windows-1909-amd64-docker -- linux-amd64-docker -- linux-arm64-docker -- linux-arm-docker +- test --- kind: pipeline -name: linux-amd64-gcr +name: build-container-arm platform: os: linux - arch: amd64 + arch: arm steps: -- name: build-push - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/linux/amd64/drone-gcr ./cmd/drone-gcr" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - exclude: - - tag - -- name: build-tag - pull: always - image: golang:1.11 +- name: build + image: golang:1.15 commands: - - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/linux/amd64/drone-gcr ./cmd/drone-gcr" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - - tag + - "[ -z \"${DRONE_TAG}\" ] && BUILD_VERSION=${DRONE_COMMIT_SHA:0:8} || BUILD_VERSION=${DRONE_TAG##v}" + - go build -v -ldflags "-X main.version=$BUILD_VERSION" -a -tags netgo -o release/arm/drone-docker-buildx ./cmd/drone-docker-buildx - name: dryrun - pull: always - image: plugins/docker:18 + image: plugins/docker:19 settings: - daemon_off: false - dockerfile: docker/gcr/Dockerfile.linux.amd64 + config: + from_secret: docker_config + dockerfile: docker/Dockerfile.arm dry_run: true password: from_secret: docker_password - repo: plugins/gcr - tags: linux-amd64 + repo: thegeeklab/${DRONE_REPO_NAME} username: from_secret: docker_username when: - event: - - pull_request + ref: + - refs/pull/** + depends_on: + - build -- name: publish - pull: always - image: plugins/docker:18 +- name: publish-dockerhub + image: plugins/docker:19 settings: auto_tag: true - auto_tag_suffix: linux-amd64 - daemon_off: false - dockerfile: docker/gcr/Dockerfile.linux.amd64 - password: - from_secret: docker_password - repo: plugins/gcr - username: - from_secret: docker_username - when: - event: - exclude: - - pull_request - -trigger: - ref: - - refs/heads/master - - "refs/tags/**" - - "refs/pull/**" - -depends_on: -- linux-amd64-docker - ---- -kind: pipeline -name: linux-arm64-gcr - -platform: - os: linux - arch: arm64 - -steps: -- name: build-push - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/linux/arm64/drone-gcr ./cmd/drone-gcr" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - exclude: - - tag - -- name: build-tag - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/linux/arm64/drone-gcr ./cmd/drone-gcr" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - - tag - -- name: dryrun - pull: always - image: plugins/docker:18 - settings: - daemon_off: false - dockerfile: docker/gcr/Dockerfile.linux.arm64 - dry_run: true + auto_tag_suffix: arm + config: + from_secret: docker_config + dockerfile: docker/Dockerfile.arm password: from_secret: docker_password - repo: plugins/gcr - tags: linux-arm64 + repo: thegeeklab/${DRONE_REPO_NAME} username: from_secret: docker_username when: - event: - - pull_request + ref: + - refs/heads/master + - refs/tags/** + depends_on: + - dryrun -- name: publish - pull: always - image: plugins/docker:18 +- name: publish-quay + image: plugins/docker:19 settings: auto_tag: true - auto_tag_suffix: linux-arm64 - daemon_off: false - dockerfile: docker/gcr/Dockerfile.linux.arm64 + auto_tag_suffix: arm + config: + from_secret: docker_config + dockerfile: docker/Dockerfile.arm password: - from_secret: docker_password - repo: plugins/gcr + from_secret: quay_password + registry: quay.io + repo: quay.io/thegeeklab/${DRONE_REPO_NAME} username: - from_secret: docker_username + from_secret: quay_username when: - event: - exclude: - - pull_request + ref: + - refs/heads/master + - refs/tags/** + depends_on: + - dryrun + +image_pull_secrets: +- docker_config trigger: ref: - refs/heads/master - - "refs/tags/**" - - "refs/pull/**" + - refs/tags/** + - refs/pull/** depends_on: -- linux-arm64-docker +- test --- kind: pipeline -name: linux-arm-gcr +name: notifications platform: os: linux - arch: arm + arch: amd64 steps: -- name: build-push - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/linux/arm/drone-gcr ./cmd/drone-gcr" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - exclude: - - tag - -- name: build-tag - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/linux/arm/drone-gcr ./cmd/drone-gcr" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - - tag - -- name: dryrun - pull: always - image: plugins/docker:18 - settings: - daemon_off: false - dockerfile: docker/gcr/Dockerfile.linux.arm - dry_run: true - password: - from_secret: docker_password - repo: plugins/gcr - tags: linux-arm - username: - from_secret: docker_username - when: - event: - - pull_request - -- name: publish - pull: always - image: plugins/docker:18 +- name: manifest-dockerhub + image: plugins/manifest settings: auto_tag: true - auto_tag_suffix: linux-arm - daemon_off: false - dockerfile: docker/gcr/Dockerfile.linux.arm + ignore_missing: true password: from_secret: docker_password - repo: plugins/gcr + spec: docker/manifest.tmpl username: from_secret: docker_username when: - event: - exclude: - - pull_request - -trigger: - ref: - - refs/heads/master - - "refs/tags/**" - - "refs/pull/**" - -depends_on: -- linux-arm-docker - ---- -kind: pipeline -name: notifications-gcr + status: + - success -platform: - os: linux - arch: amd64 - -steps: -- name: manifest - pull: always +- name: manifest-quay image: plugins/manifest settings: auto_tag: true ignore_missing: true password: - from_secret: docker_password - spec: docker/gcr/manifest.tmpl + from_secret: quay_password + spec: docker/manifest-quay.tmpl username: - from_secret: docker_username - -- name: microbadger - pull: always - image: plugins/webhook - failure: ignore - settings: - urls: - from_secret: microbadger_gcr - -trigger: - ref: - - refs/heads/master - - "refs/tags/**" - -depends_on: -- linux-amd64-gcr -- linux-arm64-gcr -- linux-arm-gcr - ---- -kind: pipeline -name: linux-amd64-ecr - -platform: - os: linux - arch: amd64 + from_secret: quay_username + when: + status: + - success -steps: -- name: build-push - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/linux/amd64/drone-ecr ./cmd/drone-ecr" +- name: pushrm-dockerhub + image: chko/docker-pushrm:1 environment: - CGO_ENABLED: 0 - GO111MODULE: on + DOCKER_PASS: + from_secret: docker_password + DOCKER_USER: + from_secret: docker_username + PUSHRM_FILE: README.md + PUSHRM_SHORT: Drone plugin to build multiarch Docker images with buildx + PUSHRM_TARGET: thegeeklab/${DRONE_REPO_NAME} when: - event: - exclude: - - tag + status: + - success -- name: build-tag - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/linux/amd64/drone-ecr ./cmd/drone-ecr" +- name: pushrm-quay + image: chko/docker-pushrm:1 environment: - CGO_ENABLED: 0 - GO111MODULE: on + APIKEY__QUAY_IO: + from_secret: quay_token + PUSHRM_FILE: README.md + PUSHRM_TARGET: quay.io/thegeeklab/${DRONE_REPO_NAME} when: - event: - - tag + status: + - success -- name: dryrun - pull: always - image: plugins/docker:18 +- name: matrix + image: plugins/matrix settings: - daemon_off: false - dockerfile: docker/ecr/Dockerfile.linux.amd64 - dry_run: true + homeserver: + from_secret: matrix_homeserver password: - from_secret: docker_password - repo: plugins/ecr - tags: linux-amd64 + from_secret: matrix_password + roomid: + from_secret: matrix_roomid + template: "Status: **{{ build.status }}**
Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.link }}) ({{ build.branch }}) by {{ build.author }}
Message: {{ build.message }}" username: - from_secret: docker_username + from_secret: matrix_username when: - event: - - pull_request + status: + - success + - failure -- name: publish - pull: always - image: plugins/docker:18 - settings: - auto_tag: true - auto_tag_suffix: linux-amd64 - daemon_off: false - dockerfile: docker/ecr/Dockerfile.linux.amd64 - password: - from_secret: docker_password - repo: plugins/ecr - username: - from_secret: docker_username - when: - event: - exclude: - - pull_request +image_pull_secrets: +- docker_config trigger: ref: - refs/heads/master - - "refs/tags/**" - - "refs/pull/**" + - refs/tags/** + status: + - success + - failure depends_on: -- linux-amd64-docker +- build-binaries +- build-container-amd64 +- build-container-arm +- build-container-arm64 --- -kind: pipeline -name: linux-arm64-ecr - -platform: - os: linux - arch: arm64 - -steps: -- name: build-push - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/linux/arm64/drone-ecr ./cmd/drone-ecr" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - exclude: - - tag - -- name: build-tag - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/linux/arm64/drone-ecr ./cmd/drone-ecr" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - - tag - -- name: dryrun - pull: always - image: plugins/docker:18 - settings: - daemon_off: false - dockerfile: docker/ecr/Dockerfile.linux.arm64 - dry_run: true - password: - from_secret: docker_password - repo: plugins/ecr - tags: linux-arm64 - username: - from_secret: docker_username - when: - event: - - pull_request - -- name: publish - pull: always - image: plugins/docker:18 - settings: - auto_tag: true - auto_tag_suffix: linux-arm64 - daemon_off: false - dockerfile: docker/ecr/Dockerfile.linux.arm64 - password: - from_secret: docker_password - repo: plugins/ecr - username: - from_secret: docker_username - when: - event: - exclude: - - pull_request - -trigger: - ref: - - refs/heads/master - - "refs/tags/**" - - "refs/pull/**" - -depends_on: -- linux-arm64-docker - ---- -kind: pipeline -name: linux-arm-ecr - -platform: - os: linux - arch: arm - -steps: -- name: build-push - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/linux/arm/drone-ecr ./cmd/drone-ecr" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - exclude: - - tag - -- name: build-tag - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/linux/arm/drone-ecr ./cmd/drone-ecr" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - - tag - -- name: dryrun - pull: always - image: plugins/docker:18 - settings: - daemon_off: false - dockerfile: docker/ecr/Dockerfile.linux.arm - dry_run: true - password: - from_secret: docker_password - repo: plugins/ecr - tags: linux-arm - username: - from_secret: docker_username - when: - event: - - pull_request - -- name: publish - pull: always - image: plugins/docker:18 - settings: - auto_tag: true - auto_tag_suffix: linux-arm - daemon_off: false - dockerfile: docker/ecr/Dockerfile.linux.arm - password: - from_secret: docker_password - repo: plugins/ecr - username: - from_secret: docker_username - when: - event: - exclude: - - pull_request - -trigger: - ref: - - refs/heads/master - - "refs/tags/**" - - "refs/pull/**" - -depends_on: -- linux-arm-docker - ---- -kind: pipeline -name: notifications-ecr - -platform: - os: linux - arch: amd64 - -steps: -- name: manifest - pull: always - image: plugins/manifest - settings: - auto_tag: true - ignore_missing: true - password: - from_secret: docker_password - spec: docker/ecr/manifest.tmpl - username: - from_secret: docker_username - -- name: microbadger - pull: always - image: plugins/webhook - failure: ignore - settings: - urls: - from_secret: microbadger_ecr - -trigger: - ref: - - refs/heads/master - - "refs/tags/**" - -depends_on: -- linux-amd64-ecr -- linux-arm64-ecr -- linux-arm-ecr - ---- -kind: pipeline -name: linux-amd64-heroku - -platform: - os: linux - arch: amd64 - -steps: -- name: build-push - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/linux/amd64/drone-heroku ./cmd/drone-heroku" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - exclude: - - tag - -- name: build-tag - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/linux/amd64/drone-heroku ./cmd/drone-heroku" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - - tag - -- name: dryrun - pull: always - image: plugins/docker:18 - settings: - daemon_off: false - dockerfile: docker/heroku/Dockerfile.linux.amd64 - dry_run: true - password: - from_secret: docker_password - repo: plugins/heroku - tags: linux-amd64 - username: - from_secret: docker_username - when: - event: - - pull_request - -- name: publish - pull: always - image: plugins/docker:18 - settings: - auto_tag: true - auto_tag_suffix: linux-amd64 - daemon_off: false - dockerfile: docker/heroku/Dockerfile.linux.amd64 - password: - from_secret: docker_password - repo: plugins/heroku - username: - from_secret: docker_username - when: - event: - exclude: - - pull_request - -trigger: - ref: - - refs/heads/master - - "refs/tags/**" - - "refs/pull/**" - -depends_on: -- linux-amd64-docker - ---- -kind: pipeline -name: linux-arm64-heroku - -platform: - os: linux - arch: arm64 - -steps: -- name: build-push - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/linux/arm64/drone-heroku ./cmd/drone-heroku" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - exclude: - - tag - -- name: build-tag - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/linux/arm64/drone-heroku ./cmd/drone-heroku" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - - tag - -- name: dryrun - pull: always - image: plugins/docker:18 - settings: - daemon_off: false - dockerfile: docker/heroku/Dockerfile.linux.arm64 - dry_run: true - password: - from_secret: docker_password - repo: plugins/heroku - tags: linux-arm64 - username: - from_secret: docker_username - when: - event: - - pull_request - -- name: publish - pull: always - image: plugins/docker:18 - settings: - auto_tag: true - auto_tag_suffix: linux-arm64 - daemon_off: false - dockerfile: docker/heroku/Dockerfile.linux.arm64 - password: - from_secret: docker_password - repo: plugins/heroku - username: - from_secret: docker_username - when: - event: - exclude: - - pull_request - -trigger: - ref: - - refs/heads/master - - "refs/tags/**" - - "refs/pull/**" - -depends_on: -- linux-arm64-docker - ---- -kind: pipeline -name: linux-arm-heroku - -platform: - os: linux - arch: arm - -steps: -- name: build-push - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_COMMIT_SHA:0:8}\" -a -tags netgo -o release/linux/arm/drone-heroku ./cmd/drone-heroku" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - exclude: - - tag - -- name: build-tag - pull: always - image: golang:1.11 - commands: - - "go build -v -ldflags \"-X main.version=${DRONE_TAG##v}\" -a -tags netgo -o release/linux/arm/drone-heroku ./cmd/drone-heroku" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - - tag - -- name: dryrun - pull: always - image: plugins/docker:18 - settings: - daemon_off: false - dockerfile: docker/heroku/Dockerfile.linux.arm - dry_run: true - password: - from_secret: docker_password - repo: plugins/heroku - tags: linux-arm - username: - from_secret: docker_username - when: - event: - - pull_request - -- name: publish - pull: always - image: plugins/docker:18 - settings: - auto_tag: true - auto_tag_suffix: linux-arm - daemon_off: false - dockerfile: docker/heroku/Dockerfile.linux.arm - password: - from_secret: docker_password - repo: plugins/heroku - username: - from_secret: docker_username - when: - event: - exclude: - - pull_request - -trigger: - ref: - - refs/heads/master - - "refs/tags/**" - - "refs/pull/**" - -depends_on: -- linux-arm-docker - ---- -kind: pipeline -name: notifications-heroku - -platform: - os: linux - arch: amd64 - -steps: -- name: manifest - pull: always - image: plugins/manifest - settings: - auto_tag: true - ignore_missing: true - password: - from_secret: docker_password - spec: docker/heroku/manifest.tmpl - username: - from_secret: docker_username - -- name: microbadger - pull: always - image: plugins/webhook - failure: ignore - settings: - urls: - from_secret: microbadger_heroku - -trigger: - ref: - - refs/heads/master - - "refs/tags/**" - -depends_on: -- linux-amd64-heroku -- linux-arm64-heroku -- linux-arm-heroku - ---- -kind: pipeline -name: linux-amd64-acr - -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 -tags netgo -o release/linux/amd64/drone-acr ./cmd/drone-acr" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - 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 -tags netgo -o release/linux/amd64/drone-acr ./cmd/drone-acr" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - - tag - -- name: dryrun - pull: always - image: plugins/docker:18 - settings: - daemon_off: false - dockerfile: docker/acr/Dockerfile.linux.amd64 - dry_run: true - password: - from_secret: docker_password - repo: plugins/acr - tags: linux-amd64 - username: - from_secret: docker_username - when: - event: - - pull_request - -- name: publish - pull: always - image: plugins/docker:18 - settings: - auto_tag: true - auto_tag_suffix: linux-amd64 - daemon_off: false - dockerfile: docker/acr/Dockerfile.linux.amd64 - password: - from_secret: docker_password - repo: plugins/acr - username: - from_secret: docker_username - when: - event: - exclude: - - pull_request - -trigger: - ref: - - refs/heads/master - - "refs/tags/**" - - "refs/pull/**" - -depends_on: -- linux-amd64-docker - ---- -kind: pipeline -name: linux-arm64-acr - -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 -tags netgo -o release/linux/arm64/drone-acr ./cmd/drone-acr" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - 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 -tags netgo -o release/linux/arm64/drone-acr ./cmd/drone-acr" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - - tag - -- name: dryrun - pull: always - image: plugins/docker:18 - settings: - daemon_off: false - dockerfile: docker/acr/Dockerfile.linux.arm64 - dry_run: true - password: - from_secret: docker_password - repo: plugins/acr - tags: linux-arm64 - username: - from_secret: docker_username - when: - event: - - pull_request - -- name: publish - pull: always - image: plugins/docker:18 - settings: - auto_tag: true - auto_tag_suffix: linux-arm64 - daemon_off: false - dockerfile: docker/acr/Dockerfile.linux.arm64 - password: - from_secret: docker_password - repo: plugins/acr - username: - from_secret: docker_username - when: - event: - exclude: - - pull_request - -trigger: - ref: - - refs/heads/master - - "refs/tags/**" - - "refs/pull/**" - -depends_on: -- linux-arm64-docker - ---- -kind: pipeline -name: linux-arm-acr - -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 -tags netgo -o release/linux/arm/drone-acr ./cmd/drone-acr" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - 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 -tags netgo -o release/linux/arm/drone-acr ./cmd/drone-acr" - environment: - CGO_ENABLED: 0 - GO111MODULE: on - when: - event: - - tag - -- name: dryrun - pull: always - image: plugins/docker:18 - settings: - daemon_off: false - dockerfile: docker/acr/Dockerfile.linux.arm - dry_run: true - password: - from_secret: docker_password - repo: plugins/acr - tags: linux-arm - username: - from_secret: docker_username - when: - event: - - pull_request - -- name: publish - pull: always - image: plugins/docker:18 - settings: - auto_tag: true - auto_tag_suffix: linux-arm - daemon_off: false - dockerfile: docker/acr/Dockerfile.linux.arm - password: - from_secret: docker_password - repo: plugins/acr - username: - from_secret: docker_username - when: - event: - exclude: - - pull_request - -trigger: - ref: - - refs/heads/master - - "refs/tags/**" - - "refs/pull/**" - -depends_on: -- linux-arm-docker - ---- -kind: pipeline -name: notifications-acr - -platform: - os: linux - arch: amd64 - -steps: -- name: manifest - pull: always - image: plugins/manifest - settings: - ignore_missing: true - password: - from_secret: docker_password - spec: docker/acr/manifest.tmpl - username: - from_secret: docker_username - -- name: microbadger - pull: always - image: plugins/webhook - failure: ignore - settings: - url: - from_secret: microbadger_acr - -trigger: - ref: - - refs/heads/master - - "refs/tags/**" - -depends_on: -- linux-amd64-acr -- linux-arm64-acr -- linux-arm-acr - +kind: signature +hmac: 39198ae608d35d3f8b0a0a69ac66243cf31ccc4b0303b39a64b61ff738daa292 -... \ No newline at end of file +... diff --git a/.github/issue_template.md b/.github/issue_template.md deleted file mode 100644 index 3f95605..0000000 --- a/.github/issue_template.md +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md deleted file mode 100644 index 8b13789..0000000 --- a/.github/pull_request_template.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.github/settings.yml b/.github/settings.yml index f647429..ced2bbf 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -1,13 +1,12 @@ repository: - name: drone-docker - description: Drone plugin for publishing Docker images - homepage: http://plugins.drone.io/drone-plugins/drone-docker + name: drone-docker-buildx + description: Drone plugin to build multiarch Docker images with buildx topics: drone, drone-plugin private: false has_issues: true has_wiki: false - has_downloads: false + has_downloads: true default_branch: master @@ -19,6 +18,9 @@ labels: - name: bug color: d73a4a description: Something isn't working + - name: documentation + color: 0075ca + description: Improvements or additions to documentation - name: duplicate color: cfd3d7 description: This issue or pull request already exists @@ -37,33 +39,17 @@ labels: - 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 - 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 + required_pull_request_reviews: null required_status_checks: strict: true contexts: - continuous-integration/drone/pr - enforce_admins: false - restrictions: - users: [] - teams: - - Admins + enforce_admins: null + restrictions: null diff --git a/.gitignore b/.gitignore index 5077f86..48170f7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ -release +/release/ +drone-docker-buildx* + coverage.out -vendor diff --git a/LICENSE b/LICENSE index 8f71f43..e07ea97 100644 --- a/LICENSE +++ b/LICENSE @@ -1,3 +1,4 @@ + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -178,7 +179,7 @@ APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" + boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a @@ -186,7 +187,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright {yyyy} {name of copyright owner} + Copyright 2021 Robert Kaussow Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -199,4 +200,3 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - diff --git a/README.md b/README.md index 2433bcb..60cfbbe 100644 --- a/README.md +++ b/README.md @@ -1,74 +1,56 @@ -# drone-docker +# drone-docker-buildx -[![Build Status](http://cloud.drone.io/api/badges/drone-plugins/drone-docker/status.svg)](http://cloud.drone.io/drone-plugins/drone-docker) -[![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/docker.svg)](https://microbadger.com/images/plugins/docker "Get your own image badge on microbadger.com") -[![Go Doc](https://godoc.org/github.com/drone-plugins/drone-docker?status.svg)](http://godoc.org/github.com/drone-plugins/drone-docker) -[![Go Report](https://goreportcard.com/badge/github.com/drone-plugins/drone-docker)](https://goreportcard.com/report/github.com/drone-plugins/drone-docker) +Drone plugin to build multiarch Docker images with buildx -Drone plugin uses Docker-in-Docker to build and publish Docker images to a container registry. 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-docker/). +[![Build Status](https://img.shields.io/drone/build/thegeeklab/drone-docker-buildx?logo=drone)](https://cloud.drone.io/thegeeklab/drone-docker-buildx) +[![Docker Hub](https://img.shields.io/badge/dockerhub-latest-blue.svg?logo=docker&logoColor=white)](https://hub.docker.com/r/thegeeklab/drone-docker-buildx) +[![Quay.io](https://img.shields.io/badge/quay-latest-blue.svg?logo=docker&logoColor=white)](https://quay.io/repository/thegeeklab/drone-docker-buildx) +[![Go Report Card](https://goreportcard.com/badge/github.com/thegeeklab/drone-docker-buildx)](https://goreportcard.com/report/github.com/thegeeklab/drone-docker-buildx) +[![GitHub contributors](https://img.shields.io/github/contributors/thegeeklab/drone-docker-buildx)](https://github.com/thegeeklab/drone-docker-buildx/graphs/contributors) +[![Source: GitHub](https://img.shields.io/badge/source-github-blue.svg?logo=github&logoColor=white)](https://github.com/thegeeklab/drone-docker-buildx) +[![License: MIT](https://img.shields.io/github/license/thegeeklab/drone-docker-buildx)](https://github.com/thegeeklab/drone-docker-buildx/blob/main/LICENSE) + +Drone plugin to build multiarch Docker images with buildx. ## Build -Build the binaries with the following commands: +Build the binary with the following command: -```console +```Shell export GOOS=linux export GOARCH=amd64 export CGO_ENABLED=0 export GO111MODULE=on -go build -v -a -tags netgo -o release/linux/amd64/drone-docker ./cmd/drone-docker -go build -v -a -tags netgo -o release/linux/amd64/drone-gcr ./cmd/drone-gcr -go build -v -a -tags netgo -o release/linux/amd64/drone-ecr ./cmd/drone-ecr -go build -v -a -tags netgo -o release/linux/amd64/drone-acr ./cmd/drone-acr -go build -v -a -tags netgo -o release/linux/amd64/drone-heroku ./cmd/drone-heroku +go build -v -a -tags netgo -o release/drone-docker-buildx ``` -## Docker +Build the Docker image with the following command: -Build the Docker images with the following commands: - -```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/docker/Dockerfile.linux.amd64 --tag plugins/docker . - -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/gcr/Dockerfile.linux.amd64 --tag plugins/gcr . - -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/ecr/Dockerfile.linux.amd64 --tag plugins/ecr . - -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/acr/Dockerfile.linux.amd64 --tag plugins/acr . - -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/heroku/Dockerfile.linux.amd64 --tag plugins/heroku . +```Shell +docker build --file docker/Dockerfile.amd64 --tag thegeeklab/drone-docker-buildx . ``` ## Usage -> Notice: Be aware that the Docker plugin currently requires privileged capabilities, otherwise the integrated Docker daemon is not able to start. +> Notice: Be aware that the tis plugin requires privileged capabilities, otherwise the integrated Docker daemon is not able to start. ```console docker run --rm \ -e PLUGIN_TAG=latest \ -e PLUGIN_REPO=octocat/hello-world \ - -e DRONE_COMMIT_SHA=d8dbe4d94f15fe89232e0402c6e8a0ddf21af3ab \ + -e DRONE_COMMIT_SHA=00000000 \ -v $(pwd):$(pwd) \ -w $(pwd) \ --privileged \ - plugins/docker --dry-run + thegeeklab/drone-docker-buildx --dry-run ``` + +## Contributors + +Special thanks goes to all [contributors](https://github.com/thegeeklab/drone-docker-buildx/graphs/contributors). If you would like to contribute, +please see the [instructions](https://github.com/thegeeklab/drone-docker-buildx/blob/main/CONTRIBUTING.md). + +## License + +This project is licensed under the MIT License - see the [LICENSE](https://github.com/thegeeklab/drone-docker-buildx/blob/main/LICENSE) file for details. diff --git a/cmd/drone-acr/main.go b/cmd/drone-acr/main.go deleted file mode 100644 index 62e65c5..0000000 --- a/cmd/drone-acr/main.go +++ /dev/null @@ -1,60 +0,0 @@ -package main - -import ( - "fmt" - "os" - "os/exec" - "strings" - - "github.com/joho/godotenv" -) - -func main() { - // Load env-file if it exists first - if env := os.Getenv("PLUGIN_ENV_FILE"); env != "" { - godotenv.Load(env) - } - - var ( - repo = getenv("PLUGIN_REPO") - registry = getenv("PLUGIN_REGISTRY") - username = getenv("SERVICE_PRINCIPAL_CLIENT_ID") - password = getenv("SERVICE_PRINCIPAL_CLIENT_SECRET") - ) - - // default registry value - if registry == "" { - registry = "azurecr.io" - } - - // must use the fully qualified repo name. If the - // repo name does not have the registry prefix we - // should prepend. - if !strings.HasPrefix(repo, registry) { - repo = fmt.Sprintf("%s/%s", registry, repo) - } - - os.Setenv("PLUGIN_REPO", repo) - os.Setenv("PLUGIN_REGISTRY", registry) - os.Setenv("DOCKER_USERNAME", username) - os.Setenv("DOCKER_PASSWORD", password) - - // invoke the base docker plugin binary - cmd := exec.Command("drone-docker") - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - err := cmd.Run() - if err != nil { - os.Exit(1) - } -} - -func getenv(key ...string) (s string) { - for _, k := range key { - s = os.Getenv(k) - if s != "" { - return - } - } - return -} diff --git a/cmd/drone-docker/main.go b/cmd/drone-docker/main.go deleted file mode 100644 index f6448c2..0000000 --- a/cmd/drone-docker/main.go +++ /dev/null @@ -1,317 +0,0 @@ -package main - -import ( - "os" - - "github.com/joho/godotenv" - "github.com/sirupsen/logrus" - "github.com/urfave/cli" - - docker "github.com/drone-plugins/drone-docker" -) - -var ( - version = "unknown" -) - -func main() { - // Load env-file if it exists first - if env := os.Getenv("PLUGIN_ENV_FILE"); env != "" { - godotenv.Load(env) - } - - app := cli.NewApp() - app.Name = "docker plugin" - app.Usage = "docker plugin" - app.Action = run - app.Version = version - app.Flags = []cli.Flag{ - cli.BoolFlag{ - Name: "dry-run", - Usage: "dry run disables docker push", - EnvVar: "PLUGIN_DRY_RUN", - }, - cli.StringFlag{ - Name: "remote.url", - Usage: "git remote url", - EnvVar: "DRONE_REMOTE_URL", - }, - cli.StringFlag{ - Name: "commit.sha", - Usage: "git commit sha", - EnvVar: "DRONE_COMMIT_SHA", - Value: "00000000", - }, - cli.StringFlag{ - Name: "commit.ref", - Usage: "git commit ref", - EnvVar: "DRONE_COMMIT_REF", - }, - cli.StringFlag{ - Name: "daemon.mirror", - Usage: "docker daemon registry mirror", - EnvVar: "PLUGIN_MIRROR,DOCKER_PLUGIN_MIRROR", - }, - cli.StringFlag{ - Name: "daemon.storage-driver", - Usage: "docker daemon storage driver", - EnvVar: "PLUGIN_STORAGE_DRIVER", - }, - cli.StringFlag{ - Name: "daemon.storage-path", - Usage: "docker daemon storage path", - Value: "/var/lib/docker", - EnvVar: "PLUGIN_STORAGE_PATH", - }, - cli.StringFlag{ - Name: "daemon.bip", - Usage: "docker daemon bride ip address", - EnvVar: "PLUGIN_BIP", - }, - cli.StringFlag{ - Name: "daemon.mtu", - Usage: "docker daemon custom mtu setting", - EnvVar: "PLUGIN_MTU", - }, - cli.StringSliceFlag{ - Name: "daemon.dns", - Usage: "docker daemon dns server", - EnvVar: "PLUGIN_CUSTOM_DNS", - }, - cli.StringSliceFlag{ - Name: "daemon.dns-search", - Usage: "docker daemon dns search domains", - EnvVar: "PLUGIN_CUSTOM_DNS_SEARCH", - }, - cli.BoolFlag{ - Name: "daemon.insecure", - Usage: "docker daemon allows insecure registries", - EnvVar: "PLUGIN_INSECURE", - }, - cli.BoolFlag{ - Name: "daemon.ipv6", - Usage: "docker daemon IPv6 networking", - EnvVar: "PLUGIN_IPV6", - }, - cli.BoolFlag{ - Name: "daemon.experimental", - Usage: "docker daemon Experimental mode", - EnvVar: "PLUGIN_EXPERIMENTAL", - }, - cli.BoolFlag{ - Name: "daemon.debug", - Usage: "docker daemon executes in debug mode", - EnvVar: "PLUGIN_DEBUG,DOCKER_LAUNCH_DEBUG", - }, - cli.BoolFlag{ - Name: "daemon.off", - Usage: "don't start the docker daemon", - EnvVar: "PLUGIN_DAEMON_OFF", - }, - cli.StringFlag{ - Name: "dockerfile", - Usage: "build dockerfile", - Value: "Dockerfile", - EnvVar: "PLUGIN_DOCKERFILE", - }, - cli.StringFlag{ - Name: "context", - Usage: "build context", - Value: ".", - EnvVar: "PLUGIN_CONTEXT", - }, - cli.StringSliceFlag{ - Name: "tags", - Usage: "build tags", - Value: &cli.StringSlice{"latest"}, - EnvVar: "PLUGIN_TAG,PLUGIN_TAGS", - FilePath: ".tags", - }, - cli.BoolFlag{ - Name: "tags.auto", - Usage: "default build tags", - EnvVar: "PLUGIN_DEFAULT_TAGS,PLUGIN_AUTO_TAG", - }, - cli.StringFlag{ - Name: "tags.suffix", - Usage: "default build tags with suffix", - EnvVar: "PLUGIN_DEFAULT_SUFFIX,PLUGIN_AUTO_TAG_SUFFIX", - }, - cli.StringSliceFlag{ - Name: "args", - Usage: "build args", - EnvVar: "PLUGIN_BUILD_ARGS", - }, - cli.StringSliceFlag{ - Name: "args-from-env", - Usage: "build args", - EnvVar: "PLUGIN_BUILD_ARGS_FROM_ENV", - }, - cli.BoolFlag{ - Name: "quiet", - Usage: "quiet docker build", - EnvVar: "PLUGIN_QUIET", - }, - cli.StringFlag{ - Name: "target", - Usage: "build target", - EnvVar: "PLUGIN_TARGET", - }, - cli.StringSliceFlag{ - Name: "cache-from", - Usage: "images to consider as cache sources", - EnvVar: "PLUGIN_CACHE_FROM", - }, - cli.BoolFlag{ - Name: "squash", - Usage: "squash the layers at build time", - EnvVar: "PLUGIN_SQUASH", - }, - cli.BoolTFlag{ - Name: "pull-image", - Usage: "force pull base image at build time", - EnvVar: "PLUGIN_PULL_IMAGE", - }, - cli.BoolFlag{ - Name: "compress", - Usage: "compress the build context using gzip", - EnvVar: "PLUGIN_COMPRESS", - }, - cli.StringFlag{ - Name: "repo", - Usage: "docker repository", - EnvVar: "PLUGIN_REPO", - }, - cli.StringSliceFlag{ - Name: "custom-labels", - Usage: "additional k=v labels", - EnvVar: "PLUGIN_CUSTOM_LABELS", - }, - cli.StringSliceFlag{ - Name: "label-schema", - Usage: "label-schema labels", - EnvVar: "PLUGIN_LABEL_SCHEMA", - }, - cli.StringFlag{ - Name: "docker.registry", - Usage: "docker registry", - Value: "https://index.docker.io/v1/", - EnvVar: "PLUGIN_REGISTRY,DOCKER_REGISTRY", - }, - cli.StringFlag{ - Name: "docker.username", - Usage: "docker username", - EnvVar: "PLUGIN_USERNAME,DOCKER_USERNAME", - }, - cli.StringFlag{ - Name: "docker.password", - Usage: "docker password", - EnvVar: "PLUGIN_PASSWORD,DOCKER_PASSWORD", - }, - cli.StringFlag{ - Name: "docker.email", - Usage: "docker email", - EnvVar: "PLUGIN_EMAIL,DOCKER_EMAIL", - }, - cli.StringFlag{ - Name: "docker.config", - Usage: "docker json dockerconfig content", - EnvVar: "PLUGIN_CONFIG,DOCKER_PLUGIN_CONFIG", - }, - cli.BoolTFlag{ - Name: "docker.purge", - Usage: "docker should cleanup images", - EnvVar: "PLUGIN_PURGE", - }, - cli.StringFlag{ - Name: "repo.branch", - Usage: "repository default branch", - EnvVar: "DRONE_REPO_BRANCH", - }, - cli.BoolFlag{ - Name: "no-cache", - Usage: "do not use cached intermediate containers", - EnvVar: "PLUGIN_NO_CACHE", - }, - cli.StringSliceFlag{ - Name: "add-host", - Usage: "additional host:IP mapping", - EnvVar: "PLUGIN_ADD_HOST", - }, - } - - if err := app.Run(os.Args); err != nil { - logrus.Fatal(err) - } -} - -func run(c *cli.Context) error { - plugin := docker.Plugin{ - Dryrun: c.Bool("dry-run"), - Cleanup: c.BoolT("docker.purge"), - Login: docker.Login{ - Registry: c.String("docker.registry"), - Username: c.String("docker.username"), - Password: c.String("docker.password"), - Email: c.String("docker.email"), - Config: c.String("docker.config"), - }, - Build: docker.Build{ - Remote: c.String("remote.url"), - Name: c.String("commit.sha"), - Dockerfile: c.String("dockerfile"), - Context: c.String("context"), - Tags: c.StringSlice("tags"), - Args: c.StringSlice("args"), - ArgsEnv: c.StringSlice("args-from-env"), - Target: c.String("target"), - Squash: c.Bool("squash"), - Pull: c.BoolT("pull-image"), - CacheFrom: c.StringSlice("cache-from"), - Compress: c.Bool("compress"), - Repo: c.String("repo"), - Labels: c.StringSlice("custom-labels"), - LabelSchema: c.StringSlice("label-schema"), - NoCache: c.Bool("no-cache"), - AddHost: c.StringSlice("add-host"), - Quiet: c.Bool("quiet"), - }, - Daemon: docker.Daemon{ - Registry: c.String("docker.registry"), - Mirror: c.String("daemon.mirror"), - StorageDriver: c.String("daemon.storage-driver"), - StoragePath: c.String("daemon.storage-path"), - Insecure: c.Bool("daemon.insecure"), - Disabled: c.Bool("daemon.off"), - IPv6: c.Bool("daemon.ipv6"), - Debug: c.Bool("daemon.debug"), - Bip: c.String("daemon.bip"), - DNS: c.StringSlice("daemon.dns"), - DNSSearch: c.StringSlice("daemon.dns-search"), - MTU: c.String("daemon.mtu"), - Experimental: c.Bool("daemon.experimental"), - }, - } - - if c.Bool("tags.auto") { - if docker.UseDefaultTag( // return true if tag event or default branch - c.String("commit.ref"), - c.String("repo.branch"), - ) { - tag, err := docker.DefaultTagSuffix( - c.String("commit.ref"), - c.String("tags.suffix"), - ) - if err != nil { - logrus.Printf("cannot build docker image for %s, invalid semantic version", c.String("commit.ref")) - return err - } - plugin.Build.Tags = tag - } else { - logrus.Printf("skipping automated docker build for %s", c.String("commit.ref")) - return nil - } - } - - return plugin.Exec() -} diff --git a/cmd/drone-ecr/main.go b/cmd/drone-ecr/main.go deleted file mode 100644 index 5f1e83e..0000000 --- a/cmd/drone-ecr/main.go +++ /dev/null @@ -1,203 +0,0 @@ -package main - -import ( - "encoding/base64" - "fmt" - "io/ioutil" - "log" - "os" - "os/exec" - "strconv" - "strings" - - "github.com/joho/godotenv" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/awserr" - "github.com/aws/aws-sdk-go/aws/credentials/stscreds" - "github.com/aws/aws-sdk-go/aws/session" - "github.com/aws/aws-sdk-go/service/ecr" -) - -const defaultRegion = "us-east-1" - -func main() { - // Load env-file if it exists first - if env := os.Getenv("PLUGIN_ENV_FILE"); env != "" { - godotenv.Load(env) - } - - var ( - repo = getenv("PLUGIN_REPO") - registry = getenv("PLUGIN_REGISTRY") - region = getenv("PLUGIN_REGION", "ECR_REGION", "AWS_REGION") - key = getenv("PLUGIN_ACCESS_KEY", "ECR_ACCESS_KEY", "AWS_ACCESS_KEY_ID") - secret = getenv("PLUGIN_SECRET_KEY", "ECR_SECRET_KEY", "AWS_SECRET_ACCESS_KEY") - create = parseBoolOrDefault(false, getenv("PLUGIN_CREATE_REPOSITORY", "ECR_CREATE_REPOSITORY")) - lifecyclePolicy = getenv("PLUGIN_LIFECYCLE_POLICY") - repositoryPolicy = getenv("PLUGIN_REPOSITORY_POLICY") - assumeRole = getenv("PLUGIN_ASSUME_ROLE") - ) - - // set the region - if region == "" { - region = defaultRegion - } - - os.Setenv("AWS_REGION", region) - - if key != "" && secret != "" { - os.Setenv("AWS_ACCESS_KEY_ID", key) - os.Setenv("AWS_SECRET_ACCESS_KEY", secret) - } - - sess, err := session.NewSession(&aws.Config{Region: ®ion}) - if err != nil { - log.Fatal(fmt.Sprintf("error creating aws session: %v", err)) - } - - svc := getECRClient(sess, assumeRole) - username, password, defaultRegistry, err := getAuthInfo(svc) - - if registry == "" { - registry = defaultRegistry - } - - if err != nil { - log.Fatal(fmt.Sprintf("error getting ECR auth: %v", err)) - } - - if !strings.HasPrefix(repo, registry) { - repo = fmt.Sprintf("%s/%s", registry, repo) - } - - if create { - err = ensureRepoExists(svc, trimHostname(repo, registry)) - if err != nil { - log.Fatal(fmt.Sprintf("error creating ECR repo: %v", err)) - } - } - - if lifecyclePolicy != "" { - p, err := ioutil.ReadFile(lifecyclePolicy) - if err != nil { - log.Fatal(err) - } - if err := uploadLifeCyclePolicy(svc, string(p), trimHostname(repo, registry)); err != nil { - log.Fatal(fmt.Sprintf("error uploading ECR lifecycle policy: %v", err)) - } - } - - if repositoryPolicy != "" { - p, err := ioutil.ReadFile(repositoryPolicy) - if err != nil { - log.Fatal(err) - } - if err := uploadRepositoryPolicy(svc, string(p), trimHostname(repo, registry)); err != nil { - log.Fatal(fmt.Sprintf("error uploading ECR repository policy. %v", err)) - } - } - - os.Setenv("PLUGIN_REPO", repo) - os.Setenv("PLUGIN_REGISTRY", registry) - os.Setenv("DOCKER_USERNAME", username) - os.Setenv("DOCKER_PASSWORD", password) - - // invoke the base docker plugin binary - cmd := exec.Command("drone-docker") - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - if err = cmd.Run(); err != nil { - os.Exit(1) - } -} - -func trimHostname(repo, registry string) string { - repo = strings.TrimPrefix(repo, registry) - repo = strings.TrimLeft(repo, "/") - return repo -} - -func ensureRepoExists(svc *ecr.ECR, name string) (err error) { - input := &ecr.CreateRepositoryInput{} - input.SetRepositoryName(name) - _, err = svc.CreateRepository(input) - if err != nil { - if aerr, ok := err.(awserr.Error); ok && aerr.Code() == ecr.ErrCodeRepositoryAlreadyExistsException { - // eat it, we skip checking for existing to save two requests - err = nil - } - } - - return -} - -func uploadLifeCyclePolicy(svc *ecr.ECR, lifecyclePolicy string, name string) (err error) { - input := &ecr.PutLifecyclePolicyInput{} - input.SetLifecyclePolicyText(lifecyclePolicy) - input.SetRepositoryName(name) - _, err = svc.PutLifecyclePolicy(input) - - return err -} - -func uploadRepositoryPolicy(svc *ecr.ECR, repositoryPolicy string, name string) (err error) { - input := &ecr.SetRepositoryPolicyInput{} - input.SetPolicyText(repositoryPolicy) - input.SetRepositoryName(name) - _, err = svc.SetRepositoryPolicy(input) - - return err -} - -func getAuthInfo(svc *ecr.ECR) (username, password, registry string, err error) { - var result *ecr.GetAuthorizationTokenOutput - var decoded []byte - - result, err = svc.GetAuthorizationToken(&ecr.GetAuthorizationTokenInput{}) - if err != nil { - return - } - - auth := result.AuthorizationData[0] - token := *auth.AuthorizationToken - decoded, err = base64.StdEncoding.DecodeString(token) - if err != nil { - return - } - - registry = strings.TrimPrefix(*auth.ProxyEndpoint, "https://") - creds := strings.Split(string(decoded), ":") - username = creds[0] - password = creds[1] - return -} - -func parseBoolOrDefault(defaultValue bool, s string) (result bool) { - var err error - result, err = strconv.ParseBool(s) - if err != nil { - result = false - } - - return -} - -func getenv(key ...string) (s string) { - for _, k := range key { - s = os.Getenv(k) - if s != "" { - return - } - } - return -} - -func getECRClient(sess *session.Session, role string) *ecr.ECR { - if role == "" { - return ecr.New(sess) - } - return ecr.New(sess, &aws.Config{ - Credentials: stscreds.NewCredentials(sess, role), - }) -} diff --git a/cmd/drone-ecr/main_test.go b/cmd/drone-ecr/main_test.go deleted file mode 100644 index 5c50ba5..0000000 --- a/cmd/drone-ecr/main_test.go +++ /dev/null @@ -1,20 +0,0 @@ -package main - -import "testing" - -func TestTrimHostname(t *testing.T) { - registry := "000000000000.dkr.ecr.us-east-1.amazonaws.com" - // map full repo path to expected repo name - repos := map[string]string{ - registry + "/repo": "repo", - registry + "/namespace/repo": "namespace/repo", - registry + "/namespace/namespace/repo": "namespace/namespace/repo", - } - - for repo, name := range repos { - splitName := trimHostname(repo, registry) - if splitName != name { - t.Errorf("%s is not equal to %s.", splitName, name) - } - } -} diff --git a/cmd/drone-gcr/main.go b/cmd/drone-gcr/main.go deleted file mode 100644 index addddcb..0000000 --- a/cmd/drone-gcr/main.go +++ /dev/null @@ -1,74 +0,0 @@ -package main - -import ( - "encoding/base64" - "os" - "os/exec" - "path" - "strings" - - "github.com/joho/godotenv" -) - -// gcr default username -const username = "_json_key" - -func main() { - // Load env-file if it exists first - if env := os.Getenv("PLUGIN_ENV_FILE"); env != "" { - godotenv.Load(env) - } - - var ( - repo = getenv("PLUGIN_REPO") - registry = getenv("PLUGIN_REGISTRY") - password = getenv( - "PLUGIN_JSON_KEY", - "GCR_JSON_KEY", - "GOOGLE_CREDENTIALS", - "TOKEN", - ) - ) - - // decode the token if base64 encoded - decoded, err := base64.StdEncoding.DecodeString(password) - if err == nil { - password = string(decoded) - } - - // default registry value - if registry == "" { - registry = "gcr.io" - } - - // must use the fully qualified repo name. If the - // repo name does not have the registry prefix we - // should prepend. - if !strings.HasPrefix(repo, registry) { - repo = path.Join(registry, repo) - } - - os.Setenv("PLUGIN_REPO", repo) - os.Setenv("PLUGIN_REGISTRY", registry) - os.Setenv("DOCKER_USERNAME", username) - os.Setenv("DOCKER_PASSWORD", password) - - // invoke the base docker plugin binary - cmd := exec.Command("drone-docker") - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - err = cmd.Run() - if err != nil { - os.Exit(1) - } -} - -func getenv(key ...string) (s string) { - for _, k := range key { - s = os.Getenv(k) - if s != "" { - return - } - } - return -} diff --git a/cmd/drone-heroku/main.go b/cmd/drone-heroku/main.go deleted file mode 100644 index 7a5ca49..0000000 --- a/cmd/drone-heroku/main.go +++ /dev/null @@ -1,53 +0,0 @@ -package main - -import ( - "os" - "os/exec" - "path" - - "github.com/joho/godotenv" -) - -func main() { - // Load env-file if it exists first - if env := os.Getenv("PLUGIN_ENV_FILE"); env != "" { - godotenv.Load(env) - } - - var ( - registry = "registry.heroku.com" - process = getenv("PLUGIN_PROCESS_TYPE") - app = getenv("PLUGIN_APP") - email = getenv("PLUGIN_EMAIL", "HEROKU_EMAIL") - key = getenv("PLUGIN_API_KEY", "HEROKU_API_KEY") - ) - - if process == "" { - process = "web" - } - - os.Setenv("PLUGIN_REGISTRY", registry) - os.Setenv("PLUGIN_REPO", path.Join(registry, app, process)) - - os.Setenv("DOCKER_PASSWORD", key) - os.Setenv("DOCKER_USERNAME", email) - os.Setenv("DOCKER_EMAIL", email) - - cmd := exec.Command("drone-docker") - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - err := cmd.Run() - if err != nil { - os.Exit(1) - } -} - -func getenv(key ...string) (s string) { - for _, k := range key { - s = os.Getenv(k) - if s != "" { - return - } - } - return -} diff --git a/daemon_win.go b/daemon_win.go deleted file mode 100644 index 77e0543..0000000 --- a/daemon_win.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build windows - -package docker - -const dockerExe = "C:\\bin\\docker.exe" -const dockerdExe = "" -const dockerHome = "C:\\ProgramData\\docker\\" - -func (p Plugin) startDaemon() { - // this is a no-op on windows -} diff --git a/docker.go b/docker.go index 90301c2..47b1a86 100644 --- a/docker.go +++ b/docker.go @@ -39,24 +39,23 @@ type ( // Build defines Docker build parameters. Build struct { - Remote string // Git remote URL - Name string // Docker build using default named tag - Dockerfile string // Docker build Dockerfile - Context string // Docker build context - Tags []string // Docker build tags - Args []string // Docker build args - ArgsEnv []string // Docker build args from env - Target string // Docker build target - Squash bool // Docker build squash - Pull bool // Docker build pull - CacheFrom []string // Docker build cache-from - Compress bool // Docker build compress - Repo string // Docker build repository - LabelSchema []string // label-schema Label map - Labels []string // Label map - NoCache bool // Docker build no-cache - AddHost []string // Docker build add-host - Quiet bool // Docker build quiet + Remote string // Git remote URL + Name string // Docker build using default named tag + Dockerfile string // Docker build Dockerfile + Context string // Docker build context + Tags []string // Docker build tags + Platforms []string // Docker build target platforms + Args []string // Docker build args + ArgsEnv []string // Docker build args from env + Target string // Docker build target + Squash bool // Docker build squash + Pull bool // Docker build pull + CacheFrom []string // Docker build cache-from + Compress bool // Docker build compress + Repo string // Docker build repository + NoCache bool // Docker build no-cache + AddHost []string // Docker build add-host + Quiet bool // Docker build quiet } // Plugin defines the Docker plugin parameters. @@ -127,6 +126,8 @@ func (p Plugin) Exec() error { var cmds []*exec.Cmd cmds = append(cmds, commandVersion()) // docker version cmds = append(cmds, commandInfo()) // docker info + cmds = append(cmds, commandBuilder()) + cmds = append(cmds, commandBuildx()) // pre-pull cache images for _, img := range p.Build.CacheFrom { @@ -211,10 +212,20 @@ func commandInfo() *exec.Cmd { return exec.Command(dockerExe, "info") } +func commandBuilder() *exec.Cmd { + return exec.Command(dockerExe, "buildx", "create", "--use") +} + +func commandBuildx() *exec.Cmd { + return exec.Command(dockerExe, "buildx", "ls") +} + // helper function to create the docker build command. func commandBuild(build Build) *exec.Cmd { args := []string{ + "buildx", "build", + "--load", "--rm=true", "-f", build.Dockerfile, "-t", build.Name, @@ -252,25 +263,8 @@ func commandBuild(build Build) *exec.Cmd { args = append(args, "--quiet") } - labelSchema := []string{ - "schema-version=1.0", - fmt.Sprintf("build-date=%s", time.Now().Format(time.RFC3339)), - fmt.Sprintf("vcs-ref=%s", build.Name), - fmt.Sprintf("vcs-url=%s", build.Remote), - } - - if len(build.LabelSchema) > 0 { - labelSchema = append(labelSchema, build.LabelSchema...) - } - - for _, label := range labelSchema { - args = append(args, "--label", fmt.Sprintf("org.label-schema.%s", label)) - } - - if len(build.Labels) > 0 { - for _, label := range build.Labels { - args = append(args, "--label", label) - } + if len(build.Platforms) > 0 { + args = append(args, "--platform", strings.Join(build.Platforms[:], ",")) } return exec.Command(dockerExe, args...) diff --git a/docker/Dockerfile.amd64 b/docker/Dockerfile.amd64 new file mode 100644 index 0000000..849eeaa --- /dev/null +++ b/docker/Dockerfile.amd64 @@ -0,0 +1,26 @@ +FROM amd64/docker:20.10-dind + +LABEL maintainer="Robert Kaussow " +LABEL org.opencontainers.image.authors="Robert Kaussow " +LABEL org.opencontainers.image.title="drone-docker-buildx" +LABEL org.opencontainers.image.url="https://github.com/thegeeklab/drone-docker-buildx" +LABEL org.opencontainers.image.source="https://github.com/thegeeklab/drone-docker-buildx" +LABEL org.opencontainers.image.documentation="https://github.com/thegeeklab/drone-docker-buildx" + +ARG BUILDX_VERSION + +# renovate: datasource=github-releases depName=docker/buildx +ENV BUILDX_VERSION="${BUILDX_VERSION:-0.5.0}" +ENV DOCKER_HOST=unix:///var/run/docker.sock + +RUN apk --update add --virtual .build-deps curl && \ + mkdir -p /usr/lib/docker/cli-plugins/ && \ + curl -SsL -o /usr/lib/docker/cli-plugins/docker-buildx "https://github.com/docker/buildx/releases/download/v${BUILDX_VERSION}/buildx-v${BUILDX_VERSION}.linux-amd64" && \ + chmod 755 /usr/lib/docker/cli-plugins/docker-buildx && \ + apk del .build-deps && \ + rm -rf /var/cache/apk/* && \ + rm -rf /tmp/* + +ADD release/linux/amd64/drone-docker-buildx /bin/ + +ENTRYPOINT ["/usr/local/bin/dockerd-entrypoint.sh", "drone-docker-buildx"] diff --git a/docker/Dockerfile.arm b/docker/Dockerfile.arm new file mode 100644 index 0000000..849eeaa --- /dev/null +++ b/docker/Dockerfile.arm @@ -0,0 +1,26 @@ +FROM amd64/docker:20.10-dind + +LABEL maintainer="Robert Kaussow " +LABEL org.opencontainers.image.authors="Robert Kaussow " +LABEL org.opencontainers.image.title="drone-docker-buildx" +LABEL org.opencontainers.image.url="https://github.com/thegeeklab/drone-docker-buildx" +LABEL org.opencontainers.image.source="https://github.com/thegeeklab/drone-docker-buildx" +LABEL org.opencontainers.image.documentation="https://github.com/thegeeklab/drone-docker-buildx" + +ARG BUILDX_VERSION + +# renovate: datasource=github-releases depName=docker/buildx +ENV BUILDX_VERSION="${BUILDX_VERSION:-0.5.0}" +ENV DOCKER_HOST=unix:///var/run/docker.sock + +RUN apk --update add --virtual .build-deps curl && \ + mkdir -p /usr/lib/docker/cli-plugins/ && \ + curl -SsL -o /usr/lib/docker/cli-plugins/docker-buildx "https://github.com/docker/buildx/releases/download/v${BUILDX_VERSION}/buildx-v${BUILDX_VERSION}.linux-amd64" && \ + chmod 755 /usr/lib/docker/cli-plugins/docker-buildx && \ + apk del .build-deps && \ + rm -rf /var/cache/apk/* && \ + rm -rf /tmp/* + +ADD release/linux/amd64/drone-docker-buildx /bin/ + +ENTRYPOINT ["/usr/local/bin/dockerd-entrypoint.sh", "drone-docker-buildx"] diff --git a/docker/Dockerfile.arm64 b/docker/Dockerfile.arm64 new file mode 100644 index 0000000..db5e863 --- /dev/null +++ b/docker/Dockerfile.arm64 @@ -0,0 +1,26 @@ +FROM amd664v8/docker:20.10-dind + +LABEL maintainer="Robert Kaussow " +LABEL org.opencontainers.image.authors="Robert Kaussow " +LABEL org.opencontainers.image.title="drone-docker-buildx" +LABEL org.opencontainers.image.url="https://github.com/thegeeklab/drone-docker-buildx" +LABEL org.opencontainers.image.source="https://github.com/thegeeklab/drone-docker-buildx" +LABEL org.opencontainers.image.documentation="https://github.com/thegeeklab/drone-docker-buildx" + +ARG BUILDX_VERSION + +# renovate: datasource=github-releases depName=docker/buildx +ENV BUILDX_VERSION="${BUILDX_VERSION:-0.5.0}" +ENV DOCKER_HOST=unix:///var/run/docker.sock + +RUN apk --update add --virtual .build-deps curl && \ + mkdir -p /usr/lib/docker/cli-plugins/ && \ + curl -SsL -o /usr/lib/docker/cli-plugins/docker-buildx "https://github.com/docker/buildx/releases/download/v${BUILDX_VERSION}/buildx-v${BUILDX_VERSION}.linux-amd64" && \ + chmod 755 /usr/lib/docker/cli-plugins/docker-buildx && \ + apk del .build-deps && \ + rm -rf /var/cache/apk/* && \ + rm -rf /tmp/* + +ADD release/linux/amd64/drone-docker-buildx /bin/ + +ENTRYPOINT ["/usr/local/bin/dockerd-entrypoint.sh", "drone-docker-buildx"] diff --git a/docker/acr/Dockerfile.linux.amd64 b/docker/acr/Dockerfile.linux.amd64 deleted file mode 100644 index 7de72ed..0000000 --- a/docker/acr/Dockerfile.linux.amd64 +++ /dev/null @@ -1,4 +0,0 @@ -FROM plugins/docker:linux-amd64 - -ADD release/linux/amd64/drone-acr /bin/ -ENTRYPOINT ["/usr/local/bin/dockerd-entrypoint.sh", "/bin/drone-acr"] diff --git a/docker/acr/Dockerfile.linux.arm b/docker/acr/Dockerfile.linux.arm deleted file mode 100644 index c989857..0000000 --- a/docker/acr/Dockerfile.linux.arm +++ /dev/null @@ -1,4 +0,0 @@ -FROM plugins/docker:linux-arm - -ADD release/linux/arm/drone-acr /bin/ -ENTRYPOINT ["/usr/local/bin/dockerd-entrypoint.sh", "/bin/drone-acr"] diff --git a/docker/acr/Dockerfile.linux.arm64 b/docker/acr/Dockerfile.linux.arm64 deleted file mode 100644 index 772022d..0000000 --- a/docker/acr/Dockerfile.linux.arm64 +++ /dev/null @@ -1,4 +0,0 @@ -FROM plugins/docker:linux-arm64 - -ADD release/linux/arm64/drone-acr /bin/ -ENTRYPOINT ["/usr/local/bin/dockerd-entrypoint.sh", "/bin/drone-acr"] diff --git a/docker/acr/Dockerfile.windows.1803 b/docker/acr/Dockerfile.windows.1803 deleted file mode 100644 index f7b3fdd..0000000 --- a/docker/acr/Dockerfile.windows.1803 +++ /dev/null @@ -1,10 +0,0 @@ -# escape=` -FROM plugins/docker:windows-1803 - -LABEL maintainer="Drone.IO Community " ` - org.label-schema.name="Drone ACR" ` - org.label-schema.vendor="Drone.IO Community" ` - org.label-schema.schema-version="1.0" - -ADD release/windows/amd64/drone-acr.exe C:/bin/drone-acr.exe -ENTRYPOINT [ "C:\\bin\\drone-acr.exe" ] diff --git a/docker/acr/Dockerfile.windows.1809 b/docker/acr/Dockerfile.windows.1809 deleted file mode 100644 index dfa264d..0000000 --- a/docker/acr/Dockerfile.windows.1809 +++ /dev/null @@ -1,10 +0,0 @@ -# escape=` -FROM plugins/docker:windows-1809 - -LABEL maintainer="Drone.IO Community " ` - org.label-schema.name="Drone ACR" ` - org.label-schema.vendor="Drone.IO Community" ` - org.label-schema.schema-version="1.0" - -ADD release/windows/amd64/drone-acr.exe C:/bin/drone-acr.exe -ENTRYPOINT [ "C:\\bin\\drone-acr.exe" ] diff --git a/docker/acr/manifest.tmpl b/docker/acr/manifest.tmpl deleted file mode 100644 index d1acb34..0000000 --- a/docker/acr/manifest.tmpl +++ /dev/null @@ -1,37 +0,0 @@ -image: plugins/acr:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}} -{{#if build.tags}} -tags: -{{#each build.tags}} - - {{this}} -{{/each}} -{{/if}} -manifests: - - - image: plugins/acr:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64 - platform: - architecture: amd64 - os: linux - - - image: plugins/acr:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64 - platform: - architecture: arm64 - os: linux - variant: v8 - - - image: plugins/acr:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm - platform: - architecture: arm - os: linux - variant: v7 - - - image: plugins/acr:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1803 - platform: - architecture: amd64 - os: windows - version: 1803 - - - image: plugins/acr:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1809 - platform: - architecture: amd64 - os: windows - version: 1809 diff --git a/docker/docker/Dockerfile.linux.amd64 b/docker/docker/Dockerfile.linux.amd64 deleted file mode 100644 index c39c578..0000000 --- a/docker/docker/Dockerfile.linux.amd64 +++ /dev/null @@ -1,6 +0,0 @@ -FROM docker:19.03.8-dind - -ENV DOCKER_HOST=unix:///var/run/docker.sock - -ADD release/linux/amd64/drone-docker /bin/ -ENTRYPOINT ["/usr/local/bin/dockerd-entrypoint.sh", "/bin/drone-docker"] diff --git a/docker/docker/Dockerfile.linux.arm b/docker/docker/Dockerfile.linux.arm deleted file mode 100644 index 1a8d8b3..0000000 --- a/docker/docker/Dockerfile.linux.arm +++ /dev/null @@ -1,6 +0,0 @@ -FROM arm32v6/docker:19.03.8-dind - -ENV DOCKER_HOST=unix:///var/run/docker.sock - -ADD release/linux/arm/drone-docker /bin/ -ENTRYPOINT ["/usr/local/bin/dockerd-entrypoint.sh", "/bin/drone-docker"] diff --git a/docker/docker/Dockerfile.linux.arm64 b/docker/docker/Dockerfile.linux.arm64 deleted file mode 100644 index 2a70c6a..0000000 --- a/docker/docker/Dockerfile.linux.arm64 +++ /dev/null @@ -1,6 +0,0 @@ -FROM arm64v8/docker:19.03.8-dind - -ENV DOCKER_HOST=unix:///var/run/docker.sock - -ADD release/linux/arm64/drone-docker /bin/ -ENTRYPOINT ["/usr/local/bin/dockerd-entrypoint.sh", "/bin/drone-docker"] diff --git a/docker/docker/Dockerfile.windows.1803 b/docker/docker/Dockerfile.windows.1803 deleted file mode 100644 index 41352d7..0000000 --- a/docker/docker/Dockerfile.windows.1803 +++ /dev/null @@ -1,26 +0,0 @@ -# escape=` -FROM mcr.microsoft.com/windows/servercore:1803 as download - -SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] - -ENV DOCKER_VERSION 18.09.1 - -RUN Invoke-WebRequest 'http://constexpr.org/innoextract/files/innoextract-1.6-windows.zip' -OutFile 'innoextract.zip' -UseBasicParsing ; ` - Expand-Archive innoextract.zip -DestinationPath C:\ ; ` - Remove-Item -Path innoextract.zip - -RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 ; ` - Invoke-WebRequest $('https://github.com/docker/toolbox/releases/download/v{0}/DockerToolbox-{0}.exe' -f $env:DOCKER_VERSION) -OutFile 'dockertoolbox.exe' -UseBasicParsing -RUN /innoextract.exe dockertoolbox.exe - -FROM plugins/base:windows-1803 - -LABEL maintainer="Drone.IO Community " ` - org.label-schema.name="Drone Docker" ` - org.label-schema.vendor="Drone.IO Community" ` - org.label-schema.schema-version="1.0" - -COPY --from=download /windows/system32/netapi32.dll /windows/system32/netapi32.dll -COPY --from=download /app/docker.exe C:/bin/docker.exe -ADD release/windows/amd64/drone-docker.exe C:/bin/drone-docker.exe -ENTRYPOINT [ "C:\\bin\\drone-docker.exe" ] diff --git a/docker/docker/Dockerfile.windows.1809 b/docker/docker/Dockerfile.windows.1809 deleted file mode 100644 index bffc4b4..0000000 --- a/docker/docker/Dockerfile.windows.1809 +++ /dev/null @@ -1,27 +0,0 @@ -# escape=` -FROM mcr.microsoft.com/windows/servercore:1809 as download - -SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] - -ENV DOCKER_VERSION 18.09.1 - -RUN Invoke-WebRequest 'http://constexpr.org/innoextract/files/innoextract-1.6-windows.zip' -OutFile 'innoextract.zip' -UseBasicParsing ; ` - Expand-Archive innoextract.zip -DestinationPath C:\ ; ` - Remove-Item -Path innoextract.zip - -RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 ; ` - Invoke-WebRequest $('https://github.com/docker/toolbox/releases/download/v{0}/DockerToolbox-{0}.exe' -f $env:DOCKER_VERSION) -OutFile 'dockertoolbox.exe' -UseBasicParsing -RUN /innoextract.exe dockertoolbox.exe - -FROM mcr.microsoft.com/windows/nanoserver:1809 -USER ContainerAdministrator - -LABEL maintainer="Drone.IO Community " ` - org.label-schema.name="Drone Docker" ` - org.label-schema.vendor="Drone.IO Community" ` - org.label-schema.schema-version="1.0" - -COPY --from=download /windows/system32/netapi32.dll /windows/system32/netapi32.dll -COPY --from=download /app/docker.exe C:/bin/docker.exe -ADD release/windows/amd64/drone-docker.exe C:/bin/drone-docker.exe -ENTRYPOINT [ "C:\\bin\\drone-docker.exe" ] diff --git a/docker/docker/Dockerfile.windows.1903 b/docker/docker/Dockerfile.windows.1903 deleted file mode 100644 index a6eadef..0000000 --- a/docker/docker/Dockerfile.windows.1903 +++ /dev/null @@ -1,28 +0,0 @@ -# escape=` -FROM mcr.microsoft.com/windows/servercore:1903 as download - -SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] - -ENV DOCKER_VERSION 19.03.1 - -RUN Invoke-WebRequest 'http://constexpr.org/innoextract/files/innoextract-1.7-windows.zip' -OutFile 'innoextract.zip' -UseBasicParsing ; ` - Expand-Archive innoextract.zip -DestinationPath C:\ ; ` - Remove-Item -Path innoextract.zip - -RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 ; ` - Invoke-WebRequest $('https://github.com/docker/toolbox/releases/download/v{0}/DockerToolbox-{0}.exe' -f $env:DOCKER_VERSION) -OutFile 'dockertoolbox.exe' -UseBasicParsing -RUN /innoextract.exe dockertoolbox.exe - -FROM mcr.microsoft.com/windows/nanoserver:1903 -USER ContainerAdministrator - -LABEL maintainer="Drone.IO Community " ` - org.label-schema.name="Drone Docker" ` - org.label-schema.vendor="Drone.IO Community" ` - org.label-schema.schema-version="1.0" - -RUN mkdir C:\bin -COPY --from=download /windows/system32/netapi32.dll /windows/system32/netapi32.dll -COPY --from=download /app/docker.exe C:/bin/docker.exe -ADD release/windows/amd64/drone-docker.exe C:/bin/drone-docker.exe -ENTRYPOINT [ "C:\\bin\\drone-docker.exe" ] diff --git a/docker/docker/Dockerfile.windows.1909 b/docker/docker/Dockerfile.windows.1909 deleted file mode 100644 index e8dc3ae..0000000 --- a/docker/docker/Dockerfile.windows.1909 +++ /dev/null @@ -1,28 +0,0 @@ -# escape=` -FROM mcr.microsoft.com/windows/servercore:1909 as download - -SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] - -ENV DOCKER_VERSION 19.03.1 - -RUN Invoke-WebRequest 'http://constexpr.org/innoextract/files/innoextract-1.7-windows.zip' -OutFile 'innoextract.zip' -UseBasicParsing ; ` - Expand-Archive innoextract.zip -DestinationPath C:\ ; ` - Remove-Item -Path innoextract.zip - -RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 ; ` - Invoke-WebRequest $('https://github.com/docker/toolbox/releases/download/v{0}/DockerToolbox-{0}.exe' -f $env:DOCKER_VERSION) -OutFile 'dockertoolbox.exe' -UseBasicParsing -RUN /innoextract.exe dockertoolbox.exe - -FROM mcr.microsoft.com/windows/nanoserver:1909 -USER ContainerAdministrator - -LABEL maintainer="Drone.IO Community " ` - org.label-schema.name="Drone Docker" ` - org.label-schema.vendor="Drone.IO Community" ` - org.label-schema.schema-version="1.0" - -RUN mkdir C:\bin -COPY --from=download /windows/system32/netapi32.dll /windows/system32/netapi32.dll -COPY --from=download /app/docker.exe C:/bin/docker.exe -ADD release/windows/amd64/drone-docker.exe C:/bin/drone-docker.exe -ENTRYPOINT [ "C:\\bin\\drone-docker.exe" ] diff --git a/docker/docker/manifest.tmpl b/docker/docker/manifest.tmpl deleted file mode 100644 index 4766c36..0000000 --- a/docker/docker/manifest.tmpl +++ /dev/null @@ -1,49 +0,0 @@ -image: plugins/docker:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}} -{{#if build.tags}} -tags: -{{#each build.tags}} - - {{this}} -{{/each}} -{{/if}} -manifests: - - - image: plugins/docker:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64 - platform: - architecture: amd64 - os: linux - - - image: plugins/docker:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64 - platform: - architecture: arm64 - os: linux - variant: v8 - - - image: plugins/docker:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm - platform: - architecture: arm - os: linux - variant: v7 - - - image: plugins/docker:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1803 - platform: - architecture: amd64 - os: windows - version: 1803 - - - image: plugins/docker:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1809-amd64 - platform: - architecture: amd64 - os: windows - version: 1809 - - - image: plugins/docker:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1903-amd64 - platform: - architecture: amd64 - os: windows - version: 1903 - - - image: plugins/docker:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1909-amd64 - platform: - architecture: amd64 - os: windows - version: 1909 diff --git a/docker/ecr/Dockerfile.linux.amd64 b/docker/ecr/Dockerfile.linux.amd64 deleted file mode 100644 index 5f7ab8b..0000000 --- a/docker/ecr/Dockerfile.linux.amd64 +++ /dev/null @@ -1,4 +0,0 @@ -FROM plugins/docker:linux-amd64 - -ADD release/linux/amd64/drone-ecr /bin/ -ENTRYPOINT ["/usr/local/bin/dockerd-entrypoint.sh", "/bin/drone-ecr"] diff --git a/docker/ecr/Dockerfile.linux.arm b/docker/ecr/Dockerfile.linux.arm deleted file mode 100644 index f8dd9e3..0000000 --- a/docker/ecr/Dockerfile.linux.arm +++ /dev/null @@ -1,4 +0,0 @@ -FROM plugins/docker:linux-arm - -ADD release/linux/arm/drone-ecr /bin/ -ENTRYPOINT ["/usr/local/bin/dockerd-entrypoint.sh", "/bin/drone-ecr"] diff --git a/docker/ecr/Dockerfile.linux.arm64 b/docker/ecr/Dockerfile.linux.arm64 deleted file mode 100644 index 83ed26a..0000000 --- a/docker/ecr/Dockerfile.linux.arm64 +++ /dev/null @@ -1,4 +0,0 @@ -FROM plugins/docker:linux-arm64 - -ADD release/linux/arm64/drone-ecr /bin/ -ENTRYPOINT ["/usr/local/bin/dockerd-entrypoint.sh", "/bin/drone-ecr"] diff --git a/docker/ecr/Dockerfile.windows.1803 b/docker/ecr/Dockerfile.windows.1803 deleted file mode 100644 index 367cfb2..0000000 --- a/docker/ecr/Dockerfile.windows.1803 +++ /dev/null @@ -1,10 +0,0 @@ -# escape=` -FROM plugins/docker:windows-1803 - -LABEL maintainer="Drone.IO Community " ` - org.label-schema.name="Drone ECR" ` - org.label-schema.vendor="Drone.IO Community" ` - org.label-schema.schema-version="1.0" - -ADD release/windows/amd64/drone-ecr.exe C:/bin/drone-ecr.exe -ENTRYPOINT [ "C:\\bin\\drone-ecr.exe" ] diff --git a/docker/ecr/Dockerfile.windows.1809 b/docker/ecr/Dockerfile.windows.1809 deleted file mode 100644 index 4d12228..0000000 --- a/docker/ecr/Dockerfile.windows.1809 +++ /dev/null @@ -1,10 +0,0 @@ -# escape=` -FROM plugins/docker:windows-1809 - -LABEL maintainer="Drone.IO Community " ` - org.label-schema.name="Drone ECR" ` - org.label-schema.vendor="Drone.IO Community" ` - org.label-schema.schema-version="1.0" - -ADD release/windows/amd64/drone-ecr.exe C:/bin/drone-ecr.exe -ENTRYPOINT [ "C:\\bin\\drone-ecr.exe" ] diff --git a/docker/ecr/manifest.tmpl b/docker/ecr/manifest.tmpl deleted file mode 100644 index 8af16c7..0000000 --- a/docker/ecr/manifest.tmpl +++ /dev/null @@ -1,37 +0,0 @@ -image: plugins/ecr:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}} -{{#if build.tags}} -tags: -{{#each build.tags}} - - {{this}} -{{/each}} -{{/if}} -manifests: - - - image: plugins/ecr:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64 - platform: - architecture: amd64 - os: linux - - - image: plugins/ecr:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64 - platform: - architecture: arm64 - os: linux - variant: v8 - - - image: plugins/ecr:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm - platform: - architecture: arm - os: linux - variant: v7 - - - image: plugins/ecr:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1803 - platform: - architecture: amd64 - os: windows - version: 1803 - - - image: plugins/ecr:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1809 - platform: - architecture: amd64 - os: windows - version: 1809 diff --git a/docker/gcr/Dockerfile.linux.amd64 b/docker/gcr/Dockerfile.linux.amd64 deleted file mode 100644 index b756e04..0000000 --- a/docker/gcr/Dockerfile.linux.amd64 +++ /dev/null @@ -1,4 +0,0 @@ -FROM plugins/docker:linux-amd64 - -ADD release/linux/amd64/drone-gcr /bin/ -ENTRYPOINT ["/usr/local/bin/dockerd-entrypoint.sh", "/bin/drone-gcr"] diff --git a/docker/gcr/Dockerfile.linux.arm b/docker/gcr/Dockerfile.linux.arm deleted file mode 100644 index 718ce0f..0000000 --- a/docker/gcr/Dockerfile.linux.arm +++ /dev/null @@ -1,4 +0,0 @@ -FROM plugins/docker:linux-arm - -ADD release/linux/arm/drone-gcr /bin/ -ENTRYPOINT ["/usr/local/bin/dockerd-entrypoint.sh", "/bin/drone-gcr"] diff --git a/docker/gcr/Dockerfile.linux.arm64 b/docker/gcr/Dockerfile.linux.arm64 deleted file mode 100644 index 396e373..0000000 --- a/docker/gcr/Dockerfile.linux.arm64 +++ /dev/null @@ -1,4 +0,0 @@ -FROM plugins/docker:linux-arm64 - -ADD release/linux/arm64/drone-gcr /bin/ -ENTRYPOINT ["/usr/local/bin/dockerd-entrypoint.sh", "/bin/drone-gcr"] diff --git a/docker/gcr/Dockerfile.windows.1803 b/docker/gcr/Dockerfile.windows.1803 deleted file mode 100644 index 76bac6f..0000000 --- a/docker/gcr/Dockerfile.windows.1803 +++ /dev/null @@ -1,10 +0,0 @@ -# escape=` -FROM plugins/docker:windows-1803 - -LABEL maintainer="Drone.IO Community " ` - org.label-schema.name="Drone GCR" ` - org.label-schema.vendor="Drone.IO Community" ` - org.label-schema.schema-version="1.0" - -ADD release/windows/amd64/drone-gcr.exe C:/bin/drone-gcr.exe -ENTRYPOINT [ "C:\\bin\\drone-gcr.exe" ] diff --git a/docker/gcr/Dockerfile.windows.1809 b/docker/gcr/Dockerfile.windows.1809 deleted file mode 100644 index 1b1134b..0000000 --- a/docker/gcr/Dockerfile.windows.1809 +++ /dev/null @@ -1,10 +0,0 @@ -# escape=` -FROM plugins/docker:windows-1809 - -LABEL maintainer="Drone.IO Community " ` - org.label-schema.name="Drone GCR" ` - org.label-schema.vendor="Drone.IO Community" ` - org.label-schema.schema-version="1.0" - -ADD release/windows/amd64/drone-gcr.exe C:/bin/drone-gcr.exe -ENTRYPOINT [ "C:\\bin\\drone-gcr.exe" ] diff --git a/docker/gcr/manifest.tmpl b/docker/gcr/manifest.tmpl deleted file mode 100644 index 8b9231a..0000000 --- a/docker/gcr/manifest.tmpl +++ /dev/null @@ -1,37 +0,0 @@ -image: plugins/gcr:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}} -{{#if build.tags}} -tags: -{{#each build.tags}} - - {{this}} -{{/each}} -{{/if}} -manifests: - - - image: plugins/gcr:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64 - platform: - architecture: amd64 - os: linux - - - image: plugins/gcr:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64 - platform: - architecture: arm64 - os: linux - variant: v8 - - - image: plugins/gcr:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm - platform: - architecture: arm - os: linux - variant: v7 - - - image: plugins/gcr:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1803 - platform: - architecture: amd64 - os: windows - version: 1803 - - - image: plugins/gcr:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}windows-1809 - platform: - architecture: amd64 - os: windows - version: 1809 diff --git a/docker/heroku/Dockerfile.linux.amd64 b/docker/heroku/Dockerfile.linux.amd64 deleted file mode 100644 index e2e7e52..0000000 --- a/docker/heroku/Dockerfile.linux.amd64 +++ /dev/null @@ -1,4 +0,0 @@ -FROM plugins/docker:linux-amd64 - -ADD release/linux/amd64/drone-heroku /bin/ -ENTRYPOINT ["/usr/local/bin/dockerd-entrypoint.sh", "/bin/drone-heroku"] diff --git a/docker/heroku/Dockerfile.linux.arm b/docker/heroku/Dockerfile.linux.arm deleted file mode 100644 index b233cca..0000000 --- a/docker/heroku/Dockerfile.linux.arm +++ /dev/null @@ -1,4 +0,0 @@ -FROM plugins/docker:linux-arm - -ADD release/linux/arm/drone-heroku /bin/ -ENTRYPOINT ["/usr/local/bin/dockerd-entrypoint.sh", "/bin/drone-heroku"] diff --git a/docker/heroku/Dockerfile.linux.arm64 b/docker/heroku/Dockerfile.linux.arm64 deleted file mode 100644 index e49f7c6..0000000 --- a/docker/heroku/Dockerfile.linux.arm64 +++ /dev/null @@ -1,4 +0,0 @@ -FROM plugins/docker:linux-arm64 - -ADD release/linux/arm64/drone-heroku /bin/ -ENTRYPOINT ["/usr/local/bin/dockerd-entrypoint.sh", "/bin/drone-heroku"] diff --git a/docker/heroku/manifest.tmpl b/docker/heroku/manifest.tmpl deleted file mode 100644 index 28ed9a5..0000000 --- a/docker/heroku/manifest.tmpl +++ /dev/null @@ -1,25 +0,0 @@ -image: plugins/heroku:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}} -{{#if build.tags}} -tags: -{{#each build.tags}} - - {{this}} -{{/each}} -{{/if}} -manifests: - - - image: plugins/heroku:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64 - platform: - architecture: amd64 - os: linux - - - image: plugins/heroku:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm64 - platform: - architecture: arm64 - os: linux - variant: v8 - - - image: plugins/heroku:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-arm - platform: - architecture: arm - os: linux - variant: v7 diff --git a/go.mod b/go.mod index 36080ec..2680ea2 100644 --- a/go.mod +++ b/go.mod @@ -2,11 +2,16 @@ module github.com/drone-plugins/drone-docker require ( github.com/aws/aws-sdk-go v1.26.7 - github.com/coreos/go-semver v0.2.0 + github.com/coreos/go-semver v0.3.0 + github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect github.com/joho/godotenv v1.3.0 - github.com/sirupsen/logrus v1.3.0 - github.com/urfave/cli v1.22.2 - golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e // indirect + github.com/konsorten/go-windows-terminal-sequences v1.0.3 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/sirupsen/logrus v1.7.0 + github.com/stretchr/objx v0.1.1 // indirect + github.com/urfave/cli v1.22.5 + golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad // indirect + golang.org/x/sys v0.0.0-20210110051926-789bb1bd4061 // indirect golang.org/x/text v0.3.0 // indirect ) diff --git a/go.sum b/go.sum index e684144..f442229 100644 --- a/go.sum +++ b/go.sum @@ -3,8 +3,12 @@ github.com/aws/aws-sdk-go v1.26.7 h1:ObjEnmzvSdYy8KVd3me7v/UMyCn81inLy2SyoIPoBkg github.com/aws/aws-sdk-go v1.26.7/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/coreos/go-semver v0.2.0 h1:3Jm3tLmsgAYcjC+4Up7hJrFBPr+n7rAqYeSw/SZazuY= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= @@ -13,14 +17,19 @@ github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.3.0 h1:hI/7Q+DtNZ2kINb6qt/lS+IyXnHQe9e90POfeewL/ME= github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -28,12 +37,22 @@ github.com/urfave/cli v1.20.0 h1:fDqGv3UG/4jbVl/QkFwEdddtEDjh/5Ov6X+0B/3bPaw= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.2 h1:gsqYFH8bb9ekPA12kRo0hfjngWQjkJPlN9R0N78BoUo= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.5 h1:lNq9sAHXK2qfdI8W+GRItjCEkI+2oR4d+MEHy1CKXoU= +github.com/urfave/cli v1.22.5/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793 h1:u+LnwYTOOW7Ukr/fppxEb1Nwz0AtPflrblfvUudpo+I= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI+Ei4I1nO5Jh72wfHlg= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33 h1:I6FyU15t786LL7oL/hn43zqTuEGr4PN7F4XJ1p4E3Y8= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210110051926-789bb1bd4061 h1:DQmQoKxQWtyybCtX/3dIuDBcAhFszqq8YiNeS6sNu1c= +golang.org/x/sys v0.0.0-20210110051926-789bb1bd4061/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= diff --git a/pipeline.libsonnet b/pipeline.libsonnet deleted file mode 100644 index 4d44a41..0000000 --- a/pipeline.libsonnet +++ /dev/null @@ -1,206 +0,0 @@ -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/' + name; - local extension = if is_windows then '.exe' else ''; - local depends_on = if name == 'docker' then [test_pipeline_name] else [tag + '-docker']; - { - kind: 'pipeline', - name: tag + '-' + name, - 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 + '/drone-' + name + extension + ' ./cmd/drone-' + name, - ], - 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 + '/drone-' + name + extension + ' ./cmd/drone-' + name, - ], - when: { - event: ['tag'], - }, - }, - if name == "docker" then { - name: 'executable', - image: golang, - pull: 'always', - commands: [ - './release/' + os + '/' + arch + '/drone-' + name + extension + ' --help', - ], - }, - { - name: 'dryrun', - image: 'plugins/docker:' + tag, - pull: 'always', - settings: { - dry_run: true, - tags: tag, - dockerfile: 'docker/'+ name +'/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/' + name + '/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: depends_on, - volumes: if is_windows then [{ name: windows_pipe_volume, host: { path: windows_pipe } }], - }, - - notifications(name, os='linux', arch='amd64', version='', depends_on=[]):: - { - kind: 'pipeline', - name: 'notifications-' + name, - 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/' + name + '/manifest.tmpl', - ignore_missing: true, - auto_tag: true, - }, - }, - { - name: 'microbadger', - image: 'plugins/webhook', - pull: 'always', - settings: { - urls: { from_secret: 'microbadger_' + name }, - }, - }, - ], - depends_on: [x + '-' + name for x in depends_on], - trigger: { - ref: [ - 'refs/heads/master', - 'refs/tags/**', - ], - }, - }, -} diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..bf73d46 --- /dev/null +++ b/renovate.json @@ -0,0 +1,4 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["github>thegeeklab/renovate-presets"] +}