grafana/scripts/drone/utils/utils.star
Dan Cech 440d8a3d88
Build: Drone starlark file cleanup (#59919)
* format drone starlark files with black

* clean up unused params

* more simplification

* more cleanup

* more cleanup
2022-12-07 09:13:57 +02:00

113 lines
3.1 KiB
Plaintext

load(
'scripts/drone/steps/lib.star',
'download_grabpl_step',
'slack_step',
)
load(
'scripts/drone/vault.star',
'from_secret',
'pull_secret',
)
failure_template = 'Build {{build.number}} failed for commit: <https://github.com/{{repo.owner}}/{{repo.name}}/commit/{{build.commit}}|{{ truncate build.commit 8 }}>: {{build.link}}\nBranch: <https://github.com/{{ repo.owner }}/{{ repo.name }}/commits/{{ build.branch }}|{{ build.branch }}>\nAuthor: {{build.author}}'
drone_change_template = '`.drone.yml` and `starlark` files have been changed on the OSS repo, by: {{build.author}}. \nBranch: <https://github.com/{{ repo.owner }}/{{ repo.name }}/commits/{{ build.branch }}|{{ build.branch }}>\nCommit hash: <https://github.com/{{repo.owner}}/{{repo.name}}/commit/{{build.commit}}|{{ truncate build.commit 8 }}>'
def pipeline(
name,
edition,
trigger,
steps,
services=[],
platform='linux',
depends_on=[],
environment=None,
volumes=[],
):
if platform != 'windows':
platform_conf = {
'platform': {'os': 'linux', 'arch': 'amd64'},
# A shared cache is used on the host
# To avoid issues with parallel builds, we run this repo on single build agents
'node': {'type': 'no-parallel'},
}
else:
platform_conf = {
'platform': {
'os': 'windows',
'arch': 'amd64',
'version': '1809',
}
}
pipeline = {
'kind': 'pipeline',
'type': 'docker',
'name': name,
'trigger': trigger,
'services': services,
'steps': steps,
'clone': {
'retries': 3,
},
'volumes': [
{
'name': 'docker',
'host': {
'path': '/var/run/docker.sock',
},
}
],
'depends_on': depends_on,
'image_pull_secrets': [pull_secret],
}
if environment:
pipeline.update(
{
'environment': environment,
}
)
pipeline['volumes'].extend(volumes)
pipeline.update(platform_conf)
if edition in ('enterprise', 'enterprise2'):
# We have a custom clone step for enterprise
pipeline['clone'] = {
'disable': True,
}
return pipeline
def notify_pipeline(
name, slack_channel, trigger, depends_on=[], template=None, secret=None
):
trigger = dict(trigger)
return {
'kind': 'pipeline',
'type': 'docker',
'platform': {
'os': 'linux',
'arch': 'amd64',
},
'name': name,
'trigger': trigger,
'steps': [
slack_step(slack_channel, template, secret),
],
'clone': {
'retries': 3,
},
'depends_on': depends_on,
}
# TODO: this overrides any existing dependencies because we're following the existing logic
# it should append to any existing dependencies
def with_deps(steps, deps=[]):
for step in steps:
step['depends_on'] = deps
return steps