local PipelineTest = { kind: 'pipeline', name: 'test', platform: { os: 'linux', arch: 'amd64', }, steps: [ { name: 'lint', image: 'koalaman/shellcheck-alpine:stable', commands: [ 'shellcheck ./retry', ], }, { name: 'test', image: 'bats/bats', commands: [ 'bats ./retry.bats', ], }, ], trigger: { ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'], }, }; local PipelineBuildPackage = { kind: 'pipeline', name: 'build-package', platform: { os: 'linux', arch: 'amd64', }, steps: [ { name: 'checksum', image: 'alpine', commands: [ 'sha256sum retry > 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-github', image: 'plugins/github-release', settings: { overwrite: true, api_key: { from_secret: 'github_token' }, files: ['retry', 'sha256sum.txt'], title: '${DRONE_TAG}', note: 'CHANGELOG.md', }, when: { ref: ['refs/tags/**'], }, }, ], depends_on: [ 'test', ], trigger: { ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'], }, }; local PipelineBuildContainer(arch='amd64') = { kind: 'pipeline', name: 'build-container-' + arch, platform: { os: 'linux', arch: arch, }, steps: [ { name: 'dryrun', image: 'thegeeklab/drone-docker:19', settings: { dry_run: true, dockerfile: 'docker/Dockerfile.' + arch, repo: 'thegeeklab/${DRONE_REPO_NAME}', username: { from_secret: 'docker_username' }, password: { from_secret: 'docker_password' }, }, when: { ref: ['refs/pull/**'], }, }, { name: 'publish-dockerhub', image: 'thegeeklab/drone-docker:19', settings: { 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/main', 'refs/tags/**'], }, }, { name: 'publish-quay', image: 'thegeeklab/drone-docker:19', settings: { 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/main', 'refs/tags/**'], }, }, ], depends_on: [ 'test', ], trigger: { ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'], }, }; local PipelineNotifications = { kind: 'pipeline', 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', pull: 'always', image: 'chko/docker-pushrm:1', environment: { DOCKER_PASS: { from_secret: 'docker_password', }, DOCKER_USER: { from_secret: 'docker_username', }, PUSHRM_FILE: 'README.md', PUSHRM_SHORT: 'Poor-mans docker service synchronizer', PUSHRM_TARGET: 'thegeeklab/${DRONE_REPO_NAME}', }, when: { status: ['success'], }, }, { name: 'pushrm-quay', pull: 'always', 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' }, roomid: { from_secret: 'matrix_roomid' }, template: 'Status: **{{ build.Status }}**
Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.Link }}){{#if build.Branch}} ({{ build.Branch }}){{/if}} by {{ commit.Author }}
Message: {{ commit.Message.Title }}', username: { from_secret: 'matrix_username' }, password: { from_secret: 'matrix_password' }, }, when: { status: ['success', 'failure'], }, }, ], depends_on: [ 'build-container-amd64', 'build-container-arm', 'build-container-arm64', ], trigger: { ref: ['refs/heads/main', 'refs/tags/**'], status: ['success', 'failure'], }, }; [ PipelineTest, PipelineBuildPackage, PipelineBuildContainer(arch='amd64'), PipelineBuildContainer(arch='arm64'), PipelineBuildContainer(arch='arm'), PipelineNotifications, ]