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.
352 lines
7.7 KiB
352 lines
7.7 KiB
local PipelineTest = { |
|
kind: 'pipeline', |
|
name: 'test', |
|
platform: { |
|
os: 'linux', |
|
arch: 'amd64', |
|
}, |
|
steps: [ |
|
{ |
|
name: 'deps', |
|
image: 'golang:1.18', |
|
commands: [ |
|
'make deps', |
|
], |
|
volumes: [ |
|
{ |
|
name: 'godeps', |
|
path: '/go', |
|
}, |
|
], |
|
}, |
|
{ |
|
name: 'lint', |
|
image: 'golang:1.18', |
|
commands: [ |
|
'make lint', |
|
], |
|
volumes: [ |
|
{ |
|
name: 'godeps', |
|
path: '/go', |
|
}, |
|
], |
|
}, |
|
{ |
|
name: 'test', |
|
image: 'golang:1.18', |
|
commands: [ |
|
'make test', |
|
], |
|
volumes: [ |
|
{ |
|
name: 'godeps', |
|
path: '/go', |
|
}, |
|
], |
|
}, |
|
], |
|
volumes: [ |
|
{ |
|
name: 'godeps', |
|
temp: {}, |
|
}, |
|
], |
|
trigger: { |
|
ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'], |
|
}, |
|
}; |
|
|
|
|
|
local PipelineBuildBinaries = { |
|
kind: 'pipeline', |
|
name: 'build-binaries', |
|
platform: { |
|
os: 'linux', |
|
arch: 'amd64', |
|
}, |
|
steps: [ |
|
{ |
|
name: 'build', |
|
image: 'techknowlogick/xgo:go-1.18.x', |
|
commands: [ |
|
'make release', |
|
], |
|
}, |
|
{ |
|
name: 'executable', |
|
image: 'alpine', |
|
commands: [ |
|
'$(find dist/ -executable -type f -iname ${DRONE_REPO_NAME}-linux-amd64) --help', |
|
], |
|
}, |
|
{ |
|
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: { |
|
overwrite: true, |
|
api_key: { |
|
from_secret: 'github_token', |
|
}, |
|
files: ['dist/*'], |
|
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: 'build', |
|
image: 'golang:1.18', |
|
commands: [ |
|
'make build', |
|
'ls -l dist/drone-github-comment', |
|
], |
|
}, |
|
{ |
|
name: 'dryrun', |
|
image: 'thegeeklab/drone-docker:19', |
|
settings: { |
|
dry_run: true, |
|
dockerfile: 'docker/Dockerfile.' + arch, |
|
repo: 'thegeeklab/${DRONE_REPO_NAME}', |
|
}, |
|
depends_on: ['build'], |
|
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/**'], |
|
}, |
|
depends_on: ['dryrun'], |
|
}, |
|
{ |
|
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: ['dryrun'], |
|
}, |
|
], |
|
depends_on: [ |
|
'test', |
|
], |
|
trigger: { |
|
ref: ['refs/heads/main', 'refs/tags/**', 'refs/pull/**'], |
|
}, |
|
}; |
|
|
|
local PipelineDocs = { |
|
kind: 'pipeline', |
|
name: 'docs', |
|
platform: { |
|
os: 'linux', |
|
arch: 'amd64', |
|
}, |
|
concurrency: { |
|
limit: 1, |
|
}, |
|
steps: [ |
|
{ |
|
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: { |
|
username: { from_secret: 'github_username' }, |
|
password: { from_secret: 'github_token' }, |
|
pages_directory: '_docs/', |
|
target_branch: 'docs', |
|
}, |
|
when: { |
|
ref: ['refs/heads/main'], |
|
}, |
|
}, |
|
], |
|
depends_on: [ |
|
'build-binaries', |
|
'build-container-amd64', |
|
'build-container-arm64', |
|
'build-container-arm', |
|
], |
|
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', |
|
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 add comments to GitHub Issues and Pull Requests', |
|
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' }, |
|
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: [ |
|
'docs', |
|
], |
|
trigger: { |
|
ref: ['refs/heads/main', 'refs/tags/**'], |
|
status: ['success', 'failure'], |
|
}, |
|
}; |
|
|
|
[ |
|
PipelineTest, |
|
PipelineBuildBinaries, |
|
PipelineBuildContainer(arch='amd64'), |
|
PipelineBuildContainer(arch='arm64'), |
|
PipelineBuildContainer(arch='arm'), |
|
PipelineDocs, |
|
PipelineNotifications, |
|
]
|
|
|