From 10d80230c92fd822a80a077b9f92ebdff18abc85 Mon Sep 17 00:00:00 2001 From: Robert Kaussow Date: Sun, 19 Sep 2021 14:30:27 +0200 Subject: [PATCH] fix drone yaml format and switch to drone-matrix plugin --- .drone.jsonnet | 2 +- .drone.yml | 887 ++++++++++++++++++++++++++----------------------- 2 files changed, 473 insertions(+), 416 deletions(-) diff --git a/.drone.jsonnet b/.drone.jsonnet index 5f0ea90..157e0c5 100644 --- a/.drone.jsonnet +++ b/.drone.jsonnet @@ -361,7 +361,7 @@ local PipelineNotifications = { }, { name: 'matrix', - image: 'plugins/matrix', + image: 'thegeeklab/drone-matrix', settings: { homeserver: { from_secret: 'matrix_homeserver' }, roomid: { from_secret: 'matrix_roomid' }, diff --git a/.drone.yml b/.drone.yml index e7cd622..bedcbb0 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,477 +1,534 @@ --- -image_pull_secrets: -- docker_config kind: pipeline name: test + platform: - arch: amd64 os: linux + arch: amd64 + steps: -- commands: - - go run honnef.co/go/tools/cmd/staticcheck ./... - image: golang:1.16 - name: staticcheck - volumes: + - name: staticcheck + image: golang:1.16 + commands: + - go run honnef.co/go/tools/cmd/staticcheck ./... + volumes: + - name: gopath + path: /go + + - name: lint + image: golang:1.16 + commands: + - go run golang.org/x/lint/golint -set_exit_status ./... + volumes: + - name: gopath + path: /go + + - name: vet + image: golang:1.16 + commands: + - go vet ./... + volumes: + - name: gopath + path: /go + + - name: test + image: golang:1.16 + commands: + - go test -cover ./... + volumes: + - name: gopath + path: /go + +volumes: - name: gopath - path: /go -- commands: - - go run golang.org/x/lint/golint -set_exit_status ./... - image: golang:1.16 - name: lint - volumes: - - name: gopath - path: /go -- commands: - - go vet ./... - image: golang:1.16 - name: vet - volumes: - - name: gopath - path: /go -- commands: - - go test -cover ./... - image: golang:1.16 - name: test - volumes: - - name: gopath - path: /go + temp: {} + +image_pull_secrets: + - docker_config + trigger: ref: - - refs/heads/main - - refs/tags/** - - refs/pull/** -volumes: -- name: gopath - temp: {} + - refs/heads/main + - refs/tags/** + - refs/pull/** + --- -depends_on: -- test -image_pull_secrets: -- docker_config kind: pipeline name: build-binaries + platform: - arch: amd64 os: linux + arch: amd64 + steps: -- commands: - - '[ -z "${DRONE_TAG}" ] && BUILD_VERSION=${DRONE_COMMIT_SHA:0:8} || BUILD_VERSION=${DRONE_TAG##v}' - - mkdir -p release/ - - cd cmd/drone-docker && xgo -ldflags "-s -w -X main.version=$BUILD_VERSION" -tags - netgo -targets 'linux/amd64,linux/arm-6,linux/arm-7,linux/arm64' -out drone-docker - . - - mv /build/* /drone/src/release/ - - ls -l /drone/src/release/ - image: techknowlogick/xgo:go-1.16.x - name: build -- commands: - - $(find release/ -executable -type f | grep drone-docker-linux-amd64) --help - image: alpine - name: executable -- commands: - - apk add upx - - find release/ -maxdepth 1 -executable -type f -exec upx {} \; - - ls -lh release/ - image: alpine - name: compress -- commands: - - cd release/ && sha256sum * > sha256sum.txt - image: alpine - name: checksum -- commands: - - git fetch -tq - - git-chglog --no-color --no-emoji -o CHANGELOG.md ${DRONE_TAG:---next-tag unreleased - unreleased} - image: thegeeklab/git-chglog - name: changelog-generate -- commands: - - prettier CHANGELOG.md - - prettier -w CHANGELOG.md - image: thegeeklab/alpine-tools - name: changelog-format -- image: plugins/github-release - name: publish - settings: - api_key: - from_secret: github_token - files: - - release/* - note: CHANGELOG.md - overwrite: true - title: ${DRONE_TAG} - when: - ref: - - refs/tags/** + - name: build + image: techknowlogick/xgo:go-1.16.x + commands: + - "[ -z \"${DRONE_TAG}\" ] && BUILD_VERSION=${DRONE_COMMIT_SHA:0:8} || BUILD_VERSION=${DRONE_TAG##v}" + - mkdir -p release/ + - cd cmd/drone-docker && xgo -ldflags "-s -w -X main.version=$BUILD_VERSION" -tags netgo -targets 'linux/amd64,linux/arm-6,linux/arm-7,linux/arm64' -out drone-docker . + - mv /build/* /drone/src/release/ + - ls -l /drone/src/release/ + + - name: executable + image: alpine + commands: + - $(find release/ -executable -type f | grep drone-docker-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: changelog-generate + image: thegeeklab/git-chglog + commands: + - git fetch -tq + - git-chglog --no-color --no-emoji -o CHANGELOG.md ${DRONE_TAG:---next-tag unreleased unreleased} + + - name: changelog-format + image: thegeeklab/alpine-tools + commands: + - prettier CHANGELOG.md + - prettier -w CHANGELOG.md + + - 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/** + +image_pull_secrets: + - docker_config + trigger: ref: - - refs/heads/main - - refs/tags/** - - refs/pull/** ---- + - refs/heads/main + - refs/tags/** + - refs/pull/** + depends_on: -- test -image_pull_secrets: -- docker_config + - test + +--- kind: pipeline name: build-container-amd64 + platform: - arch: amd64 os: linux + arch: amd64 + steps: -- 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/amd64/drone-docker - ./cmd/drone-docker - image: golang:1.16 - name: build -- depends_on: - - build - image: plugins/docker:19 - name: dryrun - settings: - config: - from_secret: docker_config - dockerfile: docker/Dockerfile.amd64 - dry_run: true - password: - from_secret: docker_password - repo: thegeeklab/${DRONE_REPO_NAME} - username: - from_secret: docker_username - when: - ref: - - refs/pull/** -- depends_on: - - dryrun - image: plugins/docker:19 - name: publish-dockerhub - settings: - auto_tag: true - auto_tag_suffix: amd64 - config: - from_secret: docker_config - dockerfile: docker/Dockerfile.amd64 - password: - from_secret: docker_password - repo: thegeeklab/${DRONE_REPO_NAME} - username: - from_secret: docker_username - when: - ref: - - refs/heads/main - - refs/tags/** -- depends_on: - - dryrun - image: plugins/docker:19 - name: publish-quay - settings: - auto_tag: true - auto_tag_suffix: amd64 - config: - from_secret: docker_config - dockerfile: docker/Dockerfile.amd64 - password: - from_secret: quay_password - registry: quay.io - repo: quay.io/thegeeklab/${DRONE_REPO_NAME} - username: - from_secret: quay_username - when: - ref: - - refs/heads/main - - refs/tags/** + - name: build + image: golang:1.16 + 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/amd64/drone-docker ./cmd/drone-docker + + - name: dryrun + image: plugins/docker:19 + settings: + config: + from_secret: docker_config + dockerfile: docker/Dockerfile.amd64 + dry_run: true + password: + from_secret: docker_password + repo: thegeeklab/${DRONE_REPO_NAME} + username: + from_secret: docker_username + when: + ref: + - refs/pull/** + depends_on: + - build + + - name: publish-dockerhub + image: plugins/docker:19 + settings: + auto_tag: true + auto_tag_suffix: amd64 + config: + from_secret: docker_config + dockerfile: docker/Dockerfile.amd64 + password: + from_secret: docker_password + repo: thegeeklab/${DRONE_REPO_NAME} + username: + from_secret: docker_username + when: + ref: + - refs/heads/main + - refs/tags/** + depends_on: + - dryrun + + - name: publish-quay + image: plugins/docker:19 + settings: + auto_tag: true + auto_tag_suffix: amd64 + config: + from_secret: docker_config + dockerfile: docker/Dockerfile.amd64 + password: + from_secret: quay_password + registry: quay.io + repo: quay.io/thegeeklab/${DRONE_REPO_NAME} + username: + from_secret: quay_username + when: + ref: + - refs/heads/main + - refs/tags/** + depends_on: + - dryrun + +image_pull_secrets: + - docker_config + trigger: ref: - - refs/heads/main - - refs/tags/** - - refs/pull/** ---- + - refs/heads/main + - refs/tags/** + - refs/pull/** + depends_on: -- test -image_pull_secrets: -- docker_config + - test + +--- kind: pipeline name: build-container-arm64 + platform: - arch: arm64 os: linux + arch: arm64 + steps: -- 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/arm64/drone-docker - ./cmd/drone-docker - image: golang:1.16 - name: build -- depends_on: - - build - image: plugins/docker:19 - name: dryrun - settings: - config: - from_secret: docker_config - dockerfile: docker/Dockerfile.arm64 - dry_run: true - password: - from_secret: docker_password - repo: thegeeklab/${DRONE_REPO_NAME} - username: - from_secret: docker_username - when: - ref: - - refs/pull/** -- depends_on: - - dryrun - image: plugins/docker:19 - name: publish-dockerhub - settings: - auto_tag: true - auto_tag_suffix: arm64 - config: - from_secret: docker_config - dockerfile: docker/Dockerfile.arm64 - password: - from_secret: docker_password - repo: thegeeklab/${DRONE_REPO_NAME} - username: - from_secret: docker_username - when: - ref: - - refs/heads/main - - refs/tags/** -- depends_on: - - dryrun - image: plugins/docker:19 - name: publish-quay - settings: - auto_tag: true - auto_tag_suffix: arm64 - config: - from_secret: docker_config - dockerfile: docker/Dockerfile.arm64 - password: - from_secret: quay_password - registry: quay.io - repo: quay.io/thegeeklab/${DRONE_REPO_NAME} - username: - from_secret: quay_username - when: - ref: - - refs/heads/main - - refs/tags/** + - name: build + image: golang:1.16 + 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/arm64/drone-docker ./cmd/drone-docker + + - name: dryrun + image: plugins/docker:19 + settings: + config: + from_secret: docker_config + dockerfile: docker/Dockerfile.arm64 + dry_run: true + password: + from_secret: docker_password + repo: thegeeklab/${DRONE_REPO_NAME} + username: + from_secret: docker_username + when: + ref: + - refs/pull/** + depends_on: + - build + + - name: publish-dockerhub + image: plugins/docker:19 + settings: + auto_tag: true + auto_tag_suffix: arm64 + config: + from_secret: docker_config + dockerfile: docker/Dockerfile.arm64 + password: + from_secret: docker_password + repo: thegeeklab/${DRONE_REPO_NAME} + username: + from_secret: docker_username + when: + ref: + - refs/heads/main + - refs/tags/** + depends_on: + - dryrun + + - name: publish-quay + image: plugins/docker:19 + settings: + auto_tag: true + auto_tag_suffix: arm64 + config: + from_secret: docker_config + dockerfile: docker/Dockerfile.arm64 + password: + from_secret: quay_password + registry: quay.io + repo: quay.io/thegeeklab/${DRONE_REPO_NAME} + username: + from_secret: quay_username + when: + ref: + - refs/heads/main + - refs/tags/** + depends_on: + - dryrun + +image_pull_secrets: + - docker_config + trigger: ref: - - refs/heads/main - - refs/tags/** - - refs/pull/** ---- + - refs/heads/main + - refs/tags/** + - refs/pull/** + depends_on: -- test -image_pull_secrets: -- docker_config + - test + +--- kind: pipeline name: build-container-arm + platform: - arch: arm os: linux + arch: arm + steps: -- 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/arm/drone-docker - ./cmd/drone-docker - image: golang:1.16 - name: build -- depends_on: - - build - image: plugins/docker:19 - name: dryrun - settings: - config: - from_secret: docker_config - dockerfile: docker/Dockerfile.arm - dry_run: true - password: - from_secret: docker_password - repo: thegeeklab/${DRONE_REPO_NAME} - username: - from_secret: docker_username - when: - ref: - - refs/pull/** -- depends_on: - - dryrun - image: plugins/docker:19 - name: publish-dockerhub - settings: - auto_tag: true - auto_tag_suffix: arm - config: - from_secret: docker_config - dockerfile: docker/Dockerfile.arm - password: - from_secret: docker_password - repo: thegeeklab/${DRONE_REPO_NAME} - username: - from_secret: docker_username - when: - ref: - - refs/heads/main - - refs/tags/** -- depends_on: - - dryrun - image: plugins/docker:19 - name: publish-quay - settings: - auto_tag: true - auto_tag_suffix: arm - config: - from_secret: docker_config - dockerfile: docker/Dockerfile.arm - password: - from_secret: quay_password - registry: quay.io - repo: quay.io/thegeeklab/${DRONE_REPO_NAME} - username: - from_secret: quay_username - when: - ref: - - refs/heads/main - - refs/tags/** + - name: build + image: golang:1.16 + 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/arm/drone-docker ./cmd/drone-docker + + - name: dryrun + image: plugins/docker:19 + settings: + config: + from_secret: docker_config + dockerfile: docker/Dockerfile.arm + dry_run: true + password: + from_secret: docker_password + repo: thegeeklab/${DRONE_REPO_NAME} + username: + from_secret: docker_username + when: + ref: + - refs/pull/** + depends_on: + - build + + - name: publish-dockerhub + image: plugins/docker:19 + settings: + auto_tag: true + auto_tag_suffix: arm + config: + from_secret: docker_config + dockerfile: docker/Dockerfile.arm + password: + from_secret: docker_password + repo: thegeeklab/${DRONE_REPO_NAME} + username: + from_secret: docker_username + when: + ref: + - refs/heads/main + - refs/tags/** + depends_on: + - dryrun + + - name: publish-quay + image: plugins/docker:19 + settings: + auto_tag: true + auto_tag_suffix: arm + config: + from_secret: docker_config + dockerfile: docker/Dockerfile.arm + password: + from_secret: quay_password + registry: quay.io + repo: quay.io/thegeeklab/${DRONE_REPO_NAME} + username: + from_secret: quay_username + when: + ref: + - refs/heads/main + - refs/tags/** + depends_on: + - dryrun + +image_pull_secrets: + - docker_config + trigger: ref: - - refs/heads/main - - refs/tags/** - - refs/pull/** ---- -concurrency: - limit: 1 + - refs/heads/main + - refs/tags/** + - refs/pull/** + depends_on: -- build-binaries -- build-container-amd64 -- build-container-arm64 -- build-container-arm + - test + +--- kind: pipeline name: docs + platform: - arch: amd64 os: linux + arch: amd64 + +concurrency: + limit: 1 + steps: -- commands: - - markdownlint 'docs/content/**/*.md' 'README.md' 'CONTRIBUTING.md' - image: thegeeklab/markdownlint-cli - name: markdownlint -- commands: - - npm install -g spellchecker-cli - - spellchecker --files '_docs/**/*.md' 'README.md' 'CONTRIBUTING.md' -d .dictionary - -p spell indefinite-article syntax-urls --no-suggestions - environment: - FORCE_COLOR: true - NPM_CONFIG_LOGLEVEL: error - image: node:lts-alpine - name: spellcheck -- image: plugins/gh-pages - name: publish - settings: - pages_directory: _docs/ - password: - from_secret: github_token - target_branch: docs - username: - from_secret: github_username - when: - ref: - - refs/heads/main + - name: markdownlint + image: thegeeklab/markdownlint-cli + commands: + - markdownlint 'docs/content/**/*.md' 'README.md' 'CONTRIBUTING.md' + + - name: spellcheck + image: node:lts-alpine + commands: + - npm install -g spellchecker-cli + - spellchecker --files '_docs/**/*.md' 'README.md' 'CONTRIBUTING.md' -d .dictionary -p spell indefinite-article syntax-urls --no-suggestions + environment: + FORCE_COLOR: true + NPM_CONFIG_LOGLEVEL: error + + - name: publish + image: plugins/gh-pages + settings: + pages_directory: _docs/ + password: + from_secret: github_token + target_branch: docs + username: + from_secret: github_username + when: + ref: + - refs/heads/main + trigger: ref: - - refs/heads/main - - refs/tags/** - - refs/pull/** ---- + - refs/heads/main + - refs/tags/** + - refs/pull/** + depends_on: -- docs -image_pull_secrets: -- docker_config + - build-binaries + - build-container-amd64 + - build-container-arm64 + - build-container-arm + +--- kind: pipeline name: notifications + platform: - arch: amd64 os: linux + arch: amd64 + steps: -- image: plugins/manifest - name: manifest-dockerhub - settings: - auto_tag: true - ignore_missing: true - password: - from_secret: docker_password - spec: docker/manifest.tmpl - username: - from_secret: docker_username - when: - status: - - success -- image: plugins/manifest - name: manifest-quay - settings: - auto_tag: true - ignore_missing: true - password: - from_secret: quay_password - spec: docker/manifest-quay.tmpl - username: - from_secret: quay_username - when: - status: - - success -- 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 - PUSHRM_TARGET: thegeeklab/${DRONE_REPO_NAME} - image: chko/docker-pushrm:1 - name: pushrm-dockerhub - when: - status: - - success -- environment: - APIKEY__QUAY_IO: - from_secret: quay_token - PUSHRM_FILE: README.md - PUSHRM_TARGET: quay.io/thegeeklab/${DRONE_REPO_NAME} - image: chko/docker-pushrm:1 - name: pushrm-quay - when: - status: - - success -- image: plugins/matrix - name: matrix - settings: - homeserver: - from_secret: matrix_homeserver - password: - 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: matrix_username - when: - status: - - success - - failure + - name: manifest-dockerhub + image: plugins/manifest + settings: + auto_tag: true + ignore_missing: true + password: + from_secret: docker_password + spec: docker/manifest.tmpl + username: + from_secret: docker_username + when: + status: + - success + + - name: manifest-quay + image: plugins/manifest + settings: + auto_tag: true + ignore_missing: true + password: + from_secret: quay_password + spec: docker/manifest-quay.tmpl + username: + from_secret: quay_username + 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 + 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: thegeeklab/drone-matrix + settings: + homeserver: + from_secret: matrix_homeserver + password: + 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: matrix_username + when: + status: + - success + - failure + +image_pull_secrets: + - docker_config + trigger: ref: - - refs/heads/main - - refs/tags/** + - refs/heads/main + - refs/tags/** status: - - success - - failure + - success + - failure + +depends_on: + - docs + --- kind: signature -hmac: 890ccacd8805efc2b185d83ee4e171999cdaa1ce9a779955406baa626ef0b69a +hmac: 8d31ff0573bc5356cca276031a5fac1244c6b801bddfaf74a739e7524a18594c ...