You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
195 lines
4.9 KiB
195 lines
4.9 KiB
local PipelineTest = { |
|
kind: 'pipeline', |
|
name: 'test', |
|
platform: { |
|
os: 'linux', |
|
arch: 'amd64', |
|
}, |
|
steps: [ |
|
{ |
|
name: 'markdownlint', |
|
image: 'thegeeklab/markdownlint-cli', |
|
commands: [ |
|
"markdownlint 'README.md'", |
|
], |
|
}, |
|
], |
|
trigger: { |
|
ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'], |
|
}, |
|
}; |
|
|
|
local PipelineBuildContainer(arch='amd64') = { |
|
kind: 'pipeline', |
|
name: 'build-container-' + std.split(arch, '_')[0], |
|
platform: { |
|
os: 'linux', |
|
arch: 'amd64', |
|
}, |
|
steps: [ |
|
{ |
|
name: 'tags', |
|
image: 'thegeeklab/docker-autotag', |
|
environment: { |
|
DOCKER_AUTOTAG_FORCE_LATEST: 'True', |
|
DOCKER_AUTOTAG_IGNORE_PRERELEASE: 'True', |
|
DOCKER_AUTOTAG_OUTPUT_FILE: '.tags', |
|
DOCKER_AUTOTAG_VERSION: '${DRONE_TAG}', |
|
DOCKER_AUTOTAG_SUFFIX: std.split(arch, '_')[0], |
|
}, |
|
}, |
|
{ |
|
name: 'dryrun', |
|
image: 'thegeeklab/drone-docker-buildx:20', |
|
settings: { |
|
dry_run: true, |
|
dockerfile: 'Dockerfile.' + std.split(arch, '_')[0], |
|
platforms: [ |
|
'linux/' + std.strReplace(arch, '_', '/'), |
|
], |
|
repo: 'thegeeklab/${DRONE_REPO_NAME}', |
|
}, |
|
depends_on: ['tags'], |
|
when: { |
|
ref: ['refs/pull/**'], |
|
}, |
|
}, |
|
{ |
|
name: 'publish-dockerhub', |
|
image: 'thegeeklab/drone-docker-buildx:20', |
|
settings: { |
|
dockerfile: 'Dockerfile.' + std.split(arch, '_')[0], |
|
repo: 'thegeeklab/${DRONE_REPO_NAME}', |
|
username: { from_secret: 'docker_username' }, |
|
password: { from_secret: 'docker_password' }, |
|
}, |
|
when: { |
|
ref: ['refs/heads/main', 'refs/tags/**'], |
|
}, |
|
depends_on: ['tags'], |
|
}, |
|
{ |
|
name: 'publish-quay', |
|
image: 'thegeeklab/drone-docker-buildx:20', |
|
settings: { |
|
dockerfile: 'Dockerfile.' + std.split(arch, '_')[0], |
|
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: ['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, |
|
username: { from_secret: 'docker_username' }, |
|
password: { from_secret: 'docker_password' }, |
|
spec: 'manifest.tmpl', |
|
}, |
|
when: { |
|
status: ['success'], |
|
}, |
|
}, |
|
{ |
|
image: 'plugins/manifest', |
|
name: 'manifest-quay', |
|
settings: { |
|
ignore_missing: true, |
|
username: { from_secret: 'quay_username' }, |
|
password: { from_secret: 'quay_password' }, |
|
spec: '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: 'Custom image for nginx HTTP server', |
|
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 }}**<br/> Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.Link }}){{#if build.Branch}} ({{ build.Branch }}){{/if}} by {{ commit.Author }}<br/> 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-arm64', |
|
'build-container-arm', |
|
], |
|
trigger: { |
|
ref: ['refs/heads/main', 'refs/tags/**'], |
|
status: ['success', 'failure'], |
|
}, |
|
}; |
|
|
|
[ |
|
PipelineTest, |
|
PipelineBuildContainer(arch='amd64'), |
|
PipelineBuildContainer(arch='arm64_v8'), |
|
PipelineBuildContainer(arch='arm_v7'), |
|
PipelineNotifications, |
|
]
|
|
|