mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Chore: Split release pipelines (#43419)
* Split release pipelines * Re-add pr and main pipelines
This commit is contained in:
parent
fc037e1798
commit
f60a2e8152
3344
.drone.yml
3344
.drone.yml
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,6 @@
|
||||
load(
|
||||
'scripts/drone/steps/lib.star',
|
||||
'disable_tests',
|
||||
'download_grabpl_step',
|
||||
'initialize_step',
|
||||
'lint_drone_step',
|
||||
@ -54,6 +55,7 @@ load(
|
||||
)
|
||||
load('scripts/drone/vault.star', 'from_secret', 'github_token', 'pull_secret', 'drone_token', 'prerelease_bucket')
|
||||
|
||||
|
||||
def build_npm_packages_step(edition, ver_mode):
|
||||
if edition == 'enterprise' or ver_mode != 'release':
|
||||
return None
|
||||
@ -121,16 +123,14 @@ def release_npm_packages_step(edition, ver_mode):
|
||||
|
||||
|
||||
def get_steps(edition, ver_mode):
|
||||
build_steps = []
|
||||
package_steps = []
|
||||
windows_package_steps = []
|
||||
publish_steps = []
|
||||
should_publish = ver_mode in ('release', 'test-release',)
|
||||
should_upload = should_publish or ver_mode in ('release-branch',)
|
||||
include_enterprise2 = edition == 'enterprise'
|
||||
edition2 = 'enterprise2'
|
||||
|
||||
build_steps = [
|
||||
test_steps = [
|
||||
codespell_step(),
|
||||
shellcheck_step(),
|
||||
lint_backend_step(edition=edition),
|
||||
@ -138,8 +138,9 @@ def get_steps(edition, ver_mode):
|
||||
test_backend_step(edition=edition),
|
||||
test_backend_integration_step(edition=edition),
|
||||
test_frontend_step(),
|
||||
postgres_integration_tests_step(edition=edition, ver_mode=ver_mode),
|
||||
mysql_integration_tests_step(edition=edition, ver_mode=ver_mode),
|
||||
]
|
||||
|
||||
build_steps = [
|
||||
build_backend_step(edition=edition, ver_mode=ver_mode),
|
||||
build_frontend_step(edition=edition, ver_mode=ver_mode),
|
||||
build_plugins_step(edition=edition, sign=True),
|
||||
@ -147,34 +148,46 @@ def get_steps(edition, ver_mode):
|
||||
ensure_cuetsified_step(),
|
||||
]
|
||||
|
||||
integration_test_steps = [
|
||||
postgres_integration_tests_step(edition=edition, ver_mode=ver_mode),
|
||||
mysql_integration_tests_step(edition=edition, ver_mode=ver_mode),
|
||||
]
|
||||
|
||||
|
||||
if include_enterprise2:
|
||||
build_steps.extend([
|
||||
test_steps.extend([
|
||||
lint_backend_step(edition=edition2),
|
||||
test_backend_step(edition=edition2),
|
||||
test_backend_integration_step(edition=edition2),
|
||||
])
|
||||
build_steps.extend([
|
||||
build_backend_step(edition=edition2, ver_mode=ver_mode, variants=['linux-x64']),
|
||||
])
|
||||
|
||||
# Insert remaining steps
|
||||
build_steps.extend([
|
||||
package_step(edition=edition, ver_mode=ver_mode, include_enterprise2=include_enterprise2),
|
||||
e2e_tests_server_step(edition=edition),
|
||||
e2e_tests_step('dashboards-suite', edition=edition, tries=3),
|
||||
e2e_tests_step('smoke-tests-suite', edition=edition, tries=3),
|
||||
e2e_tests_step('panels-suite', edition=edition, tries=3),
|
||||
e2e_tests_step('various-suite', edition=edition, tries=3),
|
||||
e2e_tests_artifacts(edition=edition),
|
||||
copy_packages_for_docker_step(),
|
||||
package_docker_images_step(edition=edition, ver_mode=ver_mode, publish=should_publish),
|
||||
package_docker_images_step(edition=edition, ver_mode=ver_mode, ubuntu=True, publish=should_publish),
|
||||
e2e_tests_server_step(edition=edition),
|
||||
])
|
||||
|
||||
if not disable_tests:
|
||||
build_steps.extend([
|
||||
e2e_tests_step('dashboards-suite', edition=edition, tries=3),
|
||||
e2e_tests_step('smoke-tests-suite', edition=edition, tries=3),
|
||||
e2e_tests_step('panels-suite', edition=edition, tries=3),
|
||||
e2e_tests_step('various-suite', edition=edition, tries=3),
|
||||
e2e_tests_artifacts(edition=edition),
|
||||
])
|
||||
|
||||
build_storybook = build_storybook_step(edition=edition, ver_mode=ver_mode)
|
||||
if build_storybook:
|
||||
build_steps.append(build_storybook)
|
||||
|
||||
if include_enterprise2:
|
||||
build_steps.extend([redis_integration_tests_step(edition=edition2, ver_mode=ver_mode), memcached_integration_tests_step(edition=edition2, ver_mode=ver_mode)])
|
||||
integration_test_steps.extend([redis_integration_tests_step(edition=edition2, ver_mode=ver_mode), memcached_integration_tests_step(edition=edition2, ver_mode=ver_mode)])
|
||||
|
||||
if should_upload:
|
||||
publish_steps.append(upload_cdn_step(edition=edition, ver_mode=ver_mode))
|
||||
@ -200,45 +213,102 @@ def get_steps(edition, ver_mode):
|
||||
if step:
|
||||
publish_steps.append(step)
|
||||
|
||||
return build_steps, package_steps, windows_package_steps, publish_steps
|
||||
return test_steps, build_steps, integration_test_steps, package_steps, windows_package_steps, publish_steps
|
||||
|
||||
def get_oss_pipelines(trigger, ver_mode):
|
||||
edition = 'oss'
|
||||
services = integration_test_services(edition=edition)
|
||||
volumes = integration_test_services_volumes()
|
||||
build_steps, package_steps, windows_package_steps, publish_steps = get_steps(edition=edition, ver_mode=ver_mode)
|
||||
return [
|
||||
test_steps, build_steps, integration_test_steps, package_steps, windows_package_steps, publish_steps = get_steps(edition=edition, ver_mode=ver_mode)
|
||||
windows_pipeline = pipeline(
|
||||
name='oss-windows-{}'.format(ver_mode), edition=edition, trigger=trigger,
|
||||
steps=initialize_step(edition, platform='windows', ver_mode=ver_mode) + windows_package_steps,
|
||||
platform='windows', depends_on=[
|
||||
'oss-build{}-publish-{}'.format(get_e2e_suffix(), ver_mode),
|
||||
],
|
||||
)
|
||||
pipelines = [
|
||||
pipeline(
|
||||
name='oss-build-{}'.format(ver_mode), edition=edition, trigger=trigger, services=services,
|
||||
name='oss-build-publish{}-{}'.format(get_e2e_suffix(), ver_mode), edition=edition, trigger=trigger, services=[],
|
||||
steps=[download_grabpl_step()] + initialize_step(edition, platform='linux', ver_mode=ver_mode) +
|
||||
build_steps + package_steps + publish_steps,
|
||||
build_steps + package_steps + publish_steps,
|
||||
volumes=volumes,
|
||||
),
|
||||
pipeline(
|
||||
name='oss-windows-{}'.format(ver_mode), edition=edition, trigger=trigger,
|
||||
steps=initialize_step(edition, platform='windows', ver_mode=ver_mode) + windows_package_steps,
|
||||
platform='windows', depends_on=['oss-build-{}'.format(ver_mode)],
|
||||
),
|
||||
]
|
||||
if not disable_tests:
|
||||
pipelines.extend([
|
||||
pipeline(
|
||||
name='oss-test-{}'.format(ver_mode), edition=edition, trigger=trigger, services=[],
|
||||
steps=[download_grabpl_step()] + initialize_step(edition, platform='linux', ver_mode=ver_mode) +
|
||||
test_steps,
|
||||
volumes=[],
|
||||
),
|
||||
pipeline(
|
||||
name='oss-integration-tests-{}'.format(ver_mode), edition=edition, trigger=trigger, services=services,
|
||||
steps=[download_grabpl_step()] + initialize_step(edition, platform='linux', ver_mode=ver_mode) +
|
||||
integration_test_steps,
|
||||
volumes=volumes,
|
||||
)
|
||||
])
|
||||
deps = {
|
||||
'depends_on': [
|
||||
'oss-build-publish{}-{}'.format(get_e2e_suffix(), ver_mode),
|
||||
'oss-test-{}'.format(ver_mode),
|
||||
'oss-integration-tests-{}'.format(ver_mode)
|
||||
]
|
||||
}
|
||||
windows_pipeline.update(deps)
|
||||
|
||||
pipelines.extend([windows_pipeline])
|
||||
return pipelines
|
||||
|
||||
def get_enterprise_pipelines(trigger, ver_mode):
|
||||
edition = 'enterprise'
|
||||
services = integration_test_services(edition=edition)
|
||||
volumes = integration_test_services_volumes()
|
||||
build_steps, package_steps, windows_package_steps, publish_steps = get_steps(edition=edition, ver_mode=ver_mode)
|
||||
return [
|
||||
test_steps, build_steps, integration_test_steps, package_steps, windows_package_steps, publish_steps = get_steps(edition=edition, ver_mode=ver_mode)
|
||||
windows_pipeline = pipeline(
|
||||
name='enterprise-windows-{}'.format(ver_mode), edition=edition, trigger=trigger,
|
||||
steps=initialize_step(edition, platform='windows', ver_mode=ver_mode) + windows_package_steps,
|
||||
platform='windows', depends_on=[
|
||||
'enterprise-build{}-publish-{}'.format(get_e2e_suffix(), ver_mode),
|
||||
],
|
||||
)
|
||||
pipelines = [
|
||||
pipeline(
|
||||
name='enterprise-build-{}'.format(ver_mode), edition=edition, trigger=trigger, services=services,
|
||||
name='enterprise-build{}-publish-{}'.format(get_e2e_suffix(), ver_mode), edition=edition, trigger=trigger, services=[],
|
||||
steps=[download_grabpl_step()] + initialize_step(edition, platform='linux', ver_mode=ver_mode) +
|
||||
build_steps + package_steps + publish_steps,
|
||||
build_steps + package_steps + publish_steps,
|
||||
volumes=volumes,
|
||||
),
|
||||
pipeline(
|
||||
name='enterprise-windows-{}'.format(ver_mode), edition=edition, trigger=trigger,
|
||||
steps=initialize_step(edition, platform='windows', ver_mode=ver_mode) + windows_package_steps,
|
||||
platform='windows', depends_on=['enterprise-build-{}'.format(ver_mode)],
|
||||
),
|
||||
]
|
||||
if not disable_tests:
|
||||
pipelines.extend([
|
||||
pipeline(
|
||||
name='enterprise-test-{}'.format(ver_mode), edition=edition, trigger=trigger, services=[],
|
||||
steps=[download_grabpl_step()] + initialize_step(edition, platform='linux', ver_mode=ver_mode) +
|
||||
test_steps,
|
||||
volumes=[],
|
||||
),
|
||||
pipeline(
|
||||
name='enterprise-integration-tests-{}'.format(ver_mode), edition=edition, trigger=trigger, services=services,
|
||||
steps=[download_grabpl_step()] + initialize_step(edition, platform='linux', ver_mode=ver_mode) +
|
||||
integration_test_steps,
|
||||
volumes=volumes,
|
||||
),
|
||||
])
|
||||
deps = {
|
||||
'depends_on': [
|
||||
'enterprise-build{}-publish-{}'.format(get_e2e_suffix(), ver_mode),
|
||||
'enterprise-test-{}'.format(ver_mode),
|
||||
'enterprise-integration-tests-{}'.format(ver_mode)
|
||||
]
|
||||
}
|
||||
windows_pipeline.update(deps)
|
||||
|
||||
pipelines.extend([windows_pipeline])
|
||||
|
||||
return pipelines
|
||||
|
||||
def release_pipelines(ver_mode='release', trigger=None):
|
||||
# 'enterprise' edition services contain both OSS and enterprise services
|
||||
@ -310,3 +380,8 @@ def test_release_pipelines():
|
||||
))
|
||||
|
||||
return pipelines
|
||||
|
||||
def get_e2e_suffix():
|
||||
if not disable_tests:
|
||||
return '-e2e'
|
||||
return ''
|
||||
|
@ -11,6 +11,7 @@ windows_image = 'mcr.microsoft.com/windows:1809'
|
||||
wix_image = 'grafana/ci-wix:0.1.1'
|
||||
test_release_ver = 'v7.3.0-test'
|
||||
|
||||
disable_tests = False
|
||||
|
||||
def slack_step(channel, template, secret):
|
||||
return {
|
||||
@ -277,13 +278,7 @@ def store_storybook_step(edition, ver_mode):
|
||||
return {
|
||||
'name': 'store-storybook',
|
||||
'image': publish_image,
|
||||
'depends_on': [
|
||||
'build-storybook',
|
||||
'end-to-end-tests-dashboards-suite',
|
||||
'end-to-end-tests-panels-suite',
|
||||
'end-to-end-tests-smoke-tests-suite',
|
||||
'end-to-end-tests-various-suite',
|
||||
],
|
||||
'depends_on': ['build-storybook',] + end_to_end_tests_deps(edition),
|
||||
'environment': {
|
||||
'GCP_KEY': from_secret('gcp_key'),
|
||||
'PRERELEASE_BUCKET': from_secret(prerelease_bucket)
|
||||
@ -624,7 +619,6 @@ def package_step(edition, ver_mode, include_enterprise2=False, variants=None, is
|
||||
sfx = '-enterprise2'
|
||||
deps.extend([
|
||||
'build-backend' + sfx,
|
||||
'test-backend' + sfx,
|
||||
])
|
||||
|
||||
variants_str = ''
|
||||
@ -916,12 +910,7 @@ def release_canary_npm_packages_step(edition):
|
||||
return {
|
||||
'name': 'release-canary-npm-packages',
|
||||
'image': build_image,
|
||||
'depends_on': [
|
||||
'end-to-end-tests-dashboards-suite',
|
||||
'end-to-end-tests-panels-suite',
|
||||
'end-to-end-tests-smoke-tests-suite',
|
||||
'end-to-end-tests-various-suite',
|
||||
],
|
||||
'depends_on': end_to_end_tests_deps(edition),
|
||||
'environment': {
|
||||
'NPM_TOKEN': from_secret('npm_token'),
|
||||
},
|
||||
@ -953,21 +942,12 @@ def upload_packages_step(edition, ver_mode, is_downstream=False):
|
||||
cmd = './bin/grabpl upload-packages --edition {} --packages-bucket grafana-downloads'.format(edition)
|
||||
|
||||
deps = []
|
||||
if edition in 'enterprise2':
|
||||
if edition in 'enterprise2' or not end_to_end_tests_deps(edition):
|
||||
deps.extend([
|
||||
'package' + enterprise2_suffix(edition),
|
||||
])
|
||||
else:
|
||||
deps.extend([
|
||||
'end-to-end-tests-dashboards-suite' + enterprise2_suffix(edition),
|
||||
'end-to-end-tests-panels-suite' + enterprise2_suffix(edition),
|
||||
'end-to-end-tests-smoke-tests-suite' + enterprise2_suffix(edition),
|
||||
'end-to-end-tests-various-suite' + enterprise2_suffix(edition),
|
||||
])
|
||||
|
||||
if edition in ('enterprise', 'enterprise2'):
|
||||
deps.append('redis-integration-tests')
|
||||
deps.append('memcached-integration-tests')
|
||||
deps.extend(end_to_end_tests_deps(edition))
|
||||
|
||||
return {
|
||||
'name': 'upload-packages' + enterprise2_suffix(edition),
|
||||
@ -1186,3 +1166,13 @@ def ensure_cuetsified_step():
|
||||
'git stash pop',
|
||||
],
|
||||
}
|
||||
|
||||
def end_to_end_tests_deps(edition):
|
||||
if disable_tests:
|
||||
return []
|
||||
return [
|
||||
'end-to-end-tests-dashboards-suite' + enterprise2_suffix(edition),
|
||||
'end-to-end-tests-panels-suite' + enterprise2_suffix(edition),
|
||||
'end-to-end-tests-smoke-tests-suite' + enterprise2_suffix(edition),
|
||||
'end-to-end-tests-various-suite' + enterprise2_suffix(edition),
|
||||
]
|
||||
|
Loading…
Reference in New Issue
Block a user